このプロジェクトについて

Goaは、Goサービスを構築するためのデザインファーストのフレームワークです。ハンドラー、クライアント、仕様を別々に書く代わりに、型、メソッド、バリデーション、エラーをGoベースのDSLで一度記述すれば、ジェネレーターが残りを生成します。 単一のデザインからジェネレーターが生成するもの: - 型付きサービスインターフェース、エンドポイント、クライアント、境界バリデーション - HTTPサーバーハンドラー、エンコーダー/デコーダー、Goクライアント、CLIコマンド、OpenAPI仕様 - gRPC Protocol Buffer定義、サーバー/クライアントアダプター、シリアライゼーション、CLIコマンド - JSON-RPCサーバー/クライアントコード、リクエストディスパッチ、バッチ、通知 - ストリーミング対応: HTTP向けのWebSocketとSSE、JSON-RPC向けのSSE、gRPCストリーム - 名前付き結果ビューと、レスポンス形状を選択してシリアライズするコード 単一のサービス定義で、同じオペレーションをHTTP、gRPC、JSON-RPC経由で公開できます。生成されたトランスポートは1つのサービスインターフェースを共有するため、ビジネスロジックは生成ツリーの外側で通常のGoとして一度実装するだけです。デザインを変更して再生成すると、ハンドラー、クライアント、バリデーション、仕様がまとめて更新され、コードとドキュメントの乖離を減らせます。 READMEではコーディングエージェントのワークフローも強調されています。「Goa service designer」スキルをアプリケーションリポジトリにインストールすると、デザイン変更、生成、実装、検証をガイドできます。プロジェクトはGoa-AIを紹介しており、Goaの型を再利用し、ツールをサービスメソッドにバインドするAIエージェントやMCPサーバーを、インメモリまたはTemporalの実行エンジンで構築できます。 始めるにはGo 1.26以降(1.27.1推奨)が必要です。クイックスタートでは、モジュールの初期化、デザインの記述、ジェネレーターとサンプルコマンドの実行、生成されたサービスの呼び出しを順に説明します。3つのトランスポートすべてにはProtocol BufferコンパイラーとGo protobufジェネレーターが必要ですが、HTTPのみの初回実行ではgRPCとJSON-RPCのブロックを省略できます。 ドキュメントでは、DSLリファレンス、コード生成、トランスポート別ガイド、セキュリティスキームやインターセプターなどの本番向けトピック、一連のサンプルアプリケーションを扱っています。プロジェクトはMITライセンスで、コミュニティからの貢献を受け付けています。