GraphQL APIを簡単に作成 & 運用。AWS AppSync をグラレコで解説

2021-11-02
AWS グラレコ解説

Author : 安田 茂樹

※ 本連載では、様々な AWS サービスをグラフィックレコーディングで紹介する awsgeek.com を、日本語に翻訳し、図の解説をしていきます。awsgeek.com は Amazon Web Services, Inc. プリンシパル・テクニカル・エバンジェリスト、ジェリー・ハーグローブが運営しているサイトです。

これまでのグラレコ解説はこちら »

GraphQL とは ?

GraphQL は、サーバーからのデータに対して、クライアントによるフェッチ、変更、サブスクライブを可能にするデータ言語です。GraphQL クエリでは、サーバーから返されたデータをどのように構造化するかをクライアントが指定します。これによって、クライアントは必要なデータのみを必要なフォーマットでクエリできます。

Web API として有名な RESTful (REST) と比較した場合、主に以下の違いがあります。

 

RESTful (REST)

GraphQL

エンドポイント

操作ごとにエンドポイント (URL) が異なる

(例)
../edit  (編集用URL)
../members/{username}  (ユーザー情報取得用URL)

単一エンドポイント (URL) で全ての操作を行える

データの取得

全データを取得することになるため、取得したデータのフィルタリング処理が必要

(例)
特定のユーザーの名前情報のみを取得したい場合、年齢や住所なども含んだユーザーの全データが返ってくるため、フィルタリング処理が必要

必要なデータのみ取得可能なため、取得したデータのフィルタリング処理が不要
(Under-fetching/Over-fetching 対策)

(例)
特定のユーザーの名前情報のみを取得可能なため、フィルタリング処理が不要

対応するAWSサービス

Amazon API Gateway

AWS AppSync


AWS AppSync について

アプリケーション開発が加速できるという理由から、各組織では API の構築に GraphQL を選択しています。この API により、フロントエンドのデベロッパーは、複数のデータベースやマイクロサービス、そして API に対し、単一の GraphQL エンドポイントから迅速にクエリができるようになります。

AWS AppSync は、GraphQL API の開発を容易にする、フルマネージド型サービスです。このサービスは、AWS DynamoDB や Lambda、その他のデータソースとの安全な接続に必要な、面倒な作業を自動的に処理します。パフォーマンスを向上させるためのキャッシュや、リアルタイムの更新を可能にするためのサブスクリプション、そして、オフラインのクライアントを簡単に同期できるようにするクライアント側のデータストアなどが、簡単に利用できるようになります。デプロイが完了すると、API リクエストのボリュームに合わせた GraphQL API 実行エンジンの自動的なスケールアップとダウンが、AWS AppSync により行われます。


スキーマとは ?

GraphQL スキーマは、どのようなデータ機能をクライアントアプリケーションに対して実行可能にするかを定義します。例えば、スキーマは、どのクエリが利用可能か、アプリケーションがデータをどのようにサブスクライブできるかについて、基盤となるデータソースについて知ることなく指定します。スキーマはアプリケーションのデータモデルから利用できるタイプシステムによって定義されます。


リゾルバーとは ?

リゾルバーとは、クライアントから受け取った GraphQL リクエストをデータソース操作用の命令に変換したり、データソースから受け取った応答を GraphQL レスポンスに再度変換したりする機能のことです。

クライアントから受け取った GraphQL リクエストをデータソース操作用の命令に変換するのには「リクエストテンプレート」、データソースからの応答を GraphQL レスポンスに変換するのには「レスポンステンプレート」と呼ばれるマッピングテンプレートが使用されます。

どちらのマッピングテンプレートも Apache Velocity Template Language (VTL) と呼ばれる言語で記述します。

リゾルバーが対応しているデータソースとしては、図にある AWS サービスの他、HTTP データソースにも対応しています。


リアルタイムにデータ更新を通知可能

AWS AppSync では、Mutation (更新) リクエストによりデータの更新が行われた際に、Subscription (購読) しているクライアント (サブスクライバー) に Pure WebSockets を使用してリアルタイムに更新を通知できます。なお、通知を受け取るためには、クライアント (サブスクライバー) は常時 AWS AppSync サービスに接続しておく必要があります。


オフラインでのデータアクセスに対応

Amplify DataStore を使用することで、オフラインであってもローカルデバイス上でデータの Query (取得) や Mutation (更新) が行えます。Mutation (更新) が行われた場合、オンラインになった際に AWS AppSync サービスに変更がアップロードされ、競合があった場合は解決されます。


まとめ

最後に、全体の図を見てみましょう。

本記事では、GraphQL API を簡単に作成・運用できる AWS のフルマネージド型サービスである AWS AppSync についてご紹介しました。

AWS AppSync の料金等、サービスの詳細に関しましては、こちら をご覧ください。


builders.flash メールメンバーへ登録することで
AWS のベストプラクティスを毎月無料でお試しいただけます

この連載記事のその他の記事はこちら

