「社内向けのインナーソースガイドラインってどう作るんだろう…」
「インナーソースポータル(カタログ)をどう構築しよう…」
「ボトムアップでインナーソースの土台作りをどう進めればいいんだろう…」
✔記事の内容
こんにちは!社内でインナーソース普及活動もやっている小松です!
今回は実際に社内のメンバーがインナーソースに取り組むための土台作りになる、ガイドラインやインナーソースポータルのご紹介をしたいと思います!
これまでの記事
前回の記事は、ニフティでインナーソースお試し導入をしてみた様子と、エンジニアのアンケート結果を公開しました。
アンケート結果からインナーソースの導入に反対する人が0%ということがわかり、社内展開に向けて動き始めました。
ちなみに、この記事をきっかけに、InnerSource Commonsのイベントに事例紹介として登壇させていただきました!
質疑応答でディープな質問にも答えてもらったので、ご興味のある方は以下の記事をご覧ください!
今回は社内展開に向けたガイドライン作成、インナーソースポータルの構築、商用システムリポジトリをインナーソースにしてみるなど、土台作りの部分を共有します。
社内向けインナーソースガイドラインを作成
実際にインナーソース活動をやってもらうためにも、ガイドラインがないと何から手を付ければいいかわからずハードルが上がってしまいます。
ただリポジトリを公開するだけでは、コントリビュートの仕方がよくわからず、コントリビューターの負荷も増え、ホストチームもコミュニケーションコストが発生するので、CONTIBUTING.mdの書き方や、品質のためにも、テスト、lint環境を整備してもらうなど、手順を書きました。
ガイドラインの一部をご紹介しようと思います。
現時点での目次は以下です。
ニフティのインナーソースガイドラインの目次
- 1.インナーソースとは
- 概要
- このガイドラインは何か?
- 2.役職と責任範囲
- ホスト
- ゲスト
- 3.社内のインナーソース情報を得るには
- 4.コントリビューターとして参加するには
- 5.担当しているリポジトリをインナーソースにするには
- 6.質問・相談
- 7.さらにインナーソースの理解を深めるには
「1. インナーソースとは」「2. 役職と責任範囲」については、インナーソースの一般的な説明になるので割愛します。
「3.社内のインナーソース情報を得るには」の内容
ここは以下のリンク集になっています。
- ドキュメント
- Slackチャンネル
- インナーソースポータル
- FAQ
- 活動評価
「4.コントリビューターとして参加するには」 の内容
こちらはせっかく興味を持ってくれた方が、なるべく途中離脱しないように以下のような詳細なステップを書いています。
- インナーソースポータルの紹介
- CONTRIBUTING.mdの紹介
- 上長に許可をもらう
- 評価時に他社貢献、スキルアップのアピールとなるためにも
- 非同期でのコミュニケーションとなるため、コメントを詳細に残す
- 仕事表の付け方
細かいルールは各リポジトリごとCONTIBUTING.mdに従ってもらいます。
「5.担当しているリポジトリをインナーソースにするには」の内容
こちらも詳細な手順を書きました。
以下のような流れになっています。
- プロダクトオーナーにリポジトリをインナーソースにする旨を共有
- InnerSourceCommonsが公開しているラーニングパスに出てくるプロダクトオーナーは、技術の前提知識があるように読み取れます。
ニフティでは、ビジネス職の方がプロダクトオーナーになっている場合が多いです。
そのためトラステッドコミッターにインナーソースにおけるプロダクトオーナーの役割と権限を委任してもらう形にしています。
- InnerSourceCommonsが公開しているラーニングパスに出てくるプロダクトオーナーは、技術の前提知識があるように読み取れます。
- トラステッドコミッターを決める
- リポジトリの設定
- インナーソースポータルに追加するクローラーに拾ってもらうようにDescriptionのTopicsに
inner-source
を追加。 - 現在は社内事情により、Forkでなく権限を付与してコントリビュートしてもらうので、権限の設定等。
- ブランチ保護ルールなどは各リポジトリに任せます。
- インナーソースポータルに追加するクローラーに拾ってもらうようにDescriptionのTopicsに
- テスト・lintなどローカル開発環境の準備
- 違う開発文化を持った人も関わることがあるので、品質の観点からテストとlintは導入してもらうことにしています。
- README.mdを用意
- README.mdについては、InnerSourcePatternsが紹介しているテンプレートがあったので、そちらを参考に作った例を載せています。
- コントリビュートについては、別途CONTIBUTING.mdを参照するように書いています。
- CONTRIBUTING.mdを用意
- コントリビューションするための詳細な手順を書きます。
- CONTRIBUTING.mdについても、InnerSourcePatternsが紹介しているテンプレートがあったので、そちらを参考に作った例を載せています。
- 異なる開発文化の人でも理解ができるようにしておきます。
- 詳細にしておくことで、コミュニケーションコストも減らせます。
例えば、ブランチ名、コミットメッセージなどのフォーマットを決めておいたり、テスト実行方法など説明しておきます。
- Slackなどで宣伝
「6.質問・相談」の内容
NotionにFAQのデータベースを公開しているので、リンクを張っています。
誰でも編集できるようになっています。
またインナーソースのSlackチャンネルに気軽に問い合わせもらうようにしています。
ハードルが低いおかげか、Slackチャンネルでの質問が多いです。
「7.さらにインナーソースの理解を深めるには」の内容
インナーソースの学習に使えそうなリンク集です。
- InnerSource Commons JapanのYouTubeチャンネル
- 日本向けのチャンネルなので、最初はここを見てみるのがいいかもしれません。
- InnerSource Commonsが公開しているラーニングパス
- 一番最初に読むには難しいかもしれません。
- InnerSource CommonsのSlackチャンネル
- 日本チャンネルもあるので、
#jp_general
に気軽に入ってみてください。
- 日本チャンネルもあるので、
- InnerSource Commons Japanのconnpass
- InnerSource Commons Japanのイベントに参加してみたい方向け。
- 堅苦しくない雰囲気なので、まずは気になるイベントを参加してみるのをおすすめです!
インナーソースポータルを構築
社内のインナーソースになっているリポジトリを探すためのツールです。
インナーソースパターンブックでも紹介されています。
参考実装のリポジトリが公開されているので、まずは利用させてもらいました。
ニフティでは、社内リポジトリはGitHubの1つのOrganizationで管理しているため、実装はほぼそのまま社内サーバーに構築しました。
インナーソースリポジトリを自動で拾ってくれるクローラーは、zkoppert/innersource-crawlerのリポジトリを使わせてもらいました。
リポジトリのTopicsにinner-souce
を追加すると、インナーソースポータルに追加してくれます。
後ほどインナーソースポータル自体もインナーソースにしてみました。
すると、新人が学習の一貫として、Next.jsに移行するコントリビュートをしてくれました!
さらに他のメンバーも加わり、私がなかなか時間を取れず進められなかった、インフラ周りの整備、社内ドメイン取得など、エンジニア同士がコンラボレーションしながら、進めてくれました。
まさにインナーソースの良さを感じました!
エンジニア全体会で、インナーソースガイドラインを公開!
ニフティでは、月に1回エンジニアが全員参加する全体会があります。
社内のトピックを共有したり、最後には謎解きコーナーがあったり!?する会なのですが、LTさせてもらえる時間があるので、そこでインナーソースガイドラインの公開も兼ねて発表しました。
発表内容は、インナーソース実験の結果、アンケート結果、インナーソースガイドラインの紹介でした。
インナーソース実験の結果とアンケート結果はその①のブログ記事で公開しています。
エンジニアからの反応はポジティブなものが多く、
「実際に〇〇リポジトリをインナーソースにしてほしい!」
「担当業務以外の環境に触れる貴重な機会」などコメントをもらいました。
実際にこのLTをきっかけに、新人が作っていた便利ツールをインナーソースにしてもらいました。
インナーソースの文化を作っていくにあたり、比較的時間に余裕がある若い世代にどんどん実践してもらい、徐々に広めていくのは効果的だなと思いました。
次の記事に続く…
続きはその③の記事で公開予定です。
いろいろネタは溜まってきているので、随時公開していきたいです。
「インナーソースオフィス立ち上げ」
「インナーソース導入後の効果」
「エンジニアでなくてもインナーソース!?」
「InnerSource Commons Japanとのつながり」
「成熟度モデル導入はまだ難しかった」
「社内の創意工夫賞金賞受賞!?」
「商用システムリポジトリをインナーソース」
【告知】InnerSource Gathering Tokyo 2024 に登壇します!
InnerSource Gathering Tokyo 2024 にニフティの事例紹介として登壇します!
日本初となるインナーソースカンファレンスです!
またニフティからはイベント運営自体にも数人協力しています!
興味のある方は、イベント参加は以下のからお願いします!
https://innersourcecommons.connpass.com/event/317995/