BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース Googleのソフトウェアエンジニアリング文化

Googleのソフトウェアエンジニアリング文化

ブックマーク

原文(投稿日:2019/09/16)へのリンク

Googleはこれまでに、マネージャと文化がチームのパフォーマンスに与える影響について理解を深めるため、何回かの調査を実施している。2008年、同社はProject Oxygenの調査結果をリリースし、2018年にはそれをフォローする研究を公開した。2008年の調査で確認された最高のマネージャ8人の行動に対して、同社は、Google全体におけるコラボレーションと、強力な意思決定という、2つの新しい行動を特定している。

2019年、Seth Richtsmeier氏は、今日Googleの成功に貢献している、いくつかの文化的プラクティスを公開した。特に同社では、個人の創造性と自主性を奨励すると同時に、情報共有と革新を促進するために、透明性と機能横断的なコラボレーションが推奨される環境を作り上げている。

GoogleのスタッフソフトウェアエンジニアであるFergus Henderson氏は、2017年、Googleのソフトウェアエンジニアリングのプラクティスを説明する記事を公開した。その中でHenderson氏は、チーム全体で広く共有され、Google内で時の試練に耐えた、重要なエンジニアリングテクノロジとプラクティスを要約して紹介している。

最初の重要なプラクティスは、コードリポジトリの使用だ。開発者のコードの大部分は、すべてのソフトウェアエンジニアがアクセス可能な単一の統合ソースコードに格納される。書き込みアクセスはコントロールされているが、エンジニアは任意のコードにアクセスして変更を加え、コード所有者の承認を得ることができる。コードの所有権に関しては、リポジトリの各サブツリーに、ユーザのIDをリストしたファイルを配置している。各サブツリーの所有者がそのサブツリーへの書き込みアクセスをコントロールし、チーム全員が所有者ファイルにリストされる。

ビルドは、ソフトウェアのコンパイル、リンク、テストの実行に使用されるBlazeと呼ばれる分散システムを基本にしている。Blazeは、リポジトリ全体を動作対象とする、ソフトウェアの構築およびテストのための標準コマンドを提供する。これら標準的なプラクティスによってエンジニアは、リポジトリ内のソフトウェアを迅速かつ安全にビルドおよびテストできるど同時に、プロジェクトの境界を越えたソース変更を容易に行うことができる。個々のビルド作業は数百または数千のマシンに分散して実行されるため、非常に大きなプログラムを迅速にビルドしたり、数千のテストを並行して実行したりすることが可能だ。

ソフトウェアエンジニアは、社内開発されたWebベースのツールを使用してコードレビューを行う。メインソースコードリポジトリに対する変更はすべて、少なくとも1人のエンジニアによってレビューされる。

ソフトウェアは数年単位で書き直しが行われる。これは多くのリソースを消費するが、これによって市場の需要と変化に迅速に適応する企業の能力が保証される。コードを書き直すことで、蓄積されたコードのレガシーと複雑さを軽減すると同時に、知識とコードの所有権を新しいチームメンバーに移転することが可能になる。このような書き直しを行うことによって、Googleのコードベースは、最新のテクノロジとエンジニアリング手法を使用して確実に記述されるようになるのだ。

文化的に同社のエンジニアは、製品境界に関係なく破損したコードを修正することで、自社の製品が会社の最高品質基準を満たしていることを確実にしている。

2017年に公開された記事においても、2006年から2008年までGoogleに勤務したEdmond Lau氏が、エンジニアとしてのキャリアを成功に導く貴重なエンジニアリングテクニックをGoogleで習得したことを認めた上で、大部分のエンジニアが、大規模かつグローバルなプロダクトの開発に従事している点を指摘している。そのためエンジニアにとって、イテレーションや優先順位付け、製品に関する意思決定、成果に基づくイニシアティブや時間の優先順位付けといった作業のフレキシビリティはあまり高くない。

この記事に星をつける

おすすめ度
スタイル

BT