選択
  • 選択
  • 今話題のブロックチェーンをAWSで実現する仕組みをグラレコで解説 »
  • サーバーレスって何が便利なの ? AWS でサーバーレスを構築するためのサービスをグラレコで解説 »
  • 機械学習のワークフローってどうなっているの ? AWS の機械学習サービスをグラレコで解説 »
  • 外部から AWS のバックエンドサービス利用を実現する仕組みをグラレコで解説 »
  • AWS でデプロイの自動化を実現するベストプラクティスをグラレコで解説 »
  • コンテナを使ってモノリスを分割する方法をグラレコで解説 »
  • クラウドへ移行する理由とそのステップをグラレコで解説 »
  • Windows ワークロードをクラウドへ移行するためのベストプラクティスをグラレコで解説 »
  • サーバーレスのイベントバスって何 ? Amazon EventBridge をグラレコで解説 »
  • サーバーレスで SaaS を構築する方法をグラレコで解説 »
  • 「あなたへのおすすめ」はどう生成するの ? Amazon Personalize で簡単に実現する方法をグラレコで解説 »
  • クラウド設計・運用のベストプラクティス集「AWS Well-Architectedフレームワーク」をグラレコで解説 »
  • 特定の顧客セグメントにメッセージ送信。「Amazon Pinpoint」の仕組みをグラレコで解説 »
  • アプリにユーザー認証機能を簡単に追加できる「Amazon Cognito」をグラレコで解説 »
  • わずか数分で WordPress サイトを構築できる「Amazon Lightsail」をグラレコで解説 »
  • 異なるアプリケーション同士の疎結合を実現。「Amazon SQS」をグラレコで解説 »
  • Web アプリを高速に開発できる「AWS Amplify」をグラレコで解説 »
  • 機械学習の知識ゼロでもテキストデータを分析。Amazon Comprehend をグラレコで解説 »
  • ビジネスデータをまとめて可視化 & 分析。Amazon QuickSight をグラレコで解説
  • 人工衛星の地上局を 1 分単位で利用。AWS Ground Station をグラレコで解説
  • カオスエンジニアリングで本当にカオスにならないための進め方をグラレコで解説
  • GraphQL API を簡単に作成 & 運用。AWS AppSync をグラレコで解説
  • IoT 環境を必要な機能を選択するだけで構築。AWS IoT をグラレコで解説
  • 高い可用性と耐久性のオブジェクトストレージ。Amazon S3 をグラレコで解説
  • サーバーレスでイベント駆動型アプリケーションを実現。AWS Lambda をグラレコで解説
  • データサイエンス教育の強い味方。Amazon SageMaker Studio Lab をグラレコで解説
  • 高速で柔軟な NoSQL データベースサービス。Amazon DynamoDB をグラレコで解説
  • リレーショナルデータベースを簡単・迅速に実現。Amazon RDS をグラレコで解説
  • アプリのワークフローを視覚的に構成。 AWS Step Functions をグラレコで解説
  • データ保護に使う暗号化キーを一元管理。AWS KMS をグラレコで解説
  • アプリケーションへのトラフィックを効率的に負荷分散。Application Load Balancer をグラレコで解説
  • AWS で簡単にコンテナアプリケーションを構築 ! Amazon ECS をグラレコで解説
  • 大規模データセットも簡単クエリ! Amazon Athena をグラレコで解説
  • キャッシュ機能でアプリの高速化を実現 ! Amazon ElastiCache をグラレコで解説
  • 使い慣れたプログラミング言語でクラウド環境を構築 ! AWS CDK をグラレコで解説
  • ストリーミングデータを簡単にキャプチャ、処理、保存 ! Amazon Kinesis Data Streams をグラレコで解説
  • AWS で始める機械学習はじめの一歩 ! AWS の主要な AI/ML サービスをグラレコで解説
  • リレーショナルデータベースをサーバーレス化 ! Amazon Aurora Serverless をグラレコで解説
  • ML 駆動の検索エンジンで企業の情報管理を革新! Amazon Kendra をグラレコで解説
  • オンプレミス、エッジ、どこでも楽々コンテナ管理 ! Amazon EKS Anywhere をグラレコで解説

筆者プロフィール

安田 茂樹
アマゾンウェブサービスジャパン合同会社
技術統括本部 プログラムマネージャー

2014 年にアマゾンジャパン合同会社に入社後、デバイス試験部門にて発売前の数多くの Amazon デバイスの試験に携わる。2019 年にアマゾンウェブサービスジャパン合同会社に入社後、テクニカルコンテンツマネージャーを経て、2021 年より現職。趣味は新しいガジェットを試すこと、旅行、食べ歩き。

AWS のベストプラクティスを毎月無料でお試しいただけます

さらに最新記事・デベロッパー向けイベントを検索

下記の項目で絞り込む
1

AWS を無料でお試しいただけます

AWS 無料利用枠の詳細はこちら ≫
5 ステップでアカウント作成できます
無料サインアップ ≫
ご不明な点がおありですか?
日本担当チームへ相談する