エージェントは推論に。 コード生成はGoaに。

Goaは、コーディングエージェントが書くコードを減らし、推論の基準となる契約をひとつにまとめるGoフレームワークです。HTTP・gRPC・JSON-RPCサーバー、型付きクライアント、検証、API仕様書を生成。Goa-AIでAIエージェント、MCPサーバー、ツールレジストリを構築できます。

GitHub Goa Goa-AI
コーディングエージェントにGoaスキルを追加

オープンソース。MITライセンス。Goで構築。

設計例を選択
design/catalog.go設計の抜粋
Service("catalog", func() {
    JSONRPC(func() { POST("/rpc") })
    Method("lookup", func() {
        Payload(LookupPayload)
        Result(Product)
        HTTP(func() { GET("/products/{sku}") })
        GRPC(func() {})
        JSONRPC(func() {})
    })
})
goa gen example.com/catalog/design

エージェントが書かずに済むコード

  • HTTP + gRPC + JSON-RPC
  • 型付きクライアント
  • サービスインターフェース
  • 検証とコーデック
  • OpenAPI + Protocol Buffers
  • CLIクライアント
design/catalog.go設計の抜粋
Agent("assistant", "Find products", func() {
    Use("catalog", func() {
        Tool("lookup", "Find a product by SKU", func() {
            Args(LookupPayload)
            Return(Product)
            BindTo("lookup")
        })
    })
})
goa gen example.com/catalog/design

エージェントが書かずに済むコード

  • ツールのJSONスキーマ
  • 型付きペイロードのコーデック
  • サービスとの接続
  • 型付きツール記述子
  • ランタイム登録
  • AGENTS_QUICKSTART.md
完全な例を見る

コーディングエージェントの仕事を、絞り込む。

機能を追加するたびに、モデルがアーキテクチャを読み解き直したり、同じ接続コードを書き直したりする必要はありません。

生成に任せ、その分のトークンを省く。
生成されたトランスポート、クライアント、スキーマは、LLMが書く必要のないコードです。その分の作業をドメインロジック、有用なテスト、より良いツールに回せます。
コンテキストの基準を、設計に。
型、制約、説明、メソッドを設計に集約。一貫した生成コードの構造が、エージェントにコードベースの地図と変更すべき場所を示します。
契約のずれを、コンパイルエラーに。
契約を変えたら、すべての表現をまとめて再生成。Goが型の合わない呼び出し元や実装を検出し、エージェントの次の修正に具体的な手掛かりを与えます。
コーディングエージェントと開発する

エージェントに、Goaの作法を。

Goa service designerスキルをプロジェクトにインストール。設計、生成、実装、検証の進め方から、編集するファイルと再生成するファイルの区別まで、コーディングエージェントを導きます。

インストールとワークフロー
npx skills add goadesign/goa --skill goa-service-designer

プロジェクト内で実行。Node.jsとnpmが必要です。

次に、エージェントへ具体的な依頼を:

goa-service-designerスキルを使って、HTTPとgRPCのエンドポイントを持つカタログサービスを追加してください。コードを生成し、商品検索を実装してテストしてください。

ひとつのエコシステム、ふたつの入り口。

サービスからでも、エージェントからでも。その両方でも。同じ設計言語でつながります。

Goa

ひとつの契約。多彩なトランスポート。

サービスを一度定義し、API、クライアント、検証、仕様書をまとめて生成。型付きGoインターフェースの先に、ビジネスロジックを実装します。

HTTP · gRPC · JSON-RPC
同じサービス設計からサーバー、型付きクライアント、CLIクライアントを生成。
ストリーミングも設計で定義
WebSocket, Server-Sent Events, gRPC streaming.
つながりを保つ契約
Goの型、検証、エンコード、エラーマッピング、OpenAPI、Protocol Buffers。
Goaを詳しく見るGitHub

Goa-AI

システムとして設計するエージェント。

ツールと出力を設計し、契約を生成。ランタイムがモデル呼び出し、ツール実行、人間からの入力、永続化ワークフローを調整します。

