【AWS】AppSyncで使えるGraphQLとは?を初心者でもわかるように用語から丁寧に解説

AppSyncで使えるGraphQLとは? AWS
スポンサーリンク

突然ですが、問題です。

Webアプリケーションに対し、リアルタイムランキングが表示できる投票機能や、チャット機能、通知機能などの実装を容易にするAWSサービスは?
ただし、LambdaやDynamoDB、Elasticsearchなどのバックエンドと連携して使用するものとします。

そうです、正解は、AWS AppSync ですね!

え、聞いたこともないよ、という方、そして特に「AWS AppSync とは何か説明を読んだけど何のサービスだか全然わからなかったよ!!」という方に朗報です。

この記事を読めば、ドがつくほどの素人でも、AWS AppSyncとはどんなサービスなのか、ざっくり理解することが可能です!



AWS AppSync とは?

一応公式サイトから引用しておきます。

AWS AppSync は、GraphQL API の開発を容易にする、完全マネージド型サービスです。このサービスは、AWS DynamoDB や Lambda、その他のデータソースとの安全な接続に必要な、面倒な作業を自動的に処理します。

公式サイトより

GraphQLによる開発をサポートしてくれるサービスっぽいですね。 オフラインプログラミングモデルがサポートされているため、効率的なデータキャッシュが可能、とも書いてありました。

とにかく、「次開発するアプリは、GraphQL使おうぜ!」ってなったら、選択肢に挙がってきそうなサービスですね。

しかし、そもそもGraphQLってなんでしょうか?



GraphQL とは?

GraphQLとは、FacebookがAPI向けに開発した、オープンソースのクエリ言語またはサーバーサイドランタイムのことです。

へー、Facebookが開発した言語なんだー・・・え、それ以外さっぱりわからないって?笑

そうなんです、ここでさらに、

  • API
  • クエリ言語
  • ランタイム

がどういう意味か把握しておく必要があります。「オープンソースの」は、「無料で公開されていて好きにしていい」と読み替えれば大丈夫です。

上記全てわかる方は、なんとなくGraphQLのことがわかったことでしょう。ここで離脱いただいて大丈夫です!

では参りましょう!

API(Application Programming Interface)

直訳は「アプリをプログラムで使うための窓口」

自分が開発するアプリで、別のアプリの機能を使いたいときに使う約束事のことをAPIと言います。 サイトでLINEやtwitterで共有したりつぶやいたり、Google mapやYoutubeを埋め込んだりしているのは、後ろでAPIを使っています。

例えば、食べログの中でGoogle mapが見れるのをご存知ですか?あれはあたかも「食べログ」のアプリの中で地図を見ているように見えますが、実はGoogle mapという別のアプリと連携しているのです。

このように、「食べログ」というあるアプリの中で、「Google map」という別のアプリの機能を使うために必要なのがAPIという仕組みです。

Google mapのように使われる側も、自分のサービスを使ってくれる人が増えるなら、ぜひうちの機能を使ってよ!というケースが多いので、使われる側がAPIを提供することがほとんどです(というか私はそれしか見たことありません)。先ほどの例で言えば、Googleが自ら「Google mapをあなたのアプリで使用する場合は、こういうルールに従って、こういうコードを埋め込んでね〜」という約束事を公開Google Maps Platform)しています。その約束事がAPIです。「食べログ」側は、その約束事にしたがってGoogle mapの機能を使用できます。もちろん、「食べログ」側にもメリットがあります。アプリを開発する時に、地図を表示する機能をゼロから実装するよりも、Googleが提供しているAPIを使えば既に実績のある高機能の地図機能を楽に実装できるし、地図機能に関してはその後の保守・運用の手間もかからないからです。

これ以上のことはよくわからないので技術的な話とかを始めるとそれだけでひとつの記事になってしまうのでこれ以上は割愛しますが、興味のある方は既にわかりやすく書かれている外部サイトへどうぞ!例えば↓
APIとは?意味やメリット、使い方を世界一わかりやすく解説

クエリ言語

直訳で「問い合わせ言語」です。

クエリ言語とは要求や命令を書くためのプログラミング言語、という理解でまずはOK。

web開発系の方なら、SQL文などはご存知では。SQLを叩くことによって、リレーショナルデータベースに「あのデータを探してこい」とか「このデータはこっちに差し替えておいて?」などの要求や命令を送りますよね。SQLもクエリ言語のひとつです。

リレーショナル・データベース?がよくわからない方はこちらの記事もどうぞ。

ランタイム

直訳で「実行時」

転じて、プログラムなどを実行する、動かすときに必要な部品、つまりプログラムやソフトウェアのことです。

したがって、ランタイムとは、あるプログラムを動かすときに必要な別のプログラムのこと、という理解でよいのではないでしょうか。

改めて、GraphQLとは?

さて、ここまでの用語を理解したら、ざっくり理解できたのではないでしょうか。

アプリをプログラムで使うための約束事であるAPIを利用するに当たって、様々なクエリやそれに付随して必要なプログラムを書く必要があります。それに最適化されたプログラミング言語、それがGraphQLです。

もう極限まで削ぎ落とすと、GraphQLは、APIをよりいい感じに実装できる言語!です!

ここまで簡略化してしまうと、色々誤解を生むかもしれませんので、正確な理解を求める方は下記記事も参照してみてください。でも、要するとそういうことです。

GraphQLが解決する問題とその先のユースケース

【初めてのGraphQL】解決できる課題とそのユースケースについて

なぜGraphQLを使うべきではないのか

これによって、クライアントとサーバー間を簡単に強力に結びつけることができるみたいです。AWS AppSyncのユースケースとして、

  • リアルタイムランキングが表示できる投票機能
  • チャット機能
  • 通知機能

などが挙げられているのは、そういうわけなんですね。

AppSyncの”Sync”というのは、直訳すると「同期」という意味です。アプリを開発する上で、クライアントとバックエンドを同期させるのに最適なGraphQLの開発をサポートするサービス、的な意味だと思われます。

はるすと
はるすと

最後まで読んでくださってありがとうございました!

この記事を書いた人
こもれびエンジニア

自然と自由を愛するエンジニア。2021年1月に、大手製造業設計からプログラマ(Rails, AWS)へ転職。動物や自然との触れ合いや、汗を流すのが好き。

/HSP(繊細さん)/18デリケートな象/ストレングスファインダー(1分析思考/2親密性/3学習欲/4調和性/5収集心)、テニス、合気道、登山、あいだみつを、ジブリ、ワンピース、ドラゴンボール、AWS、Ruby on Rails、アイミング

twitterをフォローして、記事にならないちょっとした豆知識もチェック!
AWS
スポンサーリンク
SNSでシェア/コメントして、自分のアウトプット/発信力を高めるのにお使いください。 ↓ 各ページへジャンプ ↓
twitterをフォローして、記事にならないちょっとした豆知識もチェック!
スポンサーリンク
「そんなか」サイト

コメント

タイトルとURLをコピーしました