Googleのソフトウェアエンジニアリング ―持続可能なプログラミングを支える技術、文化、プロセス
by Titus Winters, Tom Manshreck, Hyrum Wright, 竹辺 靖昭, 久富木 隆一
序文
Googleが事を為すやり方の細部というものはいつでも、私を魅了してやまない。Google社内で実際のところどのように事が運んでいるものか、その情報を求めてグーグラー(Googler:Google社員)の友人たちを問い詰めたことがある。巨大でモノリシック(monolithic:非分割で一枚岩構造の)なコードのリポジトリー(repository)†1をどうやって倒壊させることなく管理しているのか。いかにして何万人ものエンジニアが何千ものプロジェクト上での共同作業を成功させているのか。システムの品質はどのように維持しているのか。
†1 訳注:貯蔵庫。コードのリポジトリーについては、16章参照。
元グーグラーたちと仕事をすると、私の好奇心は増すばかりなのだった。元Googleエンジニア(あるいはズーグラー [Xoogler:元Google社員] ともときに呼ばれる)と仕事をした経験がある者なら、おそらく「Googleでは我々は……」という決まり文句を耳にしたことがあるだろう。少なくともエンジニアリング面の話では、Google出身者にとって他社へ入社するというのは衝撃的な体験となるらしい。部外者である私の知る限り、会社のスケール(scale:規模)と人々の繰り返す称賛の双方を考え合わせると、Googleにおけるコードを書くためのシステムとプロセスは世界最高峰であることは間違いない。
本書『Googleのソフトウェアエンジニアリング』では、一団のグーグラー(ならびに数人のズーグラー)が、Googleにおけるソフトウェアエンジニアリングの基礎となっている多数のプラクティス(practice)†2、ツール、さらに文化的要素までの、長大な計画図面を見せてくれる。コードを書くことを支援するためにGoogleが構築した驚くべきツールばかりに目を奪われてしまうことはたやすく、本書はそうしたツールについても大量の詳細情報を提供している。しかしながら本書は、単なるツール環境の詳述を超えて、Googleの数々のチームが従う哲学とプロセスとを我々読者に授けてくれる。Google並みのスケールやツール環境を備えるか否かにかかわらず、Googleの哲学とプロセスは、多岐にわたる状況に沿うよう適応させることができる。幸いなことに、我々の業界内で相変わらず過大な抵抗に直面しがちなトピックである自動テストの各種側面についても、いくつかの章で深く掘り下げられている。 ...