Name:
interface
Value:
Amplify has re-imagined the way frontend developers build fullstack applications. Develop and deploy without the hassle.

Page updated May 2, 2026

Maintenance ModeYou are viewing Amplify Gen 1 documentation. Amplify Gen 1 has entered maintenance mode and will reach end of life on May 1, 2027. New project should use Amplify Gen 2. For existing Gen 1 projects, a migration guide and tooling are available to help you upgrade. Switch to the latest Gen 2 docs →

スキーマと GraphQL 操作

Apollo のコード生成プラグインは、スキーマと GraphQL 操作ファイルを読み込んで、型安全な Kotlin コードを生成します。このページでは、AppSync スキーマを取得し、必要な GraphQL 操作を定義する方法について説明します。

AWS AppSync GraphQL スキーマを取得する

AWS AppSync Web コンソールを使用する

  1. AWS AppSync コンソールで API に移動します
  2. 左側で Schema を選択します
  3. Export Schema ドロップダウンを選択して schema.json ファイルをダウンロードします
  1. このファイルをプロジェクト内の app/src/main/graphql/schema.json に配置します (または Apollo Gradle プラグインで設定された場所 — Apollo documentation を参照)

AWS CLI を使用する

  1. AWS CLI で以下のコマンドを実行してスキーマをダウンロードします:
aws appsync get-introspection-schema \
--api-id <api-id> \
--format JSON \
--region <region> \
schema.json

API ID は AWS AppSync コンソールで確認するか、以下のコマンドで実行して確認できます:

aws appsync list-graphql-apis --region <region>
  1. ダウンロードした schema.json をプロジェクト内の app/src/main/graphql/schema.json に配置します。

GraphQL 操作 (クエリ、ミューテーション、サブスクリプション) を準備する

Amplify CLI からのインポート

Amplify CLI は、Amplify API / AppSync プロジェクト用のクエリ (queries.graphql)、ミューテーション (mutations.graphql)、サブスクリプション (subscriptions.graphql) を自動生成できます。クライアントコード生成ガイドに従ってこれらのファイルを生成します。生成されたら、Apollo documentationで指示されたようにプロジェクトに追加します。

Amplify 生成ファイルを使用することは始めるための良い方法ですが、独自のクエリを作成してクエリされるデータをユースケースに限定し、GraphQL フラグメントをアプリケーション全体でモデルを再利用することをお勧めします。

独自に作成する

GraphQL 操作を app/src/main/graphql/ に配置します。これは Apollo Gradle プラグインがこれらのファイルを探すデフォルトの場所です。独自の操作を作成する場合、AWS AppSync Query Editorはテストに役立ちます。

フラグメント

すべての操作で再利用するフラグメントを作成します:

# fragments.graphql
fragment PostDetails on Post {
id
updatedAt
createdAt
title
content
status
rating
_version
_deleted
_lastChangedAt
}

アプリが使用するすべてのフィールドを含めます。 フラグメントには、ミューテーションで必要なすべてのフィールドを含める必要があります。たとえば、content がスキーマで必須フィールド (String!) の場合、フラグメントとミューテーション入力に含める必要があります。そうしないと、ミューテーションは検証エラーで失敗します。

DataStore コンフリクト解決フィールド: AppSync API が DataStore コンフリクト解決を使用する場合、スキーマには _version_deleted、および _lastChangedAt フィールドが含まれます。更新および削除ミューテーションでフラグメントに _version を含めて渡す必要があります。そうしないと、ミューテーションは ConflictUnhandled エラーで失敗します。

ミューテーション

投稿を変更または作成するミューテーションを作成します。PostDetails フラグメントを使用すると、各ミューテーションで同じデータ型が返されます:

# mutations.graphql
# Create
mutation CreatePost($input: CreatePostInput!) {
createPost(input: $input) {
... PostDetails
}
}
# Update
mutation UpdatePost($input: UpdatePostInput!) {
updatePost(input: $input) {
... PostDetails
}
}
# Delete
mutation DeletePost($input: DeletePostInput!) {
deletePost(input: $input) {
id
}
}

クエリ

AWS AppSync から PostDetails を取得するクエリを作成します:

# queries.graphql
# Single Item
query GetPost($id: ID!) {
getPost(id: $id) {
... PostDetails
}
}
# List Items
query GetPosts($nextToken: String) {
listPosts(nextToken: $nextToken) {
items {
... PostDetails
}
nextToken
}
}

サブスクリプション

投稿が作成、更新、または削除されたときにアプリに通知するサブスクリプションを作成します:

# subscriptions.graphql
# Create
subscription onCreateSubscription {
onCreatePost {
... PostDetails
}
}
# Update
subscription onUpdateSubscription {
onUpdatePost {
... PostDetails
}
}
# Delete
subscription onDeleteSubscription {
onDeletePost {
id
}
}

生成されたクラス名: Apollo Kotlin は .graphql ファイルの操作名を使用して、各操作のクラスを生成します。たとえば、subscription onCreateSubscriptionOnCreateSubscription という名前のクラスを生成します。subscription OnCreatePost と名付けた場合、生成されるクラスは OnCreatePostSubscription になります (操作名にまだ含まれていない場合、Apollo は Subscription / Query / Mutation を追加します)。build/generated/source/apollo/ で生成されたコードを確認してクラス名を確認します。