Swift プログラミング

【Swift iOS】AWS Amplifyを使ってAppSyncでDynamoDBにデータを保存・取得する【Xcode】

更新日:

現在SwiftでiOSアプリ開発を行なっています。

 

サーバー連携として、AWS AmplifyでAppSyncを使うのですが日本語による解説が少なかったり

公式の手順が非常に分かりにくかったので(自分の知識不足のせいw)その手順をまとめて解説していきます。

 

 

手順1:IAMユーザを作成

はじめに、今回使用するIAMアカウントを作成します。

(次の手順2で、指定する必要があるため先に作成します)

 

アカウントの権限は管理者権限は付与するようにした方が良いと思います。(おそらく権限が弱いと上手く動かないかもしれません)

本記事では、IAMアカウントの作成方法は割愛します。

 

 

手順2:Amplify CLIをインストール

IAMユーザができたら、次はアカウントAmplify CLIをインストールします。

こちらについても今回の趣旨ではないので、割愛させていただきます。

 

 

手順3:Xcodeのアプリに組み込む(Getting Started)

 

ここからは公式のGetting Startedに従いつつ、アプリに組み込んでいきます。

分かりづらいところを補足していく形をとりますので、先に別ウインドウで以下のリンクからページを開いておくとより分かり易いかと思います。

 

Getting Started - AWS Amplify

 

 

以下、説明用にSwiftアプリのプロジェクト名を「sample」とします。(例えば、プロジェクト管理ファイル名はsample.xcodeproject)

 

ステップ1:新しいアプリを作成する

1. Cocoapodsをインストール

Xcodeのアプリケーションディレクトリ(sample(プロジェクト名).xcodeprojectがあるディレクトリ)に移動し、Cocoapodsをインストールします。

 

2. AWSCoreモジュールをインストール

出来上がったPodfileを以下のように編集し、AWSCoreモジュールをインストールします。

 

Podfile

 

「sample」は自分のプロジェクト名になります。

 

 

3. Xcodeを開き直す

Xcodeのプロジェクトを「sample.xcworkspace」を指定して開き直します。

 

ポイント

この時点で、プロジェクトフォルダ内に「sample.xcworkspace」というファイルができています。

これまでXcodeからプロジェクトを開くときは「.xcodeproject」を使用していましたが、

ここからは「sample.xcworkspace」を指定して開きます。

 

ステップ2:バックエンドをセットアップする

1. バックエンド初期設定

Amplifyを使用する初期設定を行います。プロジェクトフォルダーに移動し以下のコマンドを実行します。

 

2. 「awsconfiguration.json」をXcodeにインポートする

【重要】Pushまで終わりAWSに反映できたら、設定ファイルをXcodeにインポートします。

(ここGetting Startedで見逃しがちになるので注意!)

 

ポイント

この時点で、sample(プロジェクトフォルダ)配下に「awsconfiguration.json」という設定ファイルが生成されていると思います。

このファイルをXcodeのProject Navigator(ファイル管理しているナビゲータ)の同じ場所、つまりsample配下にインポートしてください。

 

ステップ3:仕組み

ここの手順は設定には特に関係ないです。

Amplify CLIの基本コマンドの仕様が記載されています。

 

 

ステップ4:APIとデータベースを追加する

1. 使用するGraphQLのAPIを追加する

 

2. AWSに反映させる

 

3. 「API.swift」をXcodeにインポートする

【重要】APIファイルをXcodeにインポートします。

(ここGetting Startedで見逃しがちになるので注意!)

 

ポイント

ステップ2で「awsconfiguration.json」をインポートした時と同様に、今度は「API.swift」をXcodeにインポートしてください。

場所も同じくsample配下です。

 

4. App Syncモジュールを追加してインストール

Podfile

 

ステップ5:アプリに統合する

ここは特に注意点はないです。Getting Staredに通りに行えば問題ありません。

各メソッドの意味だけ簡単に記載しておきます。

 

種類メソッド表記簡単な意味
Mutation.performデータ保存
Query.fetchデータ取得
Subscribe.subscribeリアルタイム

 

ここで説明されている3つの関数「func runMutation()」「func runQuery()」「func subscribe()」はあくまでGetting Staredによる、説明上のサンプル関数で、その名前に意味はないです。(なのでここの名前変えても動きます)

 

実際に動作するのは、上記の表に書いたメソッド表記の部分になります。

 

自分が初めてやったときに、この関数名は固定なのかそうでないのかよく分からなかったので一応書いておきます。

 

ポイント

Mutationを行うと、DynamoDBにリクエストしたデータが保存されます。

なので1度でもMutationを実行すれば、AWS管理コンソールからDynamoDBを確認すると、その情報が入っていることを確認できます。

 

AWS全般やAmplifyを学ぶのにおすすめの教材

 

今回使用した、Amplifyや大元のAWSについて学ぶのに個人的におすすめの教材を紹介します。

かなり今後需要が伸びていく技術だと思いますのでこれを機に興味を持ってもらえたら嬉しいです!

 

Udemy

Udemyの動画学習が非常にコスパ良くておすすめです。

 

おすすめな人動画タイトル
AWSの基本を網羅して学習したい人AWS:ゼロから実践するAmazon Web Services。手を動かしながらインフラの基礎を習得
Amplify , AppSyncに特化して学習をしたい人Learning AWS AppSync with Amplify, AWS CLI, IOS

 

 

書籍

動画じゃなく書籍派だ!という方は以下がおすすめ!

 

Amazon Web Services実践入門 (WEB+DB press plusシリーズ) [ 舘岡守 ]
created by Rinker

 

Amazon Web Services 基礎からのネットワーク&サーバー構築 改訂版 [ 玉川憲 ]
created by Rinker

 

おまけ:エラーで困った時のQ&A

個人的に本手順を行なって、Xcode上エラーが出て困った部分を書いておきます。

 

import AWSAppSyncのエラー

Cocoapods周りが上手くいっていないので、以下のコマンドにてアップデートすると改善される場合があります。

 

AWSAppSyncServiceConfigのエラー

「awsconfiguration.json」のインポートが上手くいってない場合があるので、適切にインポートし直します。

よく読まれている記事

1

  現在5年目のエンジニアで26歳です。 今回は20代の現役エンジニアとして、自分も含め転職について考えている方に向けて20代エンジニア転職に完全特化したおすすめのサービスを3つ紹介していき ...

2

これからエンジニアになりたい、プログラミングを使えるようになりたいという方に向けて 山のようにあるプログラミングスクールの中から、特におすすめなスクールをタイプ別に逆引きで3つ紹介します。 &nbsp ...

3

みなさんはを使っていますでしょうか。   本記事を見ていただいているということは、   プログラミングの勉強でを使うことに興味がある、 もしくはこれから動画を購入したいけどどれを買 ...

-Swift, プログラミング
-, , , ,

Copyright© クラインの備忘壺 , 2019 All Rights Reserved.