こんにちは、CTOの藤門(@mikanmarusan)です。
Yahoo! JAPANは、インフラレイヤーからユーザーの皆さんとのタッチポイントとなるフロントエンドレイヤーまですべて自社で開発しています。そのテクノロジーの大部分でオープンソースソフトウェア(以下、OSS)を利用しており、Yahoo! JAPANはOSSでできているといっても過言ではありません。そのため、OSSを正しく理解して利用することやOSSコミュニティと共存してさまざまな形で貢献していくことはYahoo! JAPANの持続的な成長につながると考えています。
Yahoo! JAPAN のテクノロジースタックとオープンソースソフトウェア(Yahoo! JAPAN Tech Conference 2018より)
したがって、Yahoo! JAPAN のエンジニアやデザイナーが、
- OSSを正しく理解して利用できるようにすること
- OSSのコミュニティに貢献しやすい組織文化や環境を整えること
は、マネジメントとしての重要な役割の一つともいえます。
本記事では、Yahoo! JAPANにおけるマネジメント視点でのOSS貢献に対する取り組みについて紹介します。
コミュニティへの貢献
コミュニティへの貢献における基本的な考え方は、OSSコミュニティをリスペクトし多方面からサポートすることで共に発展し続ける関係を構築するということです。
プロダクトへの貢献
OSSコミュニティに対する貢献の方法はいくつかありますが、OSSのプロダクト自体への貢献が最も重要です。下記は、Yahoo! JAPANが開発協力をしているOSSの一部となります。
- Apache Pulsar
- Pub-Subパラダイムに基づいて設計された分散メッセージングシステム
- Athenz
- ロールベースのアクセス制御システム
- Gimbal
- 異なるクラウドインフラのネットワークトラフィックを統合制御するソフトウェア
- OpenMessaging
- 異なるメッセージングシステムを統合するソフトウェア
ポイントは、これらのOSSを実際のサービスで利用していることです。Yahoo! JAPANの高帯域トラフィック、大規模ユーザー、ペタバイトクラスのデータに対してOSSをそのまま適用すると、想定どおりに動作しないこともありますし、新たなバグを見つけることもよくあります。要は「人柱」です。結果として、OSSの不具合に対してクイックに対応できますし、追加機能をコントリビューションすることでOSSのユースケースやユーザー数の拡大に貢献できると期待しています。
実際にOSSへの貢献を通じて、Apache PulsarがApache Software FoundationのIncubator ProjectからTop-Level Projectに昇格したことは、Yahoo! JAPANとしても非常に嬉しい出来事の一つです。
The Apache Software Foundation Announces Apache® Pulsar™ as a Top-Level Project
またApache Pulsarを大規模に利用した経験から、アプリケーション間のデータ連携を行うときに、メッセージングシステムが異なると、互換のための実装コストがかかりシステムも複雑化するという新しい技術課題に直面しました。そこで、異なるメッセージングシステムを統合するOSSであるOpenMessagingの開発にも参画することにしました。一つのOSSの開発協力が、さらなるOSSへの貢献につながった例です。
金銭的な支援
OSSは無料で利用できますが、その開発やOSSコミュニティの運営には多くのコストがかかります。そこでYahoo! JAPANは、いくつかのOSSコミュニティに対して、微力ながらスポンサードという形で支援させてもらっています。
例えば、Yahoo! JAPANは2018年3月より、The Linux Foundation 及びその下部団体にあたるCloud Native Computing Foundationのスポンサーとなっています。
また、コンテナベースのアプリケーション管理に欠かすことができないOSSにKubernetesがあります。そのカンファレンスとなるKubeCon China, KubeCon North Americaでもスポンサーとなっています。Yahoo! JAPANでは、Kubernetesを利用して新しいサービス開発環境を構築し約50のサービスを稼働していますが、Kubernetesの運用時における経験などを、これらのカンファレンス内でも紹介しています。
人的な貢献
OSSの開発では、チャットやビデオコールを利用することにより、海外のコミッターやコントリビューターとコミュニケーションを行いながら進めていきます。しかしながら、開発の初期段階においては、ソフトウェアのアーキテクチャ設計など、通常より密にコミュニケーションを取る必要があることも多いです。
このようなケースにおいて、Yahoo! JAPANでは、OSSコミュニティの開発主体の企業へ長期滞在(=長期海外出張)し、OSSの立ち上げに強く関与することもあります。長期海外出張は大変なことも多いですが、コミッター同士の強い信頼関係を構築できるため、その後のOSSの開発に良い影響をもたらすことが多いです。
社内での取り組み
社内での取り組みにおける基本的な考え方は二つです。OSSを利用することで発生するリスクから従業員やYahoo! JAPANのサービスを保護すること、および、従業員がOSSへの貢献活動をする際に心理的安全性(psychological safety)が確保されている状態をつくることです。
コンプライアンスプログラム
OSSを利用するときには、そのライセンスに従う必要があります。Yahoo! JAPANでは、社内向けに「OSSガイドライン」を定義していて、OSSを利用するときには、ガイドラインに基づいてライセンスの遵守を心がけています。
また、従業員がOSSを適切に利用できるよう、定期的な研修プログラムを設けたり社内セミナーを開催したりしています。これらのガイドラインの整備や研修・セミナーを開催する専門のチームも存在していることも特徴の1つです。
一方で、現在の世界的なOSSに対する取り組みは、脆弱性対応にシフトしつつあります。Yahoo! JAPANは、2019年度より CVSS(Common Vulnerability Scoring System) と呼ばれる世界基準の脆弱性評価基準をもとに脆弱性対応にも力を入れていく予定です。
OSSの活用で大切なこと(Yahoo! JAPAN Tech Conference 2019より)
コントリビューターへの支援制度
最後は、OSSに対する人事制度の紹介となります。
Yahoo! JAPANでは、担当サービスやプロダクトの開発に必要なOSSに対するコントリビューション活動について、全クリエイター社員に対して会社として推奨し業務として認めています。これは冒頭でも述べたとおり、貢献活動そのものが持続的な成長につながると考えているからです。
また、戦略的に採用している特定のOSSについては、コミッターとして関与することにしています。Yahoo! JAPANのエンジニアとしてOSSのコミッターの活動を支援するための制度としてOSSデベロッパー認定制度を2017年から実施しています。まだ始まって2年目の制度となりますが、6名(2019年2月現在)のエンジニアが認定デベロッパーとしてOSS開発に従事し、業務の開発の範囲を超えてOSS貢献することを認められています。
さらに、英語のスキルはOSSコミュニティで活躍するためには重要なスキルの一つです。Yahoo! JAPANでは、エンジニアやデザイナーが、常に自身の技術力向上を図るための学習支援策として技術活動費用補助制度(通称TechUP)を2017年10月から設けていますが、英語学習に投資しているエンジニアやデザイナーも多いです。
まとめ
1週間かけてお届けしたOSSウィークはいかがだったでしょうか?
本記事では、マネジメント視点でのOSS貢献に対する取り組みについて紹介いたしました。OSSに貢献するということは、Yahoo! JAPANのエンジニアやデザイナー自身が、外のモノサシで自分のスキルを客観的に測ることができるという面で非常に重要な取り組みと位置づけています。
実際に、Apache PulsarやAthenzの開発を担当しているエンジニアからは、
- 「Pulsarの競合技術となる他のプロダクトを慎重に調査した」
- 「自社の"定番"を使えないことも多くどのように実装すべきかプレッシャーも大きかった」
- 「世界中のエンジニアからの重要なフィードバックは学ぶべきポイントが多いものだった」
- 「コミュニケーションが難しい(英語も)」
というコメントをもらったのが非常に印象的でした。OSSに貢献する活動そのものが、良いソフトウェアアーキテクトに成長するためのトレーニングになると信じています。
参考
Yahoo! JAPANが開発協力をしているOSSプロダクトのプレスリリース
こちらの記事のご感想を聞かせください。
- 学びがある
- わかりやすい
- 新しい視点
ご感想ありがとうございました