モジュールの開発と公開
関連するパッケージをモジュールにまとめ、他の開発者が使用できるように公開できます。このトピックでは、モジュールの開発と公開の概要を説明します。
モジュールの開発、公開、および使用をサポートするために、以下を使用します。
- モジュールを開発および公開し、時間の経過とともに新しいバージョンで改訂するワークフロー。モジュールの開発と公開のためのワークフローを参照してください。
- モジュールのユーザーがモジュールを理解し、安定した方法で新しいバージョンにアップグレードできるようにする設計プラクティス。設計と開発を参照してください。
- モジュールを公開し、そのコードを取得するための分散型システム。自分のリポジトリから他の開発者が使用できるようにモジュールを利用可能にし、バージョン番号を付けて公開します。分散型公開を参照してください。
- 開発者がモジュールを見つけることができるパッケージ検索エンジンおよびドキュメントブラウザ(pkg.go.dev)。パッケージの検出を参照してください。
- モジュールを使用する開発者に安定性と後方互換性の期待を伝えるためのモジュールバージョン番号付け規則。バージョン管理を参照してください。
- 他の開発者が依存関係の管理を容易にするGoツール(モジュールのソースの取得、アップグレードなどを含む)。依存関係の管理を参照してください。
こちらも参照
- 他の開発者によって開発されたパッケージを単に利用することに関心がある場合は、このトピックは対象外です。代わりに、依存関係の管理を参照してください。
- いくつかのモジュール開発の基本を含むチュートリアルについては、チュートリアル:Goモジュールの作成を参照してください。
モジュールの開発と公開のためのワークフロー
他のユーザーのためにモジュールを公開したい場合、モジュールの使用を容易にするためのいくつかの慣例を採用します。
以下の高レベルのステップは、モジュールのリリースとバージョン管理のワークフローで詳細に説明されています。
- モジュールに含まれるパッケージを設計およびコーディングします。
- Goツールを介して他のユーザーが利用できるようにするための慣例を使用して、リポジトリにコードをコミットします。
- 開発者が発見できるようにモジュールを公開します。
- 時間の経過とともに、各バージョンの安定性と後方互換性を示すバージョン番号付け規則を使用するバージョンでモジュールを改訂します。
設計と開発
モジュール内の関数とパッケージがまとまった全体を形成している場合、開発者はモジュールを見つけやすくなり、使いやすくなります。モジュールの公開APIを設計する際には、その機能を集中させ、独立性を保つように努めてください。
また、後方互換性を考慮してモジュールを設計および開発することで、ユーザーは自身のコードへの変更を最小限に抑えながらアップグレードできるようになります。コード内で特定のテクニックを使用して、後方互換性を損なうバージョンをリリースすることを避けることができます。これらのテクニックの詳細については、Goブログのモジュールの互換性を保つを参照してください。
モジュールを公開する前に、replaceディレクティブを使用してローカルファイルシステムで参照できます。これにより、モジュールがまだ開発中であっても、モジュール内の関数を呼び出すクライアントコードを簡単に記述できます。詳細については、モジュールのリリースとバージョン管理のワークフローの「未公開モジュールに対するコーディング」を参照してください。
分散型公開
Goでは、モジュールのコードをリポジトリでタグ付けして公開し、他の開発者が使用できるようにします。Goツールは、リポジトリ(スキームが省略されたURLであるモジュールのパスを使用して見つけられます)またはプロキシサーバーからモジュールを直接ダウンロードできるため、モジュールを集中型サービスにプッシュする必要はありません。
コードにパッケージをインポートした後、開発者はGoツール(go getコマンドを含む)を使用してモジュールのコードをダウンロードしてコンパイルします。このモデルをサポートするために、Goツール(他の開発者に代わって)がリポジトリからモジュールのソースを取得できるようにする慣例とベストプラクティスに従います。たとえば、Goツールは、指定したモジュールのモジュールパスと、リリース用にモジュールにタグ付けするために使用するモジュールバージョン番号を使用して、ユーザーのためにモジュールを検索し、ダウンロードします。
ソースと公開の慣例およびベストプラクティスの詳細については、モジュールのソースの管理を参照してください。
モジュールを公開するための段階的な手順については、モジュールの公開を参照してください。
パッケージの検出
モジュールを公開し、誰かがGoツールで取得すると、pkg.go.devのGoパッケージ検出サイトで表示されるようになります。そこで、開発者はサイトを検索してモジュールを見つけ、そのドキュメントを読むことができます。
モジュールの使用を開始するには、開発者はモジュールからパッケージをインポートし、go getコマンドを実行してソースコードをダウンロードしてコンパイルします。
開発者がモジュールを見つけて使用する方法の詳細については、依存関係の管理を参照してください。
バージョン管理
時間の経過とともにモジュールを改訂および改善するにつれて、各バージョンの安定性と後方互換性を示すように設計されたバージョン番号(セマンティックバージョニングモデルに基づく)を割り当てます。これにより、モジュールを使用する開発者は、モジュールが安定している時期や、アップグレードに動作の大きな変更が含まれる可能性があるかどうかを判断できます。モジュールのバージョン番号は、リポジトリ内のモジュールのソースにその番号でタグ付けすることで示します。
メジャーバージョン更新の開発の詳細については、メジャーバージョン更新の開発を参照してください。
Goモジュールにセマンティックバージョニングモデルを使用する方法の詳細については、モジュールのバージョン番号付けを参照してください。