型付きツールと構造化された回答
スキーマ、コーデック、サービスへのバインディング、完了ヘルパーを生成。
組み合わせと評価
エージェントのツール化、紐付いた子実行、型付き評価スイート、シナリオフック。
運用できる実行基盤
型付きイベント、確認、キャンセル、ポリシー。まずはローカル実行から。永続化にはTemporalを利用。
Goa-AIを詳しく見るGitHub

サービスをAIエコシステムへ。

Goa-AIは、ツールを自社エージェントや他のAIアプリケーションへ提供するための基盤も備えています。

サービスからMCPサーバーを構築。

サービスのメソッドをMCPツールとして公開し、リソースやプロンプトテンプレートも提供。Goa-AIがプロトコル処理とアダプターを生成するため、MCPをアプリケーションの新たなインターフェースにできます。外部MCPツールの利用にも対応します。

MCPサーバーを構築する
MCP("catalog", "1.0.0")
JSONRPC(func() { POST("/mcp") })

Method("lookup", func() {
    Payload(LookupPayload)
    Result(Product)
    Tool("lookup", "Find a product by SKU")
})

Goaサービス内の記述例。ResourceとStaticPromptでMCPの公開機能を拡張できます。

ツールレジストリを、自分で運用。

付属のレジストリサーバーを、共有カタログ兼呼び出しゲートウェイとして運用。ツールセットを公開し、スキーマを検索して、正常なプロバイダーへ呼び出しをルーティングします。エージェントとプロバイダーは独立してデプロイ・スケールできます。RedisとPulseを使用。

ツールレジストリを運用する
catalogsearchbilling
ツールレジストリスキーマの検索。呼び出しの転送。稼働状況の確認。

エージェントとアプリケーション

意図を設計し、繰り返すコードは生成する。

開発者、チーム、コーディングエージェントで共有する、ひとつの開発手順。

  1. 契約を記述する

    型、操作、制約を読みやすいGoの設計に定義します。

  2. ジェネレーターを実行する

    goa genが契約から導出できるコードを生成します。

  3. 動作を実装する

    開発者とエージェントがサービスのロジック、プランナー、テストを書きます。

  4. フィードバックで改善する

    設計を変更したら再生成し、コンパイル、テスト、レビューを行います。

始める前の疑問

コーディングエージェントが書けるのに、なぜGoaを使うのですか?
エージェントは推論によってコードを書き、Goaは設計から契約のコードを導出します。サーバー、クライアント、コーデック、スキーマを個別に書く必要がなくなります。設計にコンテキストを集約し、構造を統一し、変更後の型の不整合をコンパイラーで検出できます。ビジネスロジックとテストはエージェントが実装します。
GoaとGoa-AIの違いは何ですか?
GoaはGoサービスのAPIを設計・生成します。HTTP、gRPC、JSON-RPC、クライアント、検証、仕様書が対象です。Goa-AIは同じDSLと生成器を拡張し、型付きツール、AIエージェント、構造化された完了、評価、MCPサーバーに対応。エージェントランタイムと自分で運用するツールレジストリも提供します。どちらからでも始められ、別途デプロイしたGoaサービスは不要です。
MCPサーバーの構築だけにGoa-AIを使えますか?
はい。GoaサービスにMCP宣言を追加すると、ツール、リソース、プロンプトテンプレートを公開するサーバーを生成できます。生成されたアダプターの先にサービスメソッドを実装します。MCPを提供するためにGoa-AIエージェントを実行する必要はありません。
コード生成はLLMの作業をどう減らしますか?
Goaは、LLMにファイルを書かせることなく、トランスポートと契約のコードを生成します。その分の出力トークンを使った作業を省けます。総削減量はタスク、モデル、コンテキスト、反復回数によって異なるため、テストとレビューを含む変更全体で効果を測定してください。

オープンな基盤でつくる。

GoaとGoa-AIは、Goサービス、エージェント、可観測性、分散システムのためのオープンソースツール群の一部です。

エコシステムを見る

スポンサー

世界中のエンジニアリングチームに信頼されています