April 2022
Beginner to intermediate
464 pages
6h 44m
Japanese
Go Modulesでは、1つのリポジトリ中に複数のモジュールが存在する、いわゆる「モノレポ」の構成を選択できます。次のディレクトリ構成には2つの go.mod が存在していて、それぞれ別のモジュールとして判断されます。
.
├── entrypoint
│ ├── go.mod (github.com/myorg/app/entrypoint)
│ └── main.go
└── storage (github.com/myorg/app/storage)
├── go.mod
└── storage.go
一般的には1リポジトリ1モジュールの構成がシンプルで望ましい形ですが、アプリケーションのシステム構成によっては、リポジトリ間に依存関係が存在することもあります。ある変更が複数のリポジトリに波及して、それぞれのリポジトリにプルリクエストを発行したり、マージのタイミングに注意したりする機会が増えてきたら1、複数のリポジトリを1つに集めたマルチモジュール構成への移行を検討する頃合いです。
2つのモジュールに依存関係があり、entrypointはstorageモジュールを利用しようとしているとします。何もしないと、entrypointはローカルに依存モジュールがあるのに、リポジトリから新規にダウンロードしてそちらを利用しようとします。せっかくモノレポ構成にしても、一度pushしないとビルドできなくなってしまいます。幸い、Go Modulesは、GitHubのようなバージョン管理システムのリポジトリにあるモジュールを参照するだけでなく、ローカルのモジュールも直接参照できます。上記のように2つのモジュールで構成されている例について考えてみます。 ...
Read now
Unlock full access