突然ですが、問題です。
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】解決できる課題とそのユースケースについて
これによって、クライアントとサーバー間を簡単に強力に結びつけることができるみたいです。AWS AppSyncのユースケースとして、
- リアルタイムランキングが表示できる投票機能
- チャット機能
- 通知機能
などが挙げられているのは、そういうわけなんですね。
AppSyncの”Sync”というのは、直訳すると「同期」という意味です。アプリを開発する上で、クライアントとバックエンドを同期させるのに最適なGraphQLの開発をサポートするサービス、的な意味だと思われます。
最後まで読んでくださってありがとうございました!
コメント