2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【AppSync】初めてのAppSync #AWS

Last updated at Posted at 2024-11-01

AppSyncとは

image.png

一言要約

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 のメリット

  1. 通信回数が減る: 単一エンドポイントで複数のデータをまとめて取得できるため、通信回数が最小限になります。
  2. 不要なデータを省ける: クエリで必要な情報だけを指定できるので、余計なデータの受け取りを避けられます。

REST API と GraphQL の違い

項目 REST API GraphQL
エンドポイント リソースごとに分けられる 単一のエンドポイント
データ取得 各リソースに対して個別にリクエスト 必要なデータをまとめて取得
柔軟性 クライアント側での取得が限定的 クエリで取得内容を自由に指定
通信効率 必要なデータごとに通信回数が増える 通信回数を抑えつつデータ取得

このように、REST API はデータごとにエンドポイントが分かれ、アクセス回数が増えやすいのに対し、GraphQL は一度のリクエストで必要なデータを効率的に取得できるため、通信コストが抑えられるのが特徴です。


④Amazon AppSync の役割

AWS の AppSync は、GraphQL API を簡単に利用できるようにしたマネージドサービスです。複数のデータソース(DynamoDB、Lambda、RDS、HTTP API など)に接続して、サーバーレスでスケーラブルな API を構築できます。AppSync は、リアルタイムのデータ更新やロールベースのアクセス制御もサポートしているため、柔軟で安全なアプリケーションを構築するのに役立ちます。

AppSync の主な特徴

  1. マルチデータソース対応: DynamoDB や Lambda など、複数のデータソースに対応しているため、さまざまなデータを統合しやすい。
  2. リアルタイム更新: GraphQL のサブスクリプション機能を活用し、リアルタイムでデータ更新が可能。これにより、チャットアプリやライブデータ表示のようなリアルタイム機能が必要なアプリに最適。
  3. セキュリティと RBAC: Amazon Cognito と連携して、ユーザー認証やロールベースのアクセス制御(RBAC)を簡単に実現可能。これにより、特定のユーザーグループのみが特定のデータにアクセスできるように設定できます。

もっと詳しくはBlackBeltから


まとめ

AppSync と GraphQL は、API 開発を一歩進めた新しいツールです。これらを使うことで、必要なデータだけを効率よく取得し、シンプルで柔軟な API を構築することができます。特に、REST API で生じがちな通信オーバーヘッドを解消し、一度のリクエストで複数のデータを取得できるのは大きなメリットです。

今や Web アプリケーションやモバイルアプリには、迅速でシンプル、そして拡張性のあるデータ取得方法が求められています。AppSync は、GraphQL の特徴を活かし、AWS の堅牢なインフラでそれを実現できるようにした強力なツールです。アプリ開発において、データの取得や操作をもっとシンプルにしたいと感じているなら、一度 AppSync と GraphQL を試してみてはいかがでしょうか。新しい API 開発のスタイルに出会えるかもしれません!

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?