GraphQL、REST、WebSockets、SSE、gRPCに対応し、ローカル、Git、クラウドに保存できるオープンソースのクロスプラットフォームAPIクライアント。
goadesign/goa
Goの契約をもとに、HTTP、gRPC、JSON-RPCのサービスやクライアント、OpenAPI/protobuf仕様を生成する設計先行型フレームワーク。
- スター
- 6,122
- フォーク
- 582
- 未解決の Issue
- 37
- 最終コミット
- 4 日前
これは何?
Goaでは、Go DSLで型、操作、バリデーションルールを一度記述するだけで済みます。その設計から、HTTP、gRPC、JSON-RPC向けのサーバーコードとクライアントコード、CLIクライアント、OpenAPI仕様、Protocol Buffer定義を生成できます。すべてのトランスポートが同じ生成済みサービスインターフェースを呼び出すため、APIドキュメントをコードと同期した状態に保てます。
開発者が自分のGoファイルに記述するのはビジネスロジックだけで、生成コードのgen/ディレクトリとは分離されています。設計のフィールドやバリデーションルールを変更して再生成すると、ハンドラー、クライアント、バリデーション、仕様がまとめて更新されます。また、設計変更、コード生成、検証を支援するコーディングエージェント向けスキルも提供しています。
Goaには関連プロジェクトのGoa-AIもあり、同じ型定義を再利用してAIエージェントやMCPサーバーを構築できます。
主な機能
- 01単一のGo設計からHTTP、gRPC、JSON-RPCのトランスポートを生成
- 02Goクライアント、CLIクライアント、リクエストバリデーションを自動生成
- 03OpenAPI仕様とProtocol Buffer定義を出力
- 04WebSocket、SSE、gRPCストリームによるストリーミングに対応
- 05実装コードと生成コードを分離
ユースケース
- RESTとgRPCの両方のエンドポイントを公開するGoマイクロサービスの構築
- OpenAPIドキュメントを手書きせず、Go APIと同期した状態に保つ
- 型付きコントラクトを編集して再生成することで、コーディングエージェントにAPIを変更させる
クイックスタート
- 1
Goa モジュールをインストールします(Go 1.27.3 以降が必要です)
go get goa.design/goa/v3@latest - 2
設計からサーバーとクライアントのコードを生成します
go run goa.design/goa/v3/cmd/goa gen hello/design - 3
スターターアプリケーションのファイルを作成します
go run goa.design/goa/v3/cmd/goa example hello/design - 4
ポート 8000 でサービスを実行します
go run ./cmd/hello --http-port=8000
使う前に知っておきたいこと
- Go 1.27.3 以降が必要です。
- gRPC または JSON-RPC を使用するには、Protocol Buffer コンパイラーと Go protobuf ジェネレーターのインストールが必要です。初回は HTTP のみで実行すれば、これらは不要です。
収録されている特集
トピック
よくある質問
- goa とは?
- Goの契約をもとに、HTTP、gRPC、JSON-RPCのサービスやクライアント、OpenAPI/protobuf仕様を生成する設計先行型フレームワーク。 Goaでは、Go DSLで型、操作、バリデーションルールを一度記述するだけで済みます。その設計から、HTTP、gRPC、JSON-RPC向けのサーバーコードとクライアントコード、CLIクライアント、OpenAPI仕様、Protocol Buffer定義を生成できます。すべてのトランスポートが同じ生成済みサービスインターフェースを呼び出すため、APIドキュメントをコードと同期した状態に保てます。
- goa は無料で使えますか?ライセンスは?
- goa は MIT ライセンスのオープンソースです。商用製品で使う前にライセンス条件を確認してください。
- goa は今もメンテナンスされていますか?
- 活発にメンテナンス中。goa の最終コミットは 2026年11月3日 です。
- goa は何に使えますか?
- RESTとgRPCの両方のエンドポイントを公開するGoマイクロサービスの構築 OpenAPIドキュメントを手書きせず、Go APIと同期した状態に保つ 型付きコントラクトを編集して再生成することで、コーディングエージェントにAPIを変更させる
- goa のインストール方法は?
- Goa モジュールをインストールします(Go 1.27.3 以降が必要です): go get goa.design/goa/v3@latest 設計からサーバーとクライアントのコードを生成します: go run goa.design/goa/v3/cmd/goa gen hello/design スターターアプリケーションのファイルを作成します: go run goa.design/goa/v3/cmd/goa example hello/design ポート 8000 でサービスを実行します: go run ./cmd/hello --http-port=8000
- goa はどこで入手できますか?
- ソースコードとインストール手順は GitHub にあります:https://github.com/goadesign/goa
概要はプロジェクトの README をもとに AI が生成しています。GitHub の数値は毎日更新されます。
関連プロジェクト
データベースやビジネスロジックをREST API化し、AIエージェント向けのMCPにも対応する、セルフホスト型のPHP APIゲートウェイ・管理プラットフォーム。
標準の型ヒントを使ってAPIを構築できるPython製Webフレームワーク。自動バリデーション、OpenAPIドキュメント、高いパフォーマンスを備えています。
REST・SOAPサービスをプロキシし、OpenAPIによるAPIデプロイ、WSDLからOpenAPIへの変換、OAuth2/JWTによるセキュリティ、メッセージ検証を提供するオープンソースAPIゲートウェイ。
Goサービス向けに、RESTfulなJSON HTTP呼び出しをgRPCリクエストへ変換するリバースプロキシサーバーを生成するprotocプラグイン。
Go製のローカルファーストなネイティブAPIクライアント。REST、gRPC、GraphQL、WebSocketに対応し、トラフィックプロキシを内蔵。