AppSyncとは
一言要約
AppSync は AWS の GraphQL ※のマネージドサービス。
※GraphQL は、REST API の限界を補完する形で登場し、必要なデータだけを効率よく取得できるのが特徴です。
よくワカラナイ…
AppSynの理解にたどり着くまでには
①APIとは
②RestAPIとは
③GraphQLとは
④(やっと)AppSynの理解
という順番になります。
さっそく一つ一つ見ていきましょう。
もう少し詳しく
①API とは?
まず「API」とは、アプリケーションがデータや機能を利用するための窓口です。たとえば、スマホアプリがインターネットから最新のニュースを取得する時、ニュースサーバーと通信してデータを受け取るのに「API」を使います。この仕組みがあるおかげで、アプリとサーバーがスムーズにやり取りできるのです。
具体例
- 天気予報アプリ: 気象データを持つサーバーと通信して最新の天気情報を取得。
- SNS アプリ: 自分のアカウントに関する情報や友達の投稿をサーバーから取得して表示。
API は、さまざまなアプリがデータや機能をやり取りするための「共通のルール」を提供するものです。
②REST API とは?
次に、REST API について見てみましょう。REST は、Web アプリケーションで広く使われている API の形式で、各データの種類ごとに異なるURL(エンドポイント)を用意します。そして、HTTP メソッド(GET, POST など)を使ってデータの取得や更新を行います。
REST API の仕組み
たとえば、ブログアプリの場合、以下のようにデータを取得するエンドポイントを設定します。
-
投稿データ:
/posts
という URL にアクセスすると、ブログ記事の一覧が取得できる。 -
コメントデータ:
/comments
という URL にアクセスすると、コメントの一覧が取得できる。 -
ユーザーデータ:
/users
という URL にアクセスすると、ユーザーの情報が取得できる。
これらのエンドポイントに対して個別にリクエストを送るため、複数のデータが必要な場合、通信回数が増えることになります。たとえば、投稿データとコメントデータを同時に取得したいときは、別々のリクエストが必要です。
REST API の課題
REST API は便利ですが、特定のケースでは非効率的になることがあります。たとえば、ブログの詳細ページを表示するために投稿データ・コメントデータ・ユーザーデータの3つが必要な場合、各エンドポイントに3回リクエストを送る必要があり、これが「通信オーバーヘッド」として負担になるのです。
③GraphQL とは?
GraphQL は、REST API の課題を解決するために Facebook が開発した API のクエリ言語です。GraphQL では、単一のエンドポイント(URL)から、複数の種類のデータを一度に取得できるようになります。
GraphQL の仕組み
GraphQL では、クライアント(アプリのユーザー側)が「このデータが欲しい」とリクエスト内容を細かく指定できます。たとえば、ブログの詳細ページを表示するために必要な投稿・コメント・ユーザー情報を一度のリクエストで取得できます。
-
投稿データとコメントデータの同時取得:
query { posts { title, content } comments { text, user } }
というクエリを送ると、必要な投稿データとコメントデータを一度に取得できます。 - 必要なデータだけ取得: 必要なフィールド(例えば投稿のタイトルや本文のみ)を指定できるため、余計なデータが送られてくることがなくなります。
GraphQL のメリット
- 通信回数が減る: 単一エンドポイントで複数のデータをまとめて取得できるため、通信回数が最小限になります。
- 不要なデータを省ける: クエリで必要な情報だけを指定できるので、余計なデータの受け取りを避けられます。
REST API と GraphQL の違い
項目 | REST API | GraphQL |
---|---|---|
エンドポイント | リソースごとに分けられる | 単一のエンドポイント |
データ取得 | 各リソースに対して個別にリクエスト | 必要なデータをまとめて取得 |
柔軟性 | クライアント側での取得が限定的 | クエリで取得内容を自由に指定 |
通信効率 | 必要なデータごとに通信回数が増える | 通信回数を抑えつつデータ取得 |
このように、REST API はデータごとにエンドポイントが分かれ、アクセス回数が増えやすいのに対し、GraphQL は一度のリクエストで必要なデータを効率的に取得できるため、通信コストが抑えられるのが特徴です。
④Amazon AppSync の役割
AWS の AppSync は、GraphQL API を簡単に利用できるようにしたマネージドサービスです。複数のデータソース(DynamoDB、Lambda、RDS、HTTP API など)に接続して、サーバーレスでスケーラブルな API を構築できます。AppSync は、リアルタイムのデータ更新やロールベースのアクセス制御もサポートしているため、柔軟で安全なアプリケーションを構築するのに役立ちます。
AppSync の主な特徴
- マルチデータソース対応: DynamoDB や Lambda など、複数のデータソースに対応しているため、さまざまなデータを統合しやすい。
- リアルタイム更新: GraphQL のサブスクリプション機能を活用し、リアルタイムでデータ更新が可能。これにより、チャットアプリやライブデータ表示のようなリアルタイム機能が必要なアプリに最適。
- セキュリティと RBAC: Amazon Cognito と連携して、ユーザー認証やロールベースのアクセス制御(RBAC)を簡単に実現可能。これにより、特定のユーザーグループのみが特定のデータにアクセスできるように設定できます。
もっと詳しくはBlackBeltから
まとめ
AppSync と GraphQL は、API 開発を一歩進めた新しいツールです。これらを使うことで、必要なデータだけを効率よく取得し、シンプルで柔軟な API を構築することができます。特に、REST API で生じがちな通信オーバーヘッドを解消し、一度のリクエストで複数のデータを取得できるのは大きなメリットです。
今や Web アプリケーションやモバイルアプリには、迅速でシンプル、そして拡張性のあるデータ取得方法が求められています。AppSync は、GraphQL の特徴を活かし、AWS の堅牢なインフラでそれを実現できるようにした強力なツールです。アプリ開発において、データの取得や操作をもっとシンプルにしたいと感じているなら、一度 AppSync と GraphQL を試してみてはいかがでしょうか。新しい API 開発のスタイルに出会えるかもしれません!