はじめに

Global Solutions事業部の緒方です。

この記事では、GraphQL(クライアントが必要とするデータを効率的に取得するクエリ言語)で APIを提供するAWS AppSyncとAmazon DynamoDBを組み合わせて、ToDoリスト管理アプリをつくってみました。

 

AppSyncとDynamoDBを使用して、サーバーレスアーキテクチャを作るメリットはインフラの管理やスケーリングを考慮しなくて済むところです(ToDoアプリではもともと不要ですが)。また、サーバーレスアーキテクチャは、使用した分だけ課金され、またトラフィックの変動に応じて自動的にスケールするため、過剰なリソース確保による無駄なコストを抑えられます。

AppSyncは、WebSocket(通信プロトコル)を使用したリアルタイムなデータの同期をサポートしており、複数のユーザー間でリアルタイムの更新が可能になり、同時にToDoリストの更新ができます。またAppSyncはオフラインデータ同期もサポートしているのでユーザーがオフラインの状態でアプリを使用した場合でも、オンラインに戻った時にデータが同期されます。

やってみた

DynamoDBのセット

まずToDoリストのアイテムを保存するためのDynamoDBテーブルを作成します。

以下の設定でテーブルを作成します。

  • パーティションキー:id
  • ソートキー:なし
  • テーブル設定:デフォルト設定を使用

AppSyncのAPIの設定

AWS AppSyncのページで「APIの作成」をクリックします。
APIタイプを「GraphQL APIs」を選択、GraphQL APIデータソースを「Design from scratch」を選択する。

その他は以下の設定で作成。

作成ができたら、次はスキーマの設定を行います。

GraphQLスキーマの定義

ここではAPIで扱うデータの構造を定義します。以下画面より定義を行います。

今回した定義を参考までに以下に画像を載せます。

スキーマの定義の仕方はこちらから

データソースの設定

事前に作成していたDynamoDBテーブルを設定してあげる。

リゾルバーの設定

リゾルバーは、GraphQLの操作とデータソース(DynamoDB、Lambda関数、Elasticsearch、HTTPエンドポイントなど)を結びつける役割を果たし、クライアントからのリクエストを受け取り、対応するデータソースにアクセスして、結果をクライアントに返します。

リゾルバーのアタッチ」をクリックし、データソース、リクエストマッピングテンプレート、レスポンスマッピングテンプレートを設定します。

テスト

うまく設定できているか確認するために、AppSyncのコンソール画面でAPIをテストします。

以下はCreatの結果です。

以下はListの結果です。

さいごに

AppSyncとDynamoDBを使ったリアルタイム更新ができるToDoリストアプリの一部のアイテムの作成、取得のみの機能を用意しました。これ以外にもToDoリストとして更新や削除機能、またリアルタイムでの更新通知もセットが可能です。

リアルタイム更新が必要なアプリにはAppSyncとDynamoDBの組み合わせを試してみてください。

この記事を読んでアイレットに興味を持ってくださった方は、ぜひ採用ページをご覧ください!