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 →

Apollo iOS をセットアップする

Apollo iOS の入門セクションを参照して、Apollo iOS をプロジェクトに追加する方法を確認してください。

依存関係を追加する

Xcode で必要なパッケージを追加するには、以下の手順に従います:

ステップ 1: Apollo iOS パッケージを追加する

  1. Xcode で、File → Add Package Dependencies... に移動します
  2. 表示されたダイアログで、右上の検索フィールドに以下の URL をペーストします:
https://github.com/apollographql/apollo-ios.git
  1. Xcode がパッケージメタデータを取得するまで待機します(10~30 秒かかる場合があります)。
  2. バージョン制約を設定する: バージョンドロップダウンを選択し、「Up to Next Major Version」 を選択します。範囲を 1.0.0 から開始し、上限を 2.0.0 に設定します。これにより、AWS AppSync Apollo Extensions ライブラリで必要な Apollo iOS 1.x が取得されることを確認します。Apollo iOS 2.x は使用しないでください。
  3. 「Add Package」 を選択します。
  4. プロダクト選択ダイアログで、「Apollo」 チェックボックスにチェックを入れます。アプリターゲットが選択されていることを確認します。「Add Package」 を選択します。

ステップ 2: AWS AppSync Apollo Extensions パッケージを追加する

  1. File → Add Package Dependencies... に移動します
  2. 以下の URL をペーストします:
https://github.com/aws-amplify/aws-appsync-apollo-extensions-swift.git
  1. バージョンを 1.0.0 から 「Up to Next Major Version」 に設定します。
  2. 「Add Package」 を選択し、「AWSAppSyncApolloExtensions」 を選択してターゲットに追加します。

ステップ 3: Amplify Auth を保持する(必要な場合)

認証に Amplify を使用する場合、既存の amplify-swift パッケージはプロジェクトに既に含まれているはずです。AWSPluginsCore がターゲットの Frameworks, Libraries, and Embedded Content に追加されていることを確認します。Apollo クライアントを Cognito 認証で設定する場合に AuthCognitoTokensProvider に必要です。確認するには:

  1. ナビゲータで 青いプロジェクトアイコン を選択し、TARGETS の下のアプリを選択し、General タブを選択します。
  2. Frameworks, Libraries, and Embedded Content までスクロールします。
  3. AWSPluginsCore がリストされていない場合、+ (プラス) ボタンを選択し、リストから選択します。

パッケージの概要

パッケージURLバージョン追加するプロダクト
Apollo iOShttps://github.com/apollographql/apollo-ios.git1.0.0..<2.0.0Apollo
AWS AppSync Apollo Extensionshttps://github.com/aws-amplify/aws-appsync-apollo-extensions-swift.git1.0.0..<2.0.0AWSAppSyncApolloExtensions
Amplify Swift (Amplify Auth を使用する場合)https://github.com/aws-amplify/amplify-swift.git既存を保持AWSPluginsCore

Apollo iOS CLI をインストールする

Apollo iOS CLI (apollo-ios-cli) はコード生成に使用されます。Homebrew では利用できません。以下の方法のいずれかで取得できます:

  1. GitHub Releases からダウンロード(推奨):Apollo iOS Releases に移動し、Apollo iOS ライブラリバージョンと一致するリリースを見つけ、リリースアセットから apollo-ios-cli.tar.gz アセットをダウンロードします。

ダウンロード後:

# アーカイブからバイナリを抽出
tar -xzf apollo-ios-cli.tar.gz
# バイナリを実行可能にする(macOS では必要な場合があります)
chmod +x apollo-ios-cli
# プロジェクトディレクトリに移動します(apollo-codegen-config.json と同じレベル)
mv apollo-ios-cli /path/to/your/project/
  1. ソースからビルドする:一致するタグで apollo-ios リポジトリをクローンし、CLI をビルドします。

バージョン一致は重要です。 Apollo iOS CLI バージョンは、解決された Apollo iOS ライブラリバージョンと正確に一致する 必要があります。一致しない CLI バージョンは、ライブラリと互換性のない Swift ファイルを生成し、すべての生成されたタイプで Type 'PostDetails' does not conform to protocol 'SelectionSet' のようなコンパイルエラーを引き起こします。

解決されたライブラリバージョンを確認するには:

  • Xcode:File → Packages → Resolved Versions(または .xcworkspace/xcshareddata/swiftpm/ ディレクトリの Package.resolved を確認)
  • apollo-ios エントリを探して、正確なバージョンをメモしてください(例:1.25.3
  • その正確なバージョン番号 の CLI リリースをダウンロードします

推奨ワークフロー:

  1. Apollo iOS パッケージをプロジェクトに追加します(上記のステップ 1)
  2. Xcode/SPM にパッケージバージョンを解決させます
  3. 解決されたバージョンを確認します
  4. 一致する Apollo iOS CLI バージョンをダウンロードします
  5. その後、コード生成に進みます

コード生成

schema.json.graphql オペレーションファイルをプロジェクトの graphql/ サブディレクトリに配置します(スキーマと GraphQL オペレーションページで行っているはずです)。プロジェクトディレクトリは以下のようになります:

YourProject/
├── YourProject.xcodeproj
├── schema.json
├── apollo-ios-cli
├── apollo-codegen-config.json
├── graphql/
│ ├── fragments.graphql
│ ├── mutations.graphql
│ ├── queries.graphql
│ └── subscriptions.graphql
└── YourProject/
└── (your Swift source files)

設定を初期化して変更することも、apollo-codegen-config.json を直接作成することもできます。以下が必要な設定です:

{
"schemaNamespace": "ApolloCodeGen",
"input": {
"operationSearchPaths": [
"./graphql/fragments.graphql",
"./graphql/mutations.graphql",
"./graphql/queries.graphql",
"./graphql/subscriptions.graphql"
],
"schemaSearchPaths": [
"./schema.json"
]
},
"output": {
"testMocks": {
"none": {}
},
"schemaTypes": {
"path": "./ApolloCodeGen",
"moduleType": {
"swiftPackageManager": {}
}
},
"operations": {
"inSchemaModule": {}
}
}
}

ご希望であれば、./apollo-ios-cli init --schema-namespace ApolloCodeGen --module-type swiftPackageManager を使用して初期設定を生成してから、operationSearchPathsschemaSearchPaths を上記のパスに一致するように変更できます。デフォルト設定は schemaSearchPaths**/*.graphqls を使用していますが、AppSync はスキーマを schema.json としてエクスポートするため、パスを更新する必要があります。

Swift ファイルを生成します:

./apollo-ios-cli generate

これにより、生成されたすべてのタイプを含む Swift パッケージを含む ApolloCodeGen ディレクトリが作成されます。

生成されたコードを Xcode プロジェクトに追加する

コード生成の後、生成された Swift パッケージをプロジェクトに追加します:

  1. Xcode で、File → Add Package Dependencies... に移動します
  2. ダイアログの 左下 で、「Add Local...」 ボタンを選択します(これは上部の URL 検索フィールドではありません)。
  3. ファイルピッカーで、プロジェクト内の生成された ApolloCodeGen ディレクトリに移動して選択します。
  4. Xcode はこれをローカル Swift パッケージとして認識します。「Add Package」 を選択します。
  5. ApolloCodeGen ライブラリプロダクトがアプリターゲットに追加されていることを確認します。自動的に表示されない場合、ターゲットの General タブ → Frameworks, Libraries, and Embedded Content+ (プラス) を選択 → リストから ApolloCodeGen を選択します。

生成されたタイプとネーミング: すべての生成されたタイプは ApolloCodeGen モジュール内に存在します。Swift コード(列挙型など)で生成されたタイプを参照する場合、完全修飾名 ApolloCodeGen.PostStatus を使用するか、ファイルの最上部に import ApolloCodeGen を追加する必要があります。これは、生成されたモデルがアプリモジュール内に直接存在していた Amplify DataStore とは異なります。例えば:

// 以前 (DataStore):
let status: PostStatus = .active
// 現在 (Apollo):
let status: ApolloCodeGen.PostStatus = .case(.active)
// または: import ApolloCodeGen を使用してから GraphQLEnum<PostStatus> を使用

Apollo クライアントを設定する

Apollo のランタイムコンポーネントは、認可モードとサブスクリプションプロトコルの処理を含む AWS AppSync に接続するように設定する必要があります。AWS AppSync Apollo Extensions ライブラリは必要なロジックを実装しています。

Amplify Gen 2 設定(amplify_outputs.json)を使用する

プロジェクトが Amplify Gen 2 を使用している場合(または Gen 1 設定を変換している場合—下記を参照)、AWSAppSyncConfiguration を使用してエンドポイントを読み取り、認可を自動的に設定できます。

API キー認証の場合:

let store = ApolloStore(cache: InMemoryNormalizedCache())
// 1. amplify_outputs.json から AWS AppSync API 設定を読み取る
let configuration = try AWSAppSyncConfiguration(with: .amplifyOutputs)
// 2. APIKeyAuthorizer で configuration.apiKey を使用
let authorizer = APIKeyAuthorizer(apiKey: configuration.apiKey ?? "")
let interceptor = AppSyncInterceptor(authorizer)
let interceptorProvider = DefaultPrependInterceptorProvider(
interceptor: interceptor,
store: store)
// 3. RequestChainNetworkTransport で configuration.endpoint を使用
let transport = RequestChainNetworkTransport(
interceptorProvider: interceptorProvider,
endpointURL: configuration.endpoint)
let apolloClient = ApolloClient(
networkTransport: transport,
store: store)

Cognito ユーザープール認証の場合(所有者ベースの認可):

import AWSPluginsCore
let store = ApolloStore(cache: InMemoryNormalizedCache())
let configuration = try AWSAppSyncConfiguration(with: .amplifyOutputs)
let authorizer = AuthTokenAuthorizer {
let session = try await Amplify.Auth.fetchAuthSession()
if let tokenProvider = session as? AuthCognitoTokensProvider {
let tokens = try tokenProvider.getCognitoTokens().get()
return tokens.accessToken
}
throw AuthError.unknown("Unable to get Cognito tokens")
}
let interceptor = AppSyncInterceptor(authorizer)
let interceptorProvider = DefaultPrependInterceptorProvider(
interceptor: interceptor,
store: store)
let transport = RequestChainNetworkTransport(
interceptorProvider: interceptorProvider,
endpointURL: configuration.endpoint)
let apolloClient = ApolloClient(
networkTransport: transport,
store: store)

AuthCognitoTokensProvideramplify-swift パッケージから AWSPluginsCore をインポートする必要があります。このライブラリプロダクトをターゲットに必ず追加してください。

Gen 1 から Gen 2 への設定変換: プロジェクトが Amplify Gen 1(amplifyconfiguration.json)を使用している場合、AWSAppSyncConfiguration(with: .amplifyOutputs) は直接動作しません—Gen 2 形式(amplify_outputs.json)が必要です。ampx CLI を使用して既存の Gen 1 バックエンドから amplify_outputs.json を生成できます:

npx ampx generate outputs \
--stack <your-cloudformation-stack-name> \
--out-dir . \
--outputs-version 1

スタック名は amplify/backend/amplify-meta.jsonproviders.awscloudformation.StackName の下)または AWS CloudFormation コンソールで見つかります。または Amplify App ID を使用します:

npx ampx generate outputs \
--app-id <your-amplify-app-id> \
--branch <branch-name> \
--out-dir . \
--outputs-version 1

--outputs-version 1 フラグにより、正しい形式が生成されることを確認します。このコマンドを実行した後、生成された amplify_outputs.json を Xcode プロジェクトに追加します。

Amplify なし(または Gen 1 設定を保持)

設定形式を変換しない場合(例えば、Amplify Auth に既存の Gen 1 amplifyconfiguration.json を引き続き使用したい場合)、Apollo クライアントを手動で設定できます:

API キー認証の場合:

let store = ApolloStore(cache: InMemoryNormalizedCache())
let authorizer = APIKeyAuthorizer(apiKey: "<your-api-key>")
let interceptor = AppSyncInterceptor(authorizer)
let interceptorProvider = DefaultPrependInterceptorProvider(
interceptor: interceptor,
store: store)
let transport = RequestChainNetworkTransport(
interceptorProvider: interceptorProvider,
endpointURL: URL(string: "<your-appsync-endpoint>")!)
let apolloClient = ApolloClient(
networkTransport: transport,
store: store)

Cognito ユーザープール認証の場合(トークン取得に Amplify Auth を使用):

Cognito 認証に Amplify を使用するが Apollo を手動で設定する場合、AppSync 設定からエンドポイント URL を指定し、AuthCognitoTokensProvider を使用して認証トークンを取得する必要があります:

import AWSPluginsCore
let store = ApolloStore(cache: InMemoryNormalizedCache())
// amplifyconfiguration.json または AppSync コンソールからエンドポイント URL を取得
let endpointURL = URL(string: "<your-appsync-endpoint>")!
let authorizer = AuthTokenAuthorizer {
let session = try await Amplify.Auth.fetchAuthSession()
if let tokenProvider = session as? AuthCognitoTokensProvider {
let tokens = try tokenProvider.getCognitoTokens().get()
return tokens.accessToken
}
throw AuthError.unknown("Unable to get Cognito tokens")
}
let interceptor = AppSyncInterceptor(authorizer)
let interceptorProvider = DefaultPrependInterceptorProvider(
interceptor: interceptor,
store: store)
let transport = RequestChainNetworkTransport(
interceptorProvider: interceptorProvider,
endpointURL: endpointURL)
let apolloClient = ApolloClient(
networkTransport: transport,
store: store)

AppSync エンドポイント URL は amplifyconfiguration.jsonapi.<api-name>.endpoint で見つけることができます。または AWS AppSync コンソールの API 設定で見つけることができます。

どのアプローチを使用すればよいですか? Gen 1 プロジェクトを移行していて、設定変換に対処したくない場合、手動エンドポイントアプローチが最も簡単なパスです—Amplify Auth に amplifyconfiguration.json を保持し、Apollo を AppSync エンドポイントに直接ポイントします。統一された単一の設定を使用したい場合は、上記の Gen 2 Config セクションの ampx CLI を使用して amplify_outputs.json に変換します。