More Related Content Similar to GraphQLおよびそのエコシステム解説とチュートリアル紹介のためのプレゼンテーション資料 (20) GraphQLおよびそのエコシステム解説とチュートリアル紹介のためのプレゼンテーション資料2. 目次
§1 GraphQL
§1.1 GraphQLとは
➢ RESTとの比較
➢ エコシステム
➢ ユースケース
§1.2 GraphQL SDLについて
➢ GraphQL Playgroundの紹介
§1.3 GraphQLクライアントについて
➢ タグ付きテンプレートリテラル
➢ Apollo Clientの使用例
§1 GraphQL(続き)
§1.4 GraphQLサーバーについて
➢ リゾルバー
➢ Apollo Serverの使用例
参考文献
3. 目次(再掲)
§1 GraphQL
§1.1 GraphQLとは
➢ RESTとの比較
➢ エコシステム
➢ ユースケース
§1.2 GraphQL SDLについて
➢ GraphQL Playgroundの紹介
§1.3 GraphQLクライアントについて
➢ タグ付きテンプレートリテラル
➢ Apollo Clientの使用例
§1 GraphQL(続き)
§1.4 GraphQLサーバーについて
➢ リゾルバー
➢ Apollo Serverの使用例
参考文献
4. §1.1 GraphQLとは
GraphQLは、API(Application Programming Interface)を記述するためのクエリ言語。
典型的なクライアント - サーバー通信を行うWebアプリケーションにおいては、
❖ クライアントが、GraphQLの仕様にしたがったクエリを作成し、リクエスト
❖ サーバーは、すべてのクエリを1つのエンドポイントで受信
GraphQLの仕様にしたがって解析、要求されたデータを過不足なくレスポンス
といった形式で活用される。
REST APIのもつ弱点を克服するべく登場した背景があり、APIを利用するクライアントに
とって柔軟なデータの送受信を可能にする点が強みである。
注意︎
"データベースの技術"であると間違われることもあるGraphQLだが、実際には
データベースに依存しない技術である!
6. ➢ エコシステム
GraphQLは、以下の3つを組み合わせ、活用される。
❖ GraphQL SDL(Schema Definition Language = スキーマ定義言語)
クライアントおよびサーバーが、APIを利用して送受信するデータの構造を
記述するための構文。
1つ1つのデータに型付けをすることができる。
❖ GraphQLクライアント
APIを利用して取得したいデータを、SDLに対応したフォーマット(=クエリ)として
渡すことにより、GraphQLサーバーとの通信を行うもの。
❖ GraphQLサーバー
リゾルバーと呼ばれる関数により、SDLによる定義と対応したデータを生成し、
API呼び出しに応じてレスポンスするもの。
10. ➢ GraphQL Playgroundの紹介
GraphQLのIDEである"GraphQL Playground"により、開発に役立つ機能が利用できる。
"JavaScript + Apollo Server Tutorial"より、Hackernewsのクローン(ローカルホスト)
スキーマに定義された
オブジェクトのフィールドで
取得したいものをエディタに
書き込み、再生ボタンを押下
(クエリの作成・実行)
☞ GraphQL PlaygroundでAPIドキュメントを閲覧、任意︎のクエリを実行 >>
14. ➢ Apollo Clientの使用例
☞ Apollo ClientのセットアップおよびQuery/Mutation/Subscriptionの実行箇所を
コードリーディング >>
❖ セットアップ
react-apollo/src/index.js
❖ Query/Subscription
react-apollo/src/components/LinkList.js
❖ Mutation
react-apollo/src/components/CreateLink.js
15. §1.4 GraphQLサーバーについて
アプリケーションのもつ多くのデータは、
❖ ノード : オブジェクト
❖ エッジ : ノードどうしのリレーション
を用いて"グラフ"として表現することが
できる。
GraphQLサーバーがクエリを受信すると、
アプリケーションのデータグラフから
必要な部分を抜き出してレスポンスする。
注意︎
悪意︎のあるユーザーから、必要以上に複雑で
大きなデータを要求するクエリが送信される
危険もある。
そのため、タイムアウトやスロットリング
といった対策を組み込むことが好ましい。
https://www.apollographql.com/blog/graphql/basics/
the-concepts-of-graphql/
17. ➢ Apollo Serverの使用例
Apollo Server(Node.js)は、人気のGraphQLサーバーの一つに挙げられる。
GraphQLコミュニティとPrismaによる、"JavaScript + Apollo Server Tutorial"の内容を
一部抜粋して紹介する。
ソースコード : https://github.com/howtographql/graphql-js
☞ Apollo ServerのセットアップおよびQuery/Mutation/Subscriptionの実行箇所を
コードリーディング >>
❖ セットアップ
graphql-js/src/index.js
graphql-js/src/schema.graphql
❖ Query
graphql-js/src/resolvers/Query.js
❖ Mutation
graphql-js/src/resolvers/Mutation.js
❖ Subscription
graphql-js/src/resolvers/Subscription.js
18. 目次(再掲)
§1 GraphQL
§1.1 GraphQLとは
➢ RESTとの比較
➢ エコシステム
➢ ユースケース
§1.2 GraphQL SDLについて
➢ GraphQL Playgroundの紹介
§1.3 GraphQLクライアントについて
➢ タグ付きテンプレートリテラル
➢ Apollo Clientの使用例
§1 GraphQL(続き)
§1.4 GraphQLサーバーについて
➢ リゾルバー
➢ Apollo Serverの使用例
参考文献
19. 参考文献
➢ GraphQL
❖ GraphQL
❖ GraphQL Playground
❖ How to GraphQL
❖ React + Apollo Tutorial
❖ JavaScript + Apollo Server Tutorial
❖ Apollo Docs
❖ Reasons to use GraphQL | Top 5 Reasons Why and How to use GraphQL
❖ GraphQL Concepts Visualized
❖ Introduction to Graphs – Data Structure and Algorithm Tutorials
❖ Template literals (Template strings)
❖ declarative programming