英語で読む「Google のソフトウェアエンジニアリング」

Posted on 2018-01-01(月) in Software Engineering

Google にて10年以上ソフトウェアエンジニアとして働き、現在は最近では text-to-speech の研究に従事しているFergus Henderson氏による

Software Engineering at Google

という記事。Google のソフトウェアエンジニアリングのプロセスや文化が簡単にまとまっていて参考になる点も多いと思います。主要なポイントを簡単にまとめると:

  • 単一の巨大なリポジトリ。どのエンジニアでも(検索ランキングやセキュリティなどに関わる重要な部分を除き)自由にチェックアウトしてコードが読める。
  • 分散ビルドシステム Blaze (100〜1000台のサーバーで分散ビルド・テスト) キャッシュにより高速なコンパイルを実現。
  • 厳格なコードレビュー文化。メインのリポジトリにコミットするコードは必ずコードレビューを経なければいけない。
  • ユニットテスト、負荷テスト。
  • スタイルガイド、5つの公式言語(C++, Java, Python, Go, JavaScript)のサポート。
  • 頻繁なリリース(1,2週間ペース) リリースの自動化、ステージング環境における本番トラフィックを使った統合テスト。
  • リリース承認プロセス・ツール。
  • ポストモーテム:大きな障害が起きた時に書く文書。影響(クエリ数や経済的損失)、再発防止策などを書く。
  • 数年ごとにソフトウェアの書き直し。
  • 20 …

Continue reading