Amazon AppSyncについて
AWS AppSyncは、 GraphQLをベースとしたアプリケーションのバックエンドを提供するAWSのフルマネージドサービスです。AppSyncを使用すると1つ以上のデータソースからのデータに安全にアクセス、操作、結合するためのAPIを作成でき、よりシンプルなアプリケーション開発をすることができます。AppSyncは必要なデータをGraphQLを使用して正確に取得し、リアルタイムアプリケーションの作成をすることができます。
AppSyncを理解するにはGraphQLの理解が必要です。GraphQLについて簡単にみていきましょう。
GraphQLとは
GraphQLは、 Facebookが開発したWeb APIのためのオープンソースのQuery言語とSchema言語です。かつてスマートフォンの台頭によりスマートフォンやタブレット、PCなどのクロスプラットフォーム対応が必要となりました。RESTful Web API(REST API)が使われていましたが、RESTが苦手とする処理を解決するためにGraphQLが開発されました。
Query言語はGraphQL APIのリクエストのための言語です。定義に従ってクエリを書きサーバーからJSONとしてデータを取得します。処理形態は3種類で、データ取得のQuery、データ変更のMutation、データ更新のSubscriptionです。
Schema言語はGraphQL APIの仕様を記述するための言語です。リクエストされたクエリは、スキーマ言語で記述したスキーマに従ってGraphQL処理系により実行されて、レスポンスを生成します。
GraphQLの特徴
・型指定されたスキーマ
APIドキュメントを主導で記述する必要がなくなり、APIを定義したスキーマをベースにドキュメントを自動生成してくれます
・クライアントからのレスポンス形式の指定
決まった形でしか返さないREST APIに対して、GraphQLは呼び出し元であるクライアントがレスポンス形式を自由に指定することができます。
・サブスクリプション利用したリアルタイム処理
Mutationで更新した際にそのイベントを取得しリアルタイムで通知を行う処理がSubscriptionとして定義されています。
AWS AppSyncのメリット
・ビジネスに合わせたスケーリング
AWS AppSync は Amazon DynamoDB、Amazon Aurora、Amazon Elasticsearch、AWS Lambdaなど沢山のAWSサービスと統合することによって、事実上無制限のスループットとビジネスニーズに合わせて拡張縮小するストレージを持った、非常に高度なアプリケーションを開発することが可能となります。
・リアルタイムサブスクリプションとオフラインアクセス
AWS AppSyncでは数百万台のデバイスとの間のリアルタイムサブスクリプションや、アプリデータへのオフラインアクセスも可能となります。データ競合の検出と解決も可能で、ユーザーがカスタマイズ可能なサーバーサイドでの競合検出と競合解消手段が提供されるので、ユーザーが対応する必要はありません。
・安全なデータアクセス
Amazon AppSync は Amazon CognitoおよびAWS Identity and Access Managementと統合されているため、GraphQLオペレーションにアクセス許可を設定し、ユーザーとアプリのデータを安全に保つことができます。
・複数のソースからのデータを結合
AWS AppSyncではアプリはAmazon DynamoDBのデータにアクセスしたり、AWS Lambda関数をトリガーしたり、Amazon Elasticsearchクエリを実行したりします。これらのソースからのデータを組み合わせて、アプリに必要な正確なデータを得ることができます。
・リアルタイムの共同モバイルおよびウェブアプリ
AWS AppSyncでは、リアルタイムで更新される共有データを使用してコラボレーションアプリを構築できます。アプリケーションコードでGraphQLステートメントを使用して、アプリケーションデータのどの部分をリアルタイムで更新するかを指定するだけで、必要なデータのみがフェッチされるため、メッセージトラフィックが削減され、アプリケーションのパフォーマンスとバッテリー寿命が向上します。
ユースケース
AWS AppSyncはこれらのメリットを活かして以下のユースケースに適しています。
・ソーシャルメディア、チャット、マッチング
AWS AppSyncは、ソーシャルメディア、チャット、マッチングなどのアプリの構築に最適です。これらのアプリには、さまざまなデータタイプとソースを持つ複数のユーザー間でメッセージをやり取りする必要があります。ユーザーはオフラインのときでもアプリの使用をすることができ、ネットワークに再接続したらその時点でデータが更新され、メッセージを送信することができます。
・コラボレーションアプリ
AWS AppSyncは、数百万台のデバイスとの間のリアルタイムサブスクリプションや、アプリデータへのオフラインアクセスも可能という利点を活かし、複数の関係者間のコラボレーションを伴うアプリの構築に特に適しています。リアルタイム機能により、アプリのすべてのユーザー間でデータを共有し、ほぼ即時に更新できます。これらのアプリには、ドキュメント、画像、テキストメッセージ、共有ホワイトボードなど、複数の種類のデータを含めることもできます。AppSyncを使用すると、複数のデータストア間でこれらの異なるデータタイプに簡単にアクセスして更新できます。
・ARおよびVRトレーニングアプリ
AWS AppSyncは ARやVRの医療、教育などのトレーニングアプリケーション開発にも適しています。トレーニングアプリケーションは、データが他の情報に組み込まれ、レッスンのような手順やインタラクティブセッション中にリアルタイムで更新する拡張現実と仮想現実をサポートする必要があります。AppSyncはレッスンのような手順やインタラクティブセッション中にリアルタイムで更新することができます。
まとめ
いかがだったでしょうか。AWS AppSyncについて少しでも理解を深めることができれば幸いです。AppSyncは2016年に公式実装として公開された新しいサービスです。たくさんのメリットを持ちながらREST APIに比べ圧倒的に開発経験者が少ないというデメリットがあります。ぜひ、機会があればAppSyncを使用してみてはいかがでしょうか。