SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

【デブサミ2021】セッションレポート(AD)

MicrosoftがGitHubで実践するインナーソースの取り組みとは?【デブサミ2021】

【18-E-2】オープンソースのベストプラクティスを企業内で実践 ~インナーソースのすすめ

  • このエントリーをはてなブックマークに追加

GitHubを活用してインナーソースを始めよう

 続いて後半は田中氏により、GitHubを活用したインナーソースの実践方法について紹介された。インナーソースを始めようと考えたときに浮かび上がる4つの疑問に応える形で話を進めていく。

1. どのプロジェクトをインナーソース化するか?

 いきなり全リポジトリを対象に「お互いコントリビュートし合いましょう!」と言っても、そう簡単にはうまくはいかない。多くのエンジニアにとって、自分がやるべきことは担当しているプロジェクトのコードを書くことであるという認識があるからだ。

 オープンソースの世界でも、自分が使ったこともないものにコントリビュートすることはないはず。自分がユーザーとして使っているうちに、バグを見つけたり、機能要望が生まれたりして、コードが見えているから自分で実装してみるという流れでコントリビューターになっていく。

 この発想を転換すれば、どのプロジェクトをインナーソース化すれば良いかはおのずと見えてくる。「プラットフォーム、ライブラリ、SDKなど」「ビルド、CI基盤等の開発ツール」「全社的なFAQ」「社内規約等のドキュメント」といった“社内の既存プロジェクトで広く使われているもの”を取り上げるべきだ。

2. プロジェクトをどう見つけてもらうか?

 次に、インナーソースに取り組んでいるプロジェクトを見つけてもらいやすくする必要がある。発見できる環境を作るのだ。

 最低限やるべきこととして、社内の全開発者に対してリポジトリのアクセス権を付与する必要がある。その際、GitHub Enterpriseの「Internalリポジトリ」の機能を使えば、社内のメンバーなら誰でも見られるリポジトリを簡単に作ることができる。

GitHubのリポジトリは「Public」「Internal」「Private」の3種ある
GitHubのリポジトリは「Public」「Internal」「Private」の3種ある

 さらに、インナーソース プロジェクトを一覧化したポータルサイトを社内向けに作るというのも、よくある手だ。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つのオープンソースのツールが紹介された。

 最後に、田中氏は「インナーソースは文化。文化を変えるのはとても大変だし、ツールの導入だけで文化は変えられない。しかし、ツールの導入をきっかけに新たな取り組みを始めることで、一部であれ人の行動変容は必ず起こる。それが文化を変えるきっかけとなれば、とても嬉しい」と語り、「みなさん楽しく社内でコントリビュートし合う文化を築いてほしい」とメッセージを残した。

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
【デブサミ2021】セッションレポート連載記事一覧

もっと読む

この記事の著者

CodeZine編集部(コードジンヘンシュウブ)

CodeZineは、株式会社翔泳社が運営するソフトウェア開発者向けのWebメディアです。「デベロッパーの成長と課題解決に貢献するメディア」をコンセプトに、現場で役立つ最新情報を日々お届けします。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/13685 2021/03/04 12:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング