👏

Apollo iOSをXCode / Swiftに設定する方法

2024/05/19に公開

Apollo iOSでGraphQLのデータをフェッチするまでに1日弱かかったので、備忘録として記録します。
(別途、時間ができた時に写真等も整理する予定です。)

以下2つの記事を参考に進めました。
https://zenn.dev/u_dai/articles/e344a130919281
https://zenn.dev/u_dai/articles/e344a130919281

1. packagesからapollo-iosをインストールする

https://github.com/apollographql/apollo-ios.git

  1. XCodeのプロジェクト名で右クリック > Add Package Dependencies...
  2. 右上の検索欄に上記のGitHubのURLを貼り付け検索を実行
    Macの任意のディレクトリで以下を実行
  3. apollo-iosをAddPackage
  4. 「Apollo」と「ApolloWebSocket」のAddtoTargetでプロジェクトを選択し右下のAddPackageをクリックする
  5. XCodeのPackageDependenciesにApolloがあることを確認する
  6. XCodeのプロジェクト名で右クリック>(Apollo)Install CLIをクリック
    (この作業でプロジェクトのルートディレクトリにapollo-ios-cliがシンボリックリンクで作成されます)

2. スキーマファイルのダウンロード

  1. Macの任意のディレクトリで以下を実行
npm install -g apollo
npm install -g graphql
  1. GraphQLサーバーからschemaをダウンロード
    今回はHasuraでGraphQLサーバーを構築したため以下のコマンドを実行しています
npx apollo schema:download --endpoint={https://...} schema.json --header="x-hasura-admin-secret: {YOUR_SECRET}"

3. GraphQLのクエリドキュメントを作成

  1. ターミナルでXCodeのプロジェクトフォルダに移動する
  2. プロジェクトのルートディレクトリに「GraphQL」フォルダを作成
  3. 「GraphQL」フォルダの中に「documents」フォルダを作成
  4. 「documents」フォルダの中にクエリを記述した.graphqlファイルを作成
    (例) users.graphql
query GetUsers {
  users {
    id
  }
}

4. スキーマファイルをXCodeのプロジェクトにコピー

  1. 前手順で作成した「GraphQL」フォルダの下にschema.jsonを

5. apollo-codegen-config.jsonを作成しパッケージをgenerate

  1. 「GraphQL」フォルダでapollo-codegen-config.jsonを作成する
{apollo-ios-cliのパス} init --schema-namespace {任意のネームスペース名} --module-type swiftPackageManager --target-name {XCodeのプロジェクトのTargetName}
  1. 生成されたapollo-codegen-config.jsonのschemaSearchPathsを./schema.jsonに修正する
{
  "schemaNamespace" : "{任意のネームスペース名}",
  "input" : {
    "operationSearchPaths" : [
      "**/*.graphql"
    ],
    "schemaSearchPaths" : [
      "./schema.json"
    ]
  },
  "output" : {
    "testMocks" : {
      "none" : {
      }
    },
    "schemaTypes" : {
      "path" : "./{任意のネームスペース名}",
      "moduleType" : {
        "swiftPackageManager" : {
          "name" : "{XCodeのプロジェクトのTargetName}"
        }
      }
    },
    "operations" : {
      "inSchemaModule" : {
      }
    }
  }
}
  1. パッケージをgenerateする
{apollo-ios-cliのパス} generate

6. XCodeにパッケージとして取り込む

  1. XCodeのプロジェクト名で右クリック > Add Package Dependencies...をクリック
  2. 画面下部の「Add Local」をクリック
  3. 前手順で生成したパッケージフォルダを選択
  4. XCodeのプロジェクト名をクリック
  5. Build PhasesのLink Binary With Librariesから先ほど追加したパッケージを選択

以降は以下記事と同じです。
https://zenn.dev/u_dai/articles/e344a130919281

Discussion