[第11回] データストアの設定

AWS Amplify

 

はじめに

 

皆さん。こんにちは! DreamHanksのエルムです。

今回はデータストアの設定について説明していきます。

前回の記事はUIコンポーネントのカスタマイズです。

 

Amplifyによるデータストア (DataStore with Amplify)

 

Amplify DataStoreは、オフラインやオンラインのシナリオで追加のコードを書くことなく、共有データや分散データを活用するためのプログラミングモデルを提供しており、分散されたユーザー間のデータをローカルのみのデータと同様に簡単に扱うことができます。

 

注:これにより、AWSアカウントがなくても、DataStoreを使ってデバイスにローカルにデータを永続化することができるようになります。

 

ゴール (Goal)

アプリケーションにAmplify DataStoreを設定・構成し、デバイス上のデータをローカルに保存するために使用します。

 

  • Amplify CLIバージョン4.21.0以降を実行してインストールします:

 

ローカル環境の構築方法 

 

プラットフォーム・インテグレーションを使用する代わりに、Amplify CLIを単独で使用することもできます。このオプションは、Amplifyがすでに設定されていて、そこにDataStoreを追加したい既存のプロジェクトに特に有効です。

Amplifyを使用するには、まずプロジェクトで使用するための初期化を行う必要があります。

まだ実行していない場合は、このコマンドを実行してください:

 

DataStoreアプリの基本構造は、新しいGraphQL APIをアプリに追加することで作成されます:

 

 

CLIでは、APIを設定するように促されます。APIタイプとして「GraphQL」を選択し、以下のような質問に答えてください。高度な設定を行うように求められたら、「はい、いくつかの追加変更を行います」と答え、衝突検知が有効になっていることを確認します。DataStoreを使用してクラウドとデータを同期する際には、コンフリクトの検出が必要です。

 

 

Idiomatic persistence

 

DataStoreは、プラットフォーム標準のデータ構造を利用して、データスキーマをわかりやすく表現しています。Persistence言語は、Modelインターフェースを満たすデータ型と、savequerydeleteなどの一般的な動詞で定義される操作によって構成されます。

 

データスキーマ (Data schema)

永続的データストアを利用したアプリを作成するには、まずスキーマを定義する必要があります。DataStoreでは、アプリケーションのデータモデルの定義として、GraphQLスキーマファイルを使用します。スキーマには、アプリの機能を表すデータタイプとリレーションシップが含まれています。

 

サンプルスキーマ (Sample schema)

次のステップでは、小さなブログアプリケーションのスキーマから始めましょう。現在はシングルモデルのみです。このベーススキーマには、より多くのコンセプトが提示されるにつれて、新しいタイプや構造が追加されます。

デフォルトではamplify/backend/{api_name}/にあるschema.graphqlファイルを開き、以下のようにモデルPostを定義します:

 

ここからは、プラットフォームに依存しないschema.graphqlを、プラットフォーム固有のデータ構造に変換します。DataStoreは、スキーマがプラットフォームコードに正しく変換されることを保証するために、コード生成に依存しています。

初期設定と同様に、モデルの生成には、IDE integrationまたはAmplify CLIを直接使用することができます。

 

Code generation: Amplify CLI:

モデルはAmplify CLIを使って直接生成することができます。

ターミナルで、プロジェクト/ルートフォルダーにいることを確認し、codegenコマンドを実行します。

生成されたファイルはamplify/generated/models/にあります。

 

 

Amplify DataStoreの初期化: プロジェクトに@aws-amplify/datastoreの依存関係が追加されていると、使用開始時にプラグインが自動的に初期化されます。

 

パーシスタンス操作 (Persistence operations)

 

これで、アプリケーションが永続化操作を実行する準備が整いました。データはローカルのデータベースに保存されるため、デフォルトでオフラインファーストのユースケースが可能になります。

すでにプロジェクトにGraphQL APIが追加されていても、APIプラグインが初期化され、バックエンドがプロビジョニングされて初めて、クラウドの同期が有効になります。

 

データベースへの書き込み機能

データベースへの書き込みは、Postモデルのインスタンスを作成して保存します。

 

データベースからの読み込む方法

データベースから読み取る場合、最も簡単な方法は、指定されたモデルタイプのすべてのレコードを問い合わせることです。

 

おめでとうございます。ローカルデータベースの作成とデータの取得ができました。

 

終わりに

 

今回の記事は以上になります。

次回は[第12回] データ操作を学びましょう。

ご覧いただきありがとうございます。

 

 

コメント