みやたくワークスの徒然ブログ

みやたくワークスの徒然ブログ

PR

×

Profile

たくぷれっさ2号機

たくぷれっさ2号機

Calendar

Archives

2026.05
2026.04
2026.03
2026.02
2026.01
2020.06.02
XML
カテゴリ: AWS

引き続き、AWSとの格闘?の記録です。

テーブルを作ったのでiOSアプリから接続できるようにしよう!ということで、チュートリアルを元に環境構築を開始しました。

ここで結構ハマり、まず環境構築を開始するまでに2〜3日が経過しました。
※そもそも、ドキュメントちゃんと読めよって話なんですがね。。。

一応、経緯だけ書いておくと、DynamoDBのドキュメントには、Mobileアプリから呼び出す場合は「Mobile Hub」というページからプロジェクトを作ってね、と書いてあるのですが、現在は、実際そのリンクに飛ぶと「Amplify」という仕組みのページに飛んでいきます。

結論から言うと、この AmplifyというCLIツールを使用して環境構築が全て行えるのですが、そこを理解するのに時間がかかり、何をすれば Mobile Hub のページにたどり着くんだ!?という無駄な時間をすごしました。

おそらく、Mobile Hub は現行ユーザーは使用できるけど、新規の人は Amplify 使ってねっていう、Amazonさんの親切心だったんでしょう。が、ハマりました。

というわけで、以下 Amplify のインストールから、XCodeのプロジェクトにリソースをインストールしていくところまでの流れです。


まず、Amplify のトップページです。
https://us-east-2.console.aws.amazon.com/amplify/home?region=us-east-2#/




GET STARTED から進みます。
なんか、日々、トップ画面とかチュートリアルが変わっているような気がするんですが、そこは気にせず。

こんなページに進むので、迷わずiOSを選択します。



チュートリアルに進みます。
なんでいきなりチュートリアル?みたいな感じで、ここも嵌る原因の一つとなったのですが、
結果的に Amplify のインストールはこの手順通りに進めていけば全てうまくいきます。
要は、Amplify が 環境構築のためのツールだと理解できなかった故にはまっていたわけでした。


チュートリアルの内容は、コマンドをベースに書き進めていきますが、大前提として以下のツールが必要があるため、ない場合はインストールします。



CocoaPods と Amplify CLI ってやつが、ターミナルから環境構築をお手伝いしてくれるツールです。
役割を理解すると便利です。

Amplify CLI は以下のコマンでインストールできます。

$ sudo npm install -g @aws-amplify/cli

sudo コマンドで発行しないと権限不足でエラーになる可能性があります。

amplify CLI のインストールが終わったら、いざ環境構築。

まず、XCodeでプロジェクトを起動している場合は終了しましょう。

また、チュートリアルにはIAMユーザーの作成手順がありますが、割愛します。
チュートリアル通りに行えば簡単に作成することができます。


1.プロジェクトのディレクトリへ移動
以降の手順は、XCodeのプロジェクトのディレクトリで実行していく必要がありますのでcdコマンドで移動します。

$ cd プロジェクトディレクトリのパス


2.CocoaPodsマネージャでプロジェクトを初期化

$ pod init

Podfile というファイルが作成されます。




中身はこんな感じ。



使用したいPod(ライブラリ)を追記します。




3.Podfile に記述した pod(ライブラリー等々)のインストール

以下のコマンドでPodのダウンロードが行われます。

$ pod install --repo-update




プロジェクトフォルダ内にPodと、workspaceファイルが作成されます。

以降は、xcodeprojファイルではなく、このxcworkspaceファイルを使ってプロジェクトを開きます。

Podsフォルダの中はこんな感じ。



以下のコマンドでワークスペースファイルが開きます。
普通にダブルクリックでも開ますが、なんか手順にあるんで。

$ xed .




4.プロジェクトにAmpify Tools を追加します。

ちょっとここの目的が理解できてないです。

TARGETS に 「New Run Script Phase」を追加します。




新しくできた「Run Script」を「[CP]Check Pods Manifest.lock」の下に移動します。




以下のコマンドを追加します。

"${PODS_ROOT}/AmplifyTools/amplify-tools.sh"




名前を「Run Amplify Tools」に変更。




プロジェクトをビルドしてこの手順は終了。

5.Amplifyの初期化を行います。



