GitHubを活用してインナーソースを始めよう
続いて後半は田中氏により、GitHubを活用したインナーソースの実践方法について紹介された。インナーソースを始めようと考えたときに浮かび上がる4つの疑問に応える形で話を進めていく。
1. どのプロジェクトをインナーソース化するか?
いきなり全リポジトリを対象に「お互いコントリビュートし合いましょう!」と言っても、そう簡単にはうまくはいかない。多くのエンジニアにとって、自分がやるべきことは担当しているプロジェクトのコードを書くことであるという認識があるからだ。
オープンソースの世界でも、自分が使ったこともないものにコントリビュートすることはないはず。自分がユーザーとして使っているうちに、バグを見つけたり、機能要望が生まれたりして、コードが見えているから自分で実装してみるという流れでコントリビューターになっていく。
この発想を転換すれば、どのプロジェクトをインナーソース化すれば良いかはおのずと見えてくる。「プラットフォーム、ライブラリ、SDKなど」「ビルド、CI基盤等の開発ツール」「全社的なFAQ」「社内規約等のドキュメント」といった“社内の既存プロジェクトで広く使われているもの”を取り上げるべきだ。
2. プロジェクトをどう見つけてもらうか?
次に、インナーソースに取り組んでいるプロジェクトを見つけてもらいやすくする必要がある。発見できる環境を作るのだ。
最低限やるべきこととして、社内の全開発者に対してリポジトリのアクセス権を付与する必要がある。その際、GitHub Enterpriseの「Internalリポジトリ」の機能を使えば、社内のメンバーなら誰でも見られるリポジトリを簡単に作ることができる。
さらに、インナーソース プロジェクトを一覧化したポータルサイトを社内向けに作るというのも、よくある手だ。GitHubのAPIでインナーソース対象のリポジトリの情報を取得して表示することで、それぞれの活動状況が一目でわかるようになる。「Project Portal for InnerSource」や「enterprise-showcase」といったOSSとして開発されているポータルサイト実装を利用することで、GitHub Pagesでポータルサイトをホストできるようになる。これらのツールでは表示するリポジトリの情報はJSONファイとして指定するようになっており、更新はActionsで定期的に更新すれば良い。
今年1月にリリースされた「Private GitHub Pages」と「Internalリポジトリ」を使えば、社内ポータルサイトをホストする環境がない企業でも、GitHubだけでインナーソース ポータルサイトを手軽に構築することが可能だ。(GitHubが構築した社内向けポータルサイトのサンプルコードはこちら)
3. どうやってコントリビュートしてもらうか?
各社の文化的な話はさておき、一般的にコントリビューターを増やすには、初めてコントリビュートする人の不安を取り除くことが大切だ。そのために「README.md」と「CONTRIBUTING.md」をきちんと用意しておく必要がある。
まず「README.md」には、「チーム外からのコントリビュートを歓迎していること」「どんな種類のコントリビュートを受け付けているのか」「コントリビュートの具体的な手順」を概要として記載する。そして「CONTRIBUTING.md」には、「バグの報告の仕方」「機能要望の報告の仕方」「プルリクエストの作り方」「プルリクエストのマージ条件」「レビュープロセス」など、より詳細な事項を記載しておく。
あわせて、登録するイシューやプルリクエストの種類ごとに必要な情報の項目をテンプレートにしておくことや、「CODEOWNERS」という機能を使ってファイルの種類やパスごとにレビュー担当者を自動設定しておくこと、マージされる条件を明確にしておくことも大切だ。その際、リポジトリの基準をそろえるために「REPO LINTER」のようなリポジトリのステータスをチェックしてくれるツールを活用するのも有効である。
4. うまくいっているかをどう測る?
インナーソースの取り組みがうまくいっているかどうかを測定するメトリクスはさまざまあるが、今回はGitHubからアクティビティの情報を取得してダッシュボード化する「Grimoire Lab」と、組織間をまたいだコントリビュートが行われているかを可視化する「hubble」の2つのオープンソースのツールが紹介された。
最後に、田中氏は「インナーソースは文化。文化を変えるのはとても大変だし、ツールの導入だけで文化は変えられない。しかし、ツールの導入をきっかけに新たな取り組みを始めることで、一部であれ人の行動変容は必ず起こる。それが文化を変えるきっかけとなれば、とても嬉しい」と語り、「みなさん楽しく社内でコントリビュートし合う文化を築いてほしい」とメッセージを残した。