グーグルのクラウドを支えるテクノロジー > 第21回 Googleのソースコード管理システム ― Piper/CitC(続編)
私がCTC教育サービスで編集支援している中井悦司さんのコラム「グーグルのクラウドを支えるテクノロジー > 第21回 Googleのソースコード管理システム ― Piper/CitC(続編) 」が公開されました。
Googleクラウドは今注目を集め始めています。米国ではAWSの顧客満足度を超え、AWSのシェアを削っていく存在になってきています。興味がある方は是非!
###
はじめに
前回に続いて、2016年に公開された学術記事「Why Google Stores Billions of Lines of Code in a Single Repository」をもとにして、Google社内で利用されているソースコード管理システムを紹介します。
前回説明したように、Googleでは、ほぼすべてのソースコードが単一のリポジトリで管理されており、すべての開発者が共通のソースコードを利用できるようになっています。今回は、このような仕組みがもたらす利点と課題を説明します。
単一リポジトリの利点
冒頭の記事では、単一のリポジトリを使用する利点として、次のような点があげられています。
•複数バージョンにまたがる依存関係の問題を回避する
•大規模なリファクタリングを可能にする
•プロジェクト間でのソースコードの共有を推進する
まず、複数バージョンにまたがる依存関係ですが、たとえば、図1左のようなライブラリーの依存関係を考えてみます。アプリケーションAは、内部的に、ライブラリーBとライブラリーCを使用しており、さらに、ライブラリーBとライブラリーCは、どちらも共通のライブラリーDを使用しています。この時、それぞれのライブラリーが別々のリポジトリで独立に管理されているとすると、ライブラリーBとライブラリーCで、前提となるライブラリーDのバージョンが異なる可能性が発生します(図1右)。そうなると、ソフトウェアAをビルドする際は、異なるバージョンのライブラリーDを使い分けないといけなくなります。一般的なビルドツールでは、このような状況は想定されておらず、ソフトウェアAをビルドすることは困難になります。
この続きは以下をご覧ください
https://www.school.ctc-g.co.jp/columns/nakai2/nakai221.html