amplifyconfiguration.jsonとawsconfiguration.jsonをプロジェクトに追加します。
※チュートリアルの手順を何度も実行しては最初からやり直してを繰り返していたので、定かではないのですが、4の手順実行しておくとこれ必要ないかもしれません。




手動で追加する場合は、プロジェクト名と同一のフォルダの直下に配置します。




6.AppSync API を作成します。(多分)



実行時、いくつか質問されますが、基本的にはデフォルト設定で問題ありません。

AppSyncコンソールを開くと、APIが追加されています。




7.schema.graphqlファイルの編集

今までの手順(よく覚えてないけど、多分6)で、schema.graphqlというファイルが作成されます。



このファイルは、DynamoDB(に限らないかもだけど)のテーブル定義を記述します。

type テーブル名 @model {
項目名 : 型名
}

となります。

@model は、テーブルを作成することを意味します。

これをつけないと、テーブルは作成されず、オブジェクト型のデータとして認識させることができます。
また、型名の後に ! をつけるとNULL不可になります。

IDは、実質、String型らしいですが、ユニークキーとして認識しています。(間違えているかも)




テーブルと、テーブル内で使用するオブジェクト型の定義
下では、オブジェクト「TMGPSSector」のリスト(配列)を定義しています。



7.AppSync にスキーマを登録する。

以下のコマンドで、AppSync にスキーマを登録することができます。

$ amplify push

ここでもいくつか質問されますが、基本的にデフォルトでOKです。

正常終了すと、AppSyncのデータソースにテーブルが追加されます。
データソースからリソースのリンクをクリックしているとテーブルが作成されていることがわかります。





結果、旅立ちへんで作成したテーブルはまったくもって不要となったわけでした。


また、プロジェクトフォルダ内に「API.swift」というファイルが作成されますので、これをXCodeプロジェクトのプロジェクト名と同じ名前のフォルダに追加します。





「API.swift」ファイルは、プログラム(GraphQL)からDynamoDBを操作するためのAPIが全て記述されています。

データソースを作り替えても、「$amplify push」を実行することでこのファイルにも自動的に反映されます。
詳細は、プログラム編で記載しようと思います。


次回は、Swift からテーブルの読み書きをする方法を記載しようと思いますが、現在、プログラム中のため、いつ頃になるかわかりません。


以下、データソースの登録中吐いたエラーと、気づいたことをだらだら書いておきます。

  • テーブル名に_(アンダーバーが入っているとエラーになるっぽい)
Template format error: Resource name TMGPS_BestLap is non alphanumeric.

  • コメントに使ってた // はエラーになる
Syntax Error: Cannot parse the unexpected character "/".

※swiftのstruct定義をそのままコピーしたので。。。
  • ? もついてるとエラーになる
Syntax Error: Cannot parse the unexpected character "?".

  • Double型は存在せず、Floatにする必要がある
The input value type 'Double' is not present when resolving type 'TMGPSLapInput' [@621:1].
  • Bool じゃなくて、Boolean
Unknown type "Bool". Did you mean "Boolean"?
※これもstruct型からコピペしたんでエラー吐きました。
  • schemaに項目の追加、削除等を行って push すると自動的に API.swift は更新されるが、たまにゴミ項目ができる時があるので、そのときは造りなおしたほうが良い?
  • id 、 登録日、変更日は、schema に定義しなくても、勝手に付加されているぽい。
これ、ちょっとびっくりしました。
最初、自分で定義していたんですが、不要みたいだったので登録日と変更日は削除しました。
idはまだ理解できていないので、わかったら追記します。





お気に入りの記事を「いいね!」で応援しよう

Last updated  2020.06.04 18:53:13
コメント(0) | コメントを書く
[AWS] カテゴリの最新記事


■コメント

お名前
タイトル
メッセージ
画像認証
上の画像で表示されている数字を入力して下さい。


利用規約 に同意してコメントを
※コメントに関するよくある質問は、 こちら をご確認ください。


【毎日開催】
15記事にいいね!で1ポイント
10秒滞在
いいね! -- / --
おめでとうございます!
ミッションを達成しました。
※「ポイントを獲得する」ボタンを押すと広告が表示されます。
x
X

© Rakuten Group, Inc.
Mobilize your Site
スマートフォン版を閲覧 | PC版を閲覧
Share by: