Upgrade to Pro — share decks privately, control downloads, hide ads and more …

オープンソースのベストプラクティスを企業内で実践/How to implement InnerSource

Yuichi Tanaka
February 18, 2021
11k

オープンソースのベストプラクティスを企業内で実践/How to implement InnerSource

Developers Summit 2021の「オープンソースのベストプラクティスを企業内で実践 ~インナーソースのすすめ」というセッションの発表資料です。
https://event.shoeisha.jp/devsumi/20210218/session/3044/

Yuichi Tanaka

February 18, 2021
Tweet

Transcript

  1. Developers Summit 2021 • Microsoft における InnerSource – Open Source

    プラクティスの社内実装 • GitHubを使ってどのようにInnerSourceを実践するか Agenda
  2. InnerSource is ... “Applying the concepts and lessons of successful

    open source ecosystems to how a company develops software internally” “成功したオープンソース・エコシステムのコンセプトと学びを、 企業が社内でソフトウェアを開発する⽅法に適⽤する" GitHub innersourcecommons.org
  3. Mission Our mission is to enable the world's best engineering

    teams with world-class tools and systems that help them ship products their customer love. 私たちの使命は、世界最⾼のエンジニアリングチームが顧客に愛される製品を出荷するための ワールドクラスのツールとシステムを利⽤できるようにすることです。 #開発基盤の整備 #開発者のサポート #GitHub 推進 #社内StackOverflowの整備 #OpenSourceの促進 #Inclusiveデザインの適⽤(アクセシビリティ) #プラクティスの社内共有 #インナーソースの適⽤
  4. コントリビューションの可視化 • 63,000 Pull Request • 3,000 Repository • 11,000

    Contributor • 35,000 Reviewer *FY18時点 コラボレーションの増加 オープンソースコミュニティと同じプロセス とプラクティスを使⽤して、組織内でチーム が共同作業します サイロを壊す チーム間でのコラボレーションの簡素化、知 識の共有、コードの再利⽤の改善、安全な ワークフロー 開発者の満⾜度向上 インナーソースとオープンソースのプラクティ スを活⽤することで、開発者の満⾜度が⾼まり、 興味のあるプロジェクトに取り組み、スキルを 向上させることができます
  5. InnerSource をドライブするということは GitHub • コラボレーションを妨げたり、 遅らせたりする障壁を取り除く/減らす • オープン/協⼒的な⾏動を奨励する • 客観的な尺度で現状を評価し、伝える

    • ステータスと進捗状況を測定するための データを提供する • ⽂化的変化を促進する • ⼈の働き⽅を決める • 新しい統制プロセスの追加 • 活動を抑制する • コードベースのキュレーション • 新しいツールを⾃前で構築 • 新しいタイプのリポジトリを作成 以下である。 以下でない。
  6. InnerSource をドライブするということは GitHub • 特定の⽬的のための、複雑なソリューション • 貢献 = 気晴らし •

    ⾃分のコード • ⾞輪の再発明 • 製品 = コード • よりシンプルなモジュール式コンポーネント • 貢献 = コラボレーションとコミュニティへの投資 • 私たちのコード • 再利⽤し構築 • 製品 != コード Product Product Product Product インナーソースの狙い Product Product Product Product 最⼤化を狙う 少ない共有部分 かつての運⽤
  7. 1. 発⾒ 2. デザイン 3. 開発 4. デプロイ 5. メンテナンス

    • PMが新機能のリクエストを持ち込 む • PMが要件の検証(顧客インタ ビュー、既存のバックログに対す る機能の検証)を⾏い、 InnerSourcing のための機能の優 先順位を決定 • PMが要件ドキュメントを作成 • PMは、製品の⼀貫性(ユーザーエ クスペリエンス、ルック&フィー ル、製品ロードマップの整合性な ど)を確保するための要件をレ ビューします。 • Dev/PM が要件をレビューし、設 計ソリューションを議論します。 • PMは、必要に応じてさらなる顧 客検証を実施します。 • Dev は、作業を開始する前に、サ ポートしている開発者と設計計画 を議論します。 • 開発者は、開発チームの延⻑線 上で働きます (すなわち、該当 プロダクトのコードベースで機 能を構築、PR をチェック、機 能をテスト、バグバッシュをホ スト、デモ、ドキュメントの作 成を⾏います)。 • Dev は必要に応じてガイダンス を提供し、ブロッカーを取り除 きますます。 • PMが機能を有効にする前にコ ミュニティに新機能のリリース を送信します。 • 顧客に影響を与える機能は、混 乱を防ぐために Feature Flag を ⽤います。 • コードは通常、プルリクエスト を完了してから 4 時間以内に本 番環境にデプロイされます。 • インナーソース中は、開発 者が開発した機能を⽀援し たり、デバッグしたりしま す。 • 最終的には、開発チームが 製品の責任者となり、開発 終了後も機能のメンテナン スを⾏います。 • Weekly PM シンク • Weekly Dev/PM シンク PM toolkit • インタビューのテンプレート • サンプル要件テンプレート • 製品ビジョン - スライド7 • 機能バックログ PM toolkit • 新機能リリーステンプレート 早めに、オープンに、書⾯でコミュニケーションをとる 貢献者をチームの ⼀員として扱う ⽂書化して実験を簡単に ex: 共通の要件 ex: 30⽇間保証 メンターシップ 貢献の Recognition Best Practices Microsoft の InnerSource フレームワーク
  8. Microsoft の収集する Customer Metrics (Customer = 社内ユーザー) メトリクスの収集をし、社内での InnerSource 促進の管理をします。

    • Contributor が複数いるリポジトリ • CONTRIBUTING.md が存在するリポジトリ • README.md が存在するリポジトリ • Fork の数 例) 1ヶ⽉の開発状況の変化: (+3%) (+0.1%) (+0.9%) Contributor が複数いるリポジトリ CONTRIBUTING.md ファイルが存在するリポジトリ README.md ファイルが存在するリポジトリ
  9. Microsoft 開発チームの OKRs の例 Object コードオーナーが、⾃分たちのソフトウェアがどのよう に使われているかを理解し、コントリビューターを募集 する⽅法を理解している Key Result

    • InnerSourceの貢献パイプラインのメトリクスを定義 し、消費しやすい⽅法で提供する (使⽤状況、インタラクション、および貢献の追跡) • InnerSourceの貢献パイプラインMVPが、関連する2 つのチームで採⽤されていること Action Item • チームが使⽤できるInnerSourceモデルとダッシュ ボードMVPの開発 • モデルとダッシュボードを公開 • ファネルを改善するためのアクション指向のガイダン スとワークフローを開発し、提供します。 InnerSource OKR Object マイクロソフトのエンジニアがコードの共同作業を可能 にする Key Result • Microsoftのすべてのアクティブなアカウントで、 InnerSourceガイドラインが導⼊されたForksプロ ジェクトがある(〇〇%から◯ポイント増加) Action Item • アカウント所有者のために Fork プロジェクトを作成 するためのワークフローを作成する • Fork プロジェクトをまだ持っていない関連するすべて のMicrosoftアカウントにバナーを作成/ロールアウト する InnerSource OKR
  10. プロダクト開発と同⼀の開発フロー Azure Boards UserVoice IdeaFarm IP Council SI Field BP

    Field Component Library IPKit 1801 1804 1807 1808 Aka.ms Link Publish Content Update Library Portfolio IPForum 1804 1807 1808 vNext 1801 Offering Sales Content Scoping Content Delivery Content Aka.ms Link
  11. ここまでのまとめ GitHub InnerSource は⽂化変⾰の旅。 継続的に社内で⽂化を育てましょう。 発⾒可能性 / 実⾏可能性 / 貢献性

    / 継続性 が重要。 InnerSource のメトリクスをとってみましょう。 Fun! InnerSource の活動は社内統制や標準化の活動の⼀環としてでは なく、“投資” として⾏いましょう。 そして、何よりも楽しんでコラボレーションをしよう。
  12. Developers Summit 2021 ͲͷΑ͏ʹΠϯφʔιʔεΛ࣮ફ͢Δ͔ Enterprise Organization Repository Repository Organization Repository

    ϓϩδΣΫτΛͲ͏ݟ͚ͭͯ΋Β͏͔ʁ wࣾ಺ϝϯόʔ͕ϦϙδτϦʹΞΫηε Ͱ͖Δඞཁ͕͋Δ w*OUFSOBMϦϙδτϦ&OUFSQSJTF಺શମ͔Β 3FBEͰ͖ΔϦϙδτϦ
  13. Developers Summit 2021 ͲͷΑ͏ʹΠϯφʔιʔεΛ࣮ફ͢Δ͔ ॳΊͯίϯτϦϏϡʔτ ͢Δਓͷෆ҆Λ औΓআ͘͜ͱ͕େࣄ w Ͳ͏͍͏ίϯτϦϏϡʔτ͕ ड͚ೖΕΒΕΔͷ͔ʁ

    w Ͳ͏͍͏ྲྀΕͰίϯτϦϏϡʔτ ͨ͠Βྑ͍ͷ͔ʁ w Θ͔Βͳ͍͜ͱ͕͋ͬͨΒ୭ʹ ฉ͚͹Α͍ͷ͔ʁ w ԿΛຬͨͨ͠ΒϓϧϦΫΤετ͕ Ϛʔδ͞ΕΔͷ͔ʁ
  14. Developers Summit 2021 ͲͷΑ͏ʹΠϯφʔιʔεΛ࣮ફ͢Δ͔ $0%&08/&34 ϑΝΠϧͷछྨ΍ύεຖʹΦʔφʔ Λࢦఆ ϓϧϦΫΤετ࡞੒࣌ʹ มߋ͞ΕͨϑΝΠϧͷΦʔφʔʹ ϨϏϡΞʔΛࣗಈઃఆ͢Δ͜ͱ͕

    Մೳ # Φʔφʔ͸ݸਓͰ΋νʔϜͰ΋ྑ͍ * @global-owner1 @global-owner2 *.js @frontend-team *.go @backend-team *.css @design-team /build/logs/ @infra-team docs/* @mr-document
  15. Developers Summit 2021 ͲͷΑ͏ʹΠϯφʔιʔεΛ࣮ફ͢Δ͔ w*OOFS4PVSDF$PNNPOT*OOFS4PVSDFͷίϛϡχςΟ w IUUQTJOOFSTPVSDFDPNNPOTPSH w*OOFS4PVSDF1BUUFOT*OOFS4PVSDFΛ࣮ફ͢Δ্Ͱͷύλʔϯू w IUUQTHJUIVCDPN*OOFS4PVSDF$PNNPOT

    *OOFS4PVSDF1BUUFSOT wΠϯφʔιʔε༻ϙʔλϧαΠτ࣮૷ w IUUQTHJUIVCDPNPDUPEFNPQSPKFDUQPSUBMGPS JOOFSTPVSDF w IUUQTHJUIVCDPNIFMBJMJFOUFSQSJTFTIPXDBTF ࢀߟ৘ใ wSFQPMJOUFSϦϙδτϦʹඞཁͳ৘ใ͕ஔ͔Ε͍ͯΔ͔Ͳ͏͔ͷ νΣοΫπʔϧ w IUUQTHJUIVCDPNUPEPHSPVQSFQPMJOUFS w֤ϦϙδτϦͷΞΫςΟϏςΟͷՄࢹԽπʔϧ w IUUQTHJUIVCDPN"VUPEFTLIVCCMF w IUUQTHJUIVCDPNDIBPTTHSJNPJSFMBC