Skip to content

GraphQL Federationをクラウドと構築する

マイクロサービス構成でGraphQLを使うなら、Federation(フェデレーション)は避けて通れないアーキテクチャです。しかし、サブグラフの設計やスキーマ合成の設定は手間がかかります。Claude Codeを使えば、この複雑な作業をスムーズに進められます。

サブグラフの定義をClaude Codeに任せる

Section titled “サブグラフの定義をClaude Codeに任せる”

まずはClaude Codeに対して、担当するドメインを伝えながらサブグラフのスキーマ定義を依頼しましょう。たとえば「ユーザーサービス」のサブグラフを作るなら、次のように入力します。

「Apollo Federation v2を使ったユーザーサービスのサブグラフを作ってください。
UserエンティティにはID・名前・メールアドレスを持たせ、@keyディレクティブで定義してください。」

するとClaude Codeは以下のようなスキーマを生成してくれます。

extend schema
@link(url: "https://specs.apollo.dev/federation/v2.0", import: ["@key"])
type User @key(fields: "id") {
id: ID!
name: String!
email: String!
}
type Query {
user(id: ID!): User
}

@keyの指定方法やextend schemaの書き方も含めて、正確なFederation構文で出力してくれるのが便利なポイントです。

スキーマ: データベースのテーブル構造や型定義のこと。

スキーマ合成とRouterの設定を自動化する

Section titled “スキーマ合成とRouterの設定を自動化する”

複数のサブグラフができたら、次はスーパーグラフの合成です。Claude Codeに「Rover CLIを使ってスキーマを合成するコマンドとsupergraph.yamlの設定を書いてほしい」と依頼すれば、すぐに動けるファイル一式を生成してくれます。

supergraph.yaml
federation_version: =2.0.0
subgraphs:
users:
routing_url: http://localhost:4001/graphql
schema:
file: ./users.graphql
products:
routing_url: http://localhost:4002/graphql
schema:
file: ./products.graphql

その後、以下のコマンドでスーパーグラフスキーマを生成できます。

Terminal window
rover supergraph compose --config supergraph.yaml > supergraph-schema.graphql

Claude Codeはエラーが出た際の原因も説明してくれるので、@keyの不整合や型の競合も素早く解消できます。

CLI: Command Line Interface の略。ターミナル(黒い画面)からコマンドを入力して操作するインターフェース。

クラウドデプロイまで一気に仕上げる

Section titled “クラウドデプロイまで一気に仕上げる”

スキーマが完成したら、Apollo RouterをDockerコンテナとしてデプロイする構成をClaude Codeに依頼しましょう。「AWS ECS向けのDockerfile とタスク定義を作ってほしい」のように具体的なクラウド環境を指定するのがコツです。環境変数の渡し方やヘルスチェックの設定まで含めて提案してくれます。

Federation設計は全体像を把握するのが難しいですが、Claude Codeを対話相手にしながら少しずつ組み立てていくと、複雑な構成でも迷わず進められます。ぜひ試してみてください。

Docker: アプリケーションをコンテナと呼ばれる独立した環境で動かすためのツール。環境差異による問題を防ぐ。環境変数: APIキーやデータベース接続情報など、コードに直接書きたくない値をOSやサーバーに設定する仕組み。デプロイ: 開発したコードを本番サーバーに公開・適用すること。