Coda

メモ Advantages and Disadvantages of a Monolithic Repository

August 17, 2019

概要

表題は、マルチリポジトリと比べたときのモノリシックリポジトリの長所と短所の調べた論文のタイトルである。 論文は2018年のICSEでGoogleから発表された。 調査方法はGoogle社のエンジニアへのアンケートとエンジニアの行動ログの分析が採用されている。 Googleではモノリシックリポジトリが採用されており、エンジニアがこれまで経験したマルチリポジトリが比較対象となっている。

論文の主たる貢献は、マルチリポジトリとモノリシックリポジトリどちらも使って開発したことのあるエンジニアに対して調査したこととある。 調査によって分かった長所は、ソースコードの見通しの良さであり、見通しの良さが再利用可能なAPIと使い方が見つけやすさにつながっている。 他方で、短所は、プログラムが依存するライブラリのバージョンを固定できないこと、開発ツールの選択の自由の少なさの2点にあった。 中立的な表題だが、調査の結果は、モノリシックリポジトリの方が明確にマルチリポジトリよりも支持されている内容だった。

短所であげたライブラリのバージョンの問題について補足する。論文で定義されているモノリシックリポジトリの定義によれば、 モリシックリポジトリで管理さているプログラムにはバージョンの概念がなく、プログラムは同じリビジョンにある依存するプログラムを利用することになる。 したがって、モノリシックリポジトリでは、依存するプログラムが更新されることでビルドに失敗するおそれがある。 しかし、同じリビジョンにあるプログラムを参照することで、Diamond dependencyのようなプログラムのバージョンにかかわる問題を解消でき、コードの一貫性や品質の向上できるとあり、モノリシックリポジトリがマルチリポジトリと比べて依存関係の問題において劣るという結論にはなっていない。

感想

調査結果からモノリシックリポジトリを検討する場合、妥当性への脅威で述べられているGoogleの社内ツールが評価に及した影響を気にしたほうがいいと感じた。 妥当性への脅威として、高評価の社内用のコードブラウズとレビューツールがあり、これらがモノリシックリポジトリへの高評価につながった懸念がある。 脅威への対策として、同じツールを使えるとしらどちらのリポジトリ形態がいいかという質問が追加されている。 しかし、Google社以外の人にはこれらのツールが使えないので、巨大なモノリシックリポジトリを扱うとき、私たちがツールの支援なしでモノリシックリポジトリを有効に使えるかどうかは分からないと思う。


論文はこちらからダウンロードできます。