goa gen
を実行すると、Goaは以下の体系的なプロセスに従ってデザインを動作する
コードに変換します:
Goaはまず一時的なプログラムを作成して実行します:
このフェーズでは、Goaは以下を行う一時的なmain.go
プログラムを作成します:
この一時的なプログラムは、デザインをコードに変換するためのエントリーポイントとして 機能します。生成プロセス中に自動的に作成および削除されるため、直接管理する必要は ありません。
このフェーズでは、Goaはデザインパッケージを読み込んで評価します:
この評価フェーズは、宣言的なデザインをコード生成に使用できる構造化モデルに 変換するため、重要です。
式が検証されると、それらはGoaのコードジェネレーターに渡されます。ジェネレーターは
これらの式を入力データとして使用して、さまざまなコードテンプレートをレンダリング
します。HTTPとgRPCのトランスポート固有のコードを生成し、必要なすべてのサポート
ファイルを作成し、完全な出力をgen/
ディレクトリに書き込みます。この生成ステップ
では、コードベース全体で一貫性を維持しながら、サービスを実行するために必要な
すべてのコードを生成します。
一般的な生成されるプロジェクト構造:
myservice/
├── cmd/ # 生成されるサンプルコマンド
│ └── calc/
│ ├── grpc.go
│ └── http.go
├── design/ # デザインファイル
│ └── design.go
├── gen/ # 生成されるコード
│ ├── calc/ # サービス固有のコード
│ │ ├── client/
│ │ ├── endpoints/
│ │ └── service/
│ └── http/ # トランスポート層
│ ├── client/
│ └── server/
└── myservice.go # 生成されるサービス実装スタブ
生成されるコードの詳細については、 生成されるコードセクション を参照してください。