Repolode
goadesign

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. 1

    Goa モジュールをインストールします(Go 1.27.3 以降が必要です)

    go get goa.design/goa/v3@latest
  2. 2

    設計からサーバーとクライアントのコードを生成します

    go run goa.design/goa/v3/cmd/goa gen hello/design
  3. 3

    スターターアプリケーションのファイルを作成します

    go run goa.design/goa/v3/cmd/goa example hello/design
  4. 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 の数値は毎日更新されます。

関連プロジェクト