Goaのコマンドラインツールを以下のようにインストールします:
go install goa.design/goa/v3/cmd/goa@latest
goa gen
)goa gen <design-package-import-path> [-o <output-dir>]
goa gen
コマンドは、Goaにおけるコード生成の主要なツールです。実行すると、
デザインパッケージを処理し、サービスの完全な実装コードを生成します。gen/
ディレクトリ全体を最初から再作成し、生成されたコードがデザインと同期している
ことを保証します。デザインを変更するたびにこのコマンドを実行して、実装コードを
再生成する必要があります。
goa example
)goa example <design-package-import-path> [-o <output-dir>]
goa example
コマンドは、初期のサービス実装のスキャフォールディングを支援します。
サンプル実装を作成し、開始点となるプレースホルダーロジックを含むハンドラースタブを
生成します。このコマンドは新しいプロジェクトを開始する時に1回だけ実行することを
想定しており、カスタム実装の基礎を提供します。重要なのは、このコマンドは安全に
設計されていることです - すでに作成したカスタムコードを上書きすることはなく、
既存の作業を保持します。
goa version
)goa version
インストールされているGoaのバージョンを表示します。
すべてのコマンドはファイルシステムのパスではなく、Goパッケージのインポートパスを 期待します:
# ✅ 正しい:Goパッケージのインポートパスを使用
goa gen goa.design/examples/calc/design
# ❌ 誤り:ファイルシステムのパスを使用
goa gen ./design
新しいGoaプロジェクトの初期化手順:
goa gen
を実行してベースコードを生成goa example
を実行して実装スタブを作成スタブサービスを早期にデプロイすることで、初期開発を通常の保守ワークフローに 合わせることができます。このアプローチにより以下が可能になります:
スタブサービスがデプロイされると、通常の開発サイクルが始まります。これには、
生成されたハンドラーに実際のサービスロジックを実装し、デザインを変更するたびに
goa gen
を実行し、実装を継続的にテストおよび反復することが含まれます。この
サイクルにより、実装がデザインと同期を保ちながら、サービスのコアビジネスロジック
の構築に集中できます。
生成されたコードは、CI/CDパイプライン中に生成するのではなく、バージョン管理に コミットする必要があります。その理由は以下の通りです:
go get
などのツールがリポジトリ内のコミットされたコードで確実に動作goa gen
を実行して実装を同期