Goのビルドシステムの変遷

Room 2 14:30 - 14:50

Goの特徴として、プロジェクト規模に対するビルドの速度が速いというものがあります。このビルドシステムへのこだわりはGo自体の設計にも深く根ざしていて、言語開発のそもそものモチベーションの1つが快適なビルドシステムの構築でした。そしてGoは2009年のオープンソース化以降、たゆまなくビルドシステムの改善を続け、今日に至るまで多くの変遷を辿ってきました。 本セッションでは公開から15年経った現在までのGo歩みを、ビルドシステムの変遷に焦点を当てながら辿っていきます。ここに至るまでにはサードパーティ製のツールや他言語のツールの影響も大きいため、これらについても必要に応じて触れていきます。また、これまでの歴史や現場を踏まえた上での、Goのビルドシステムの今後についても、プロポーザルをもとに解説します。 関連する内容として、Go製のプログラム自体のビルドだけでなく、そのアーティファクトをコンテナ化する際のビルドプロセスに関しても解説します。 セッションの大まかなセクションは次のような割り振りで進めていきます。各ツールや仕様ごとにどのような課題を解決しようとしたのか、解説しながらGoの歩みをビルドシステムの側面から振り返れるセッションとなります。 1. makefile 2. goinstall 3. go build 3.1 pkg.in 3.2 vendoring 3.3 gb 3.4 godep 4. go mod 4.1 バージョニング 5. module mirror & index (GOPROXY) 6. go workspace 7. go mod tools また関連するビルドツールとして、koやgazelle(bazel)など、時間があれば紹介したいと考えています