SlideShare a Scribd company logo
1 of 42
Download to read offline
Tech Dojo
いまからでも遅くない!
GraphQL(StepZen)超入門
IBM Developer
2023/11/30
18時開始予定です。
マイクをオフにして
お待ちください
2
Customer Success, IBM Technology, Japan / © 2023 IBM Corporation
自己紹介
Mayumi.Sakurai@ibm.com
Property Value
氏名 櫻井 檀(さくらい まゆみ)
出身 浙江省
(2023杭州アジア大会開催のところ)
日本歴 2009年〜
所属チーム CSM Automation
HashTag #ITほぼゼロから
3
Customer Success, IBM Technology, Japan / © 2023 IBM Corporation
免責事項
本資料に含まれる情報は可能な限り正確を期しておりますが、
記載された内容に関して、日本アイ・ビー・エム株式会社が
何ら保証するものではありません。
従って、本資料の情報の利用は使用者の責任において
為されるものであり、資料の内容によって受けた
如何なる被害に関しても一切の補償をするものではありません。
4
Customer Success, IBM Technology, Japan / © 2023 IBM Corporation
GraphQLの基本的な
概念がわかる
本Dojoのゴール
5
Customer Success, IBM Technology, Japan / © 2023 IBM Corporation
本日のアジェンダ(座学)
1. GraphQLとは
2. REST APIの課題について
3. GraphQLでできること
4. GraphQLの基本概念
5. ここまでのまとめ
6
Customer Success, IBM Technology, Japan / © 2023 IBM Corporation
本日のアジェンダ(デモ)
1. REST APIとデータベースを取り込んでみる
• REST API
• MySQL
2. クエリーを実行してデータ取得
7
Customer Success, IBM Technology, Japan / © 2023 IBM Corporation
本日のアジェンダ(座学)
1. GraphQLとは
2. REST APIの課題について
3. GraphQLでできること
4. GraphQLの基本概念
5. ここまでのまとめ
8
Customer Success, IBM Technology, Japan / © 2023 IBM Corporation
GraphQLとは(アンケート)
皆さんはGraphQLをどれくらい知っていますか?
1. 全然知らない
2. 聞いたことはある
3.基本的な用語を知っている
4.少し使ったことがある
5.がっつり何か作ったことがある
9
Customer Success, IBM Technology, Japan / © 2023 IBM Corporation
GraphQLとは
API向けクエリ言語
10
Customer Success, IBM Technology, Japan / © 2023 IBM Corporation
GraphQLとは
• Facebook(Meta)で開発
• REST APIのデメリットを補うもの
• 2012年 モバイルAPP向けに開発
• 2015年 オープンソース化
• 2023年 IBM、StepZen社 買収
https://graphql.org/brand/
11
Customer Success, IBM Technology, Japan / © 2023 IBM Corporation
GraphQLとは(StepZenのご紹介)
API/データ提供者が素早くローコードで
GraphQL APIを構築・提供できるマネージド・サービス
①GraphQL API をより迅速に
より少ないコードで構築する
②IBM StepZen Graph Server に
面倒な作業を任せる
③エンタープライズレベルの
セキュリティ
12
Customer Success, IBM Technology, Japan / © 2023 IBM Corporation
GraphQLとは
• Facebook(Meta)で開発
• REST APIのデメリットを補うもの
• 2012年 モバイルAPP向けに開発
• 2015年 オープンソース化
• 2023年 IBM、StepZen社 買収
https://graphql.org/brand/
13
Customer Success, IBM Technology, Japan / © 2023 IBM Corporation
本日のアジェンダ(座学)
1. GraphQLとは
2. REST APIの課題について
3. GraphQLでできること
4. GraphQLの基本概念
5. ここまでのまとめ
14
Customer Success, IBM Technology, Japan / © 2023 IBM Corporation
REST APIの課題について
• オーバーフェッチ(不要なデータ取得)
例:名前と年齢の情報を知りたい
/user/1
[ユーザー情報]
name: Aさん
age: 25
email: aaaaa@.com
createdAt: 2023-08-27 不要なデータ
⇨通信やサーバーサイド側での負荷の増加
15
Customer Success, IBM Technology, Japan / © 2023 IBM Corporation
• アンダーフェッチ(複数リクエスト必要)
[ユーザー情報]
name: Aさん
age: 25
email: aaaaa@.com
createdAt: 2023-08-27
[投稿情報]
title: Aさんの投稿
content: GraphQLは
オーバーフェッチとア
ンダーフェッチを解決
できます。
①/user/1 ②/post/1
⇨画面表示までに時間がかかる上に、通信の負荷も上昇
例:[ユーザー情報]と[投稿情報]を表示させたい
REST APIの課題について
16
Customer Success, IBM Technology, Japan / © 2023 IBM Corporation
ユースケースごとにエンドポイントを作成すれば解決?!
GraphQL
オーバーフェッチ・アンダーフェッチ解決例
REST APIの課題について
エンドポイントが増えすぎて管理が難しくなる…
17
Customer Success, IBM Technology, Japan / © 2023 IBM Corporation
本日のアジェンダ(座学)
1. GraphQLとは
2. REST APIの課題について
3. GraphQLでできること
4. GraphQLの基本概念
5. ここまでのまとめ
18
Customer Success, IBM Technology, Japan / © 2023 IBM Corporation
• 必要なデータだけを取得
例:名前と年齢の情報を知りたい
[ユーザー情報]
name: Aさん
age: 25
⇨REST APIと比べて、通信やサーバーサイド側での負荷が低い
GraphQLで何ができるのか
名前と年齢の情報
19
Customer Success, IBM Technology, Japan / © 2023 IBM Corporation
• 関連する情報も一つのリクエストで取得
[ユーザー情報]
name: Aさん
age: 25
[投稿情報]
title: Aさんの投稿
content: GraphQLはオーバーフェッチ
とアンダーフェッチを解決できます。
⇨ REST APIと比べて、通信の負荷が低い
例:[ユーザー情報]と[投稿情報]を表示させたい
GraphQLで何ができるのか
・[ユーザー情報]の名前と年齢
・[投稿情報]の全内容
20
Customer Success, IBM Technology, Japan / © 2023 IBM Corporation
DB
クラウド
Webアプリ
AI
Request /aaa
/bbb
/ccc
⇨ユースケースが増えればエンドポイントも増える
GraphQLで何ができるのか
• REST APIの通信例
21
Customer Success, IBM Technology, Japan / © 2023 IBM Corporation
DB
クラウド
Webアプリ
AI
・ Query
・ Mutation
GraphQL
GraphQLで何ができるのか
• GraphQLの通信例
⇨エンドポイントの管理が楽に
22
Customer Success, IBM Technology, Japan / © 2023 IBM Corporation
GraphQLで何ができるのか(まとめ)
•必要なデータだけを取得
•関連する情報も一つのリクエストで取得
•エンドポイントの管理が楽
23
Customer Success, IBM Technology, Japan / © 2023 IBM Corporation
本日のアジェンダ(座学)
1. GraphQLとは
2. REST APIの課題について
3. GraphQLでできること
4. GraphQLの基本概念
5. ここまでのまとめ
24
Customer Success, IBM Technology, Japan / © 2023 IBM Corporation
GraphQLの基本概念
DB
クラウド
AI
GraphQLにおける定義
リクエスト
スキーマ リゾルバ
多様なデータソース
クエリ
25
Customer Success, IBM Technology, Japan / © 2023 IBM Corporation
GraphQLの基本概念
クエリ
・Query
データ取得系
・Mutation
データ更新系
・Subscription
リアルタイムにデータ
の更新情報を受ける
※参考
・GraphQLのクエリ(広義)
⇨ データを取得するための全てのリクエストの
こと
・操作としてのクエリ(狭義)
⇨読み取り専用でデータを取得する操作のこと
26
Customer Success, IBM Technology, Japan / © 2023 IBM Corporation
GraphQLの基本概念
Query
{
Person{
name
}
}
Queryによるデータ取得
{
"Person": [
{ “name”: ”Aさん" },
{ “name”: ”Bさん" },
{ “name”: ”Cさん" }
]
}
レスポンス
このQueryは、現在データベースに保存されているすべての人物のリストを返す
27
Customer Success, IBM Technology, Japan / © 2023 IBM Corporation
GraphQLの基本概念
Query
{
Person{
name
age
}
}
Queryによるデータ取得
{
"Person": [
{ “name”: ”Aさん", "age": 40 },
{ "name": ”Bさん", "age": 23 },
{ “name”: ”Cさん", "age": 34 }
]
}
レスポンス
このQueryは、現在データベースに保存されているすべての人物と年齢のリストを返す
28
Customer Success, IBM Technology, Japan / © 2023 IBM Corporation
GraphQLの基本概念
スキーマ
type Person {
name: String!
age: Int!
}
Schema例
・Type(型)
⇨データの種類や構造を定義
・Field(フィールド)
⇨型の中の個々の情報のこと
データの構造を定義のみ、実際のデータ操作は行わない
Type
Field
29
Customer Success, IBM Technology, Japan / © 2023 IBM Corporation
GraphQLの基本概念
スキーマ
type Person {
name: String!
age: Int!
}
Schema例
・Stringのデータ型
⇨文字列
・Intのデータ型
⇨数字
スカラー
(データ型)
データの構造を定義のみ、実際のデータ操作は行わない
30
Customer Success, IBM Technology, Japan / © 2023 IBM Corporation
GraphQLの基本概念
リゾルバ
GraphQLのクエリに対する処理方法を定義
StepZenではディレクティブを用いてリゾルバの動作を指定
→@restディレクティブを使ってREST APIからデータを取得
31
Customer Success, IBM Technology, Japan / © 2023 IBM Corporation
本日のアジェンダ(座学)
1. GraphQLとは
2. REST APIの課題について
3. GraphQLでできること
4. GraphQLの基本概念
5. ここまでのまとめ
32
Customer Success, IBM Technology, Japan / © 2023 IBM Corporation
ここまでのまとめ(再掲)
DB
クラウド
AI
GraphQLにおける定義
リクエスト
スキーマ リゾルバ
多様なデータソース
クエリ
33
Customer Success, IBM Technology, Japan / © 2023 IBM Corporation
本日のアジェンダ(デモ)
1. REST APIとデータソースを取り込んでみる
• REST API
• MySQL
2. クエリーを実行してデータ取得
34
Customer Success, IBM Technology, Japan / © 2023 IBM Corporation
多様なデータソースを
取り込んでみよう
デモ①
デモ①: REST API 、MySQLでGraphQL API構築
①データソースの選択 ②スキーマ自動生成 ③構築したGraphQL APIを確認
36
Customer Success, IBM Technology, Japan / © 2023 IBM Corporation
クエリーを実行して
必要なデータのみ取得
デモ②
デモ②:必要なデータのみをリクエスト→結果を返す
①id
②image
③title
キャラクター
毎に
①②③の情報を
ほしい!
結果を
出力できる!
必要な結果のみ
出力できる!
商品リストの
①②③の情報を
ほしい!
38
Customer Success, IBM Technology, Japan / © 2023 IBM Corporation
GraphQLの基本的な
概念がわかる
まとめ
39
Customer Success, IBM Technology, Japan / © 2023 IBM Corporation
まとめ
1. GraphQLとは
2. REST APIの課題について
3. GraphQLの基本概念
4. デモ
5. まとめ
こんなサイトも参考に・・・
▼GraphQL(StepZen)IBM公式ドキュメント
https://www.ibm.com/products/stepzen
▼StenZen社提供サンプルソース
https://github.com/stepzen-dev/examples
▼デモで使用したStepZenサイト
https://stepzen.com/
40
Customer Success, IBM Technology, Japan / © 2023 IBM Corporation
補足:StepZen名称変更
以下の通り名称変更されました
(変更前)IBM StepZen Graph Server
(変更後)IBM API Connect® Essentials as a Service (SaaS)
https://www.ibm.com/docs/ja/announcements/cloud-pak-integration-202341-mq-934-deliver-new-integration-
capabilities-stepzen-graph-server-is-renamed
41
Customer Success, IBM Technology, Japan / © 2023 IBM Corporation
いろいろTry&Errorしながら
試してみてください。
ありがとうございました
42
Customer Success, IBM Technology, Japan / © 2023 IBM Corporation

More Related Content

Similar to GraphQL超入門(座学).pdf

Git超入門(ハンズオン).pdf
Git超入門(ハンズオン).pdfGit超入門(ハンズオン).pdf
Git超入門(ハンズオン).pdf憲昭 村田
 
リクルートにおけるデータのインフラ化への取組
リクルートにおけるデータのインフラ化への取組リクルートにおけるデータのインフラ化への取組
リクルートにおけるデータのインフラ化への取組Recruit Technologies
 
Oracle Data Miner で始める簡単・高速な機械学習
Oracle Data Miner で始める簡単・高速な機械学習Oracle Data Miner で始める簡単・高速な機械学習
Oracle Data Miner で始める簡単・高速な機械学習Tamakoshi Hironori
 
JapanDreamin24_はじめてのGraphQL×LWC.pptx
JapanDreamin24_はじめてのGraphQL×LWC.pptxJapanDreamin24_はじめてのGraphQL×LWC.pptx
JapanDreamin24_はじめてのGraphQL×LWC.pptxRyota Tabuse
 
20180703 AWS Black Belt Online Seminar Amazon Neptune
20180703 AWS Black Belt Online Seminar Amazon Neptune20180703 AWS Black Belt Online Seminar Amazon Neptune
20180703 AWS Black Belt Online Seminar Amazon NeptuneAmazon Web Services Japan
 
2020/11/19 Global AI on Tour - Toyama プログラマーのための機械学習入門
2020/11/19 Global AI on Tour - Toyama プログラマーのための機械学習入門2020/11/19 Global AI on Tour - Toyama プログラマーのための機械学習入門
2020/11/19 Global AI on Tour - Toyama プログラマーのための機械学習入門Daiyu Hatakeyama
 
リクルートを支える横断データ基盤と機械学習の適用事例
リクルートを支える横断データ基盤と機械学習の適用事例リクルートを支える横断データ基盤と機械学習の適用事例
リクルートを支える横断データ基盤と機械学習の適用事例Tetsutaro Watanabe
 
マルチリージョン・マルチアカウント対応の柔軟な構築ツールを作ってみた
マルチリージョン・マルチアカウント対応の柔軟な構築ツールを作ってみたマルチリージョン・マルチアカウント対応の柔軟な構築ツールを作ってみた
マルチリージョン・マルチアカウント対応の柔軟な構築ツールを作ってみた桂一 中山
 
[db tech showcase Tokyo 2018] #dbts2018 #A22 『最高のデータプラットフォームを、最短でつくる方法』
[db tech showcase Tokyo 2018] #dbts2018 #A22 『最高のデータプラットフォームを、最短でつくる方法』[db tech showcase Tokyo 2018] #dbts2018 #A22 『最高のデータプラットフォームを、最短でつくる方法』
[db tech showcase Tokyo 2018] #dbts2018 #A22 『最高のデータプラットフォームを、最短でつくる方法』Insight Technology, Inc.
 
db techshowcase 2018 最⾼のデータプラットフォームを、 最短でつくる⽅法
db techshowcase 2018 最⾼のデータプラットフォームを、 最短でつくる⽅法db techshowcase 2018 最⾼のデータプラットフォームを、 最短でつくる⽅法
db techshowcase 2018 最⾼のデータプラットフォームを、 最短でつくる⽅法Natsumi Yotsumoto
 
巨大なサービスと膨大なデータを支えるプラットフォーム

巨大なサービスと膨大なデータを支えるプラットフォーム
巨大なサービスと膨大なデータを支えるプラットフォーム

巨大なサービスと膨大なデータを支えるプラットフォーム
Tetsutaro Watanabe
 
IoT時代におけるストリームデータ処理と急成長の Apache Flink
IoT時代におけるストリームデータ処理と急成長の Apache FlinkIoT時代におけるストリームデータ処理と急成長の Apache Flink
IoT時代におけるストリームデータ処理と急成長の Apache FlinkTakanori Suzuki
 
SORACOM Technology Camp 2018 アドバンストラック4 | スモールスタートの次の一手は?成長できるIoTシステムの実例と回避した...
SORACOM Technology Camp 2018 アドバンストラック4 | スモールスタートの次の一手は?成長できるIoTシステムの実例と回避した...SORACOM Technology Camp 2018 アドバンストラック4 | スモールスタートの次の一手は?成長できるIoTシステムの実例と回避した...
SORACOM Technology Camp 2018 アドバンストラック4 | スモールスタートの次の一手は?成長できるIoTシステムの実例と回避した...SORACOM,INC
 
採用担当者必見!\累計6万通以上のスカウト送信実績/ ITエンジニア採用における返信率10%超のスカウトメール術
採用担当者必見!\累計6万通以上のスカウト送信実績/ ITエンジニア採用における返信率10%超のスカウトメール術採用担当者必見!\累計6万通以上のスカウト送信実績/ ITエンジニア採用における返信率10%超のスカウトメール術
採用担当者必見!\累計6万通以上のスカウト送信実績/ ITエンジニア採用における返信率10%超のスカウトメール術AtsushiMurakami10
 
AWS Black Belt Online Seminar 2018 Amazon Sumerian
AWS Black Belt Online Seminar 2018 Amazon SumerianAWS Black Belt Online Seminar 2018 Amazon Sumerian
AWS Black Belt Online Seminar 2018 Amazon SumerianAmazon Web Services Japan
 
IBM Cloud にも「ボタンの欲望」を!ボタンの活用事例と動かし方 / IBM Cloud Community Summit 2019.04
IBM Cloud にも「ボタンの欲望」を!ボタンの活用事例と動かし方 / IBM Cloud Community Summit 2019.04IBM Cloud にも「ボタンの欲望」を!ボタンの活用事例と動かし方 / IBM Cloud Community Summit 2019.04
IBM Cloud にも「ボタンの欲望」を!ボタンの活用事例と動かし方 / IBM Cloud Community Summit 2019.04SORACOM,INC
 
Power platform day summer 19
Power platform day summer 19 Power platform day summer 19
Power platform day summer 19 ssuser6e9dab
 
メディア企業のクラウドとAgile文化 ~ペタバイト級の映画もTVもクラウドへ~
メディア企業のクラウドとAgile文化 ~ペタバイト級の映画もTVもクラウドへ~メディア企業のクラウドとAgile文化 ~ペタバイト級の映画もTVもクラウドへ~
メディア企業のクラウドとAgile文化 ~ペタバイト級の映画もTVもクラウドへ~大貴 蜂須賀
 

Similar to GraphQL超入門(座学).pdf (20)

Git超入門(ハンズオン).pdf
Git超入門(ハンズオン).pdfGit超入門(ハンズオン).pdf
Git超入門(ハンズオン).pdf
 
リクルートにおけるデータのインフラ化への取組
リクルートにおけるデータのインフラ化への取組リクルートにおけるデータのインフラ化への取組
リクルートにおけるデータのインフラ化への取組
 
Oracle Data Miner で始める簡単・高速な機械学習
Oracle Data Miner で始める簡単・高速な機械学習Oracle Data Miner で始める簡単・高速な機械学習
Oracle Data Miner で始める簡単・高速な機械学習
 
JapanDreamin24_はじめてのGraphQL×LWC.pptx
JapanDreamin24_はじめてのGraphQL×LWC.pptxJapanDreamin24_はじめてのGraphQL×LWC.pptx
JapanDreamin24_はじめてのGraphQL×LWC.pptx
 
20180703 AWS Black Belt Online Seminar Amazon Neptune
20180703 AWS Black Belt Online Seminar Amazon Neptune20180703 AWS Black Belt Online Seminar Amazon Neptune
20180703 AWS Black Belt Online Seminar Amazon Neptune
 
2020/11/19 Global AI on Tour - Toyama プログラマーのための機械学習入門
2020/11/19 Global AI on Tour - Toyama プログラマーのための機械学習入門2020/11/19 Global AI on Tour - Toyama プログラマーのための機械学習入門
2020/11/19 Global AI on Tour - Toyama プログラマーのための機械学習入門
 
リクルートを支える横断データ基盤と機械学習の適用事例
リクルートを支える横断データ基盤と機械学習の適用事例リクルートを支える横断データ基盤と機械学習の適用事例
リクルートを支える横断データ基盤と機械学習の適用事例
 
マルチリージョン・マルチアカウント対応の柔軟な構築ツールを作ってみた
マルチリージョン・マルチアカウント対応の柔軟な構築ツールを作ってみたマルチリージョン・マルチアカウント対応の柔軟な構築ツールを作ってみた
マルチリージョン・マルチアカウント対応の柔軟な構築ツールを作ってみた
 
[db tech showcase Tokyo 2018] #dbts2018 #A22 『最高のデータプラットフォームを、最短でつくる方法』
[db tech showcase Tokyo 2018] #dbts2018 #A22 『最高のデータプラットフォームを、最短でつくる方法』[db tech showcase Tokyo 2018] #dbts2018 #A22 『最高のデータプラットフォームを、最短でつくる方法』
[db tech showcase Tokyo 2018] #dbts2018 #A22 『最高のデータプラットフォームを、最短でつくる方法』
 
db techshowcase 2018 最⾼のデータプラットフォームを、 最短でつくる⽅法
db techshowcase 2018 最⾼のデータプラットフォームを、 最短でつくる⽅法db techshowcase 2018 最⾼のデータプラットフォームを、 最短でつくる⽅法
db techshowcase 2018 最⾼のデータプラットフォームを、 最短でつくる⽅法
 
巨大なサービスと膨大なデータを支えるプラットフォーム

巨大なサービスと膨大なデータを支えるプラットフォーム
巨大なサービスと膨大なデータを支えるプラットフォーム

巨大なサービスと膨大なデータを支えるプラットフォーム

 
IoT時代におけるストリームデータ処理と急成長の Apache Flink
IoT時代におけるストリームデータ処理と急成長の Apache FlinkIoT時代におけるストリームデータ処理と急成長の Apache Flink
IoT時代におけるストリームデータ処理と急成長の Apache Flink
 
SORACOM Technology Camp 2018 アドバンストラック4 | スモールスタートの次の一手は?成長できるIoTシステムの実例と回避した...
SORACOM Technology Camp 2018 アドバンストラック4 | スモールスタートの次の一手は?成長できるIoTシステムの実例と回避した...SORACOM Technology Camp 2018 アドバンストラック4 | スモールスタートの次の一手は?成長できるIoTシステムの実例と回避した...
SORACOM Technology Camp 2018 アドバンストラック4 | スモールスタートの次の一手は?成長できるIoTシステムの実例と回避した...
 
採用担当者必見!\累計6万通以上のスカウト送信実績/ ITエンジニア採用における返信率10%超のスカウトメール術
採用担当者必見!\累計6万通以上のスカウト送信実績/ ITエンジニア採用における返信率10%超のスカウトメール術採用担当者必見!\累計6万通以上のスカウト送信実績/ ITエンジニア採用における返信率10%超のスカウトメール術
採用担当者必見!\累計6万通以上のスカウト送信実績/ ITエンジニア採用における返信率10%超のスカウトメール術
 
AWS Black Belt Online Seminar 2018 Amazon Sumerian
AWS Black Belt Online Seminar 2018 Amazon SumerianAWS Black Belt Online Seminar 2018 Amazon Sumerian
AWS Black Belt Online Seminar 2018 Amazon Sumerian
 
GraphQL入門 (AWS AppSync)
GraphQL入門 (AWS AppSync)GraphQL入門 (AWS AppSync)
GraphQL入門 (AWS AppSync)
 
IBM Cloud にも「ボタンの欲望」を!ボタンの活用事例と動かし方 / IBM Cloud Community Summit 2019.04
IBM Cloud にも「ボタンの欲望」を!ボタンの活用事例と動かし方 / IBM Cloud Community Summit 2019.04IBM Cloud にも「ボタンの欲望」を!ボタンの活用事例と動かし方 / IBM Cloud Community Summit 2019.04
IBM Cloud にも「ボタンの欲望」を!ボタンの活用事例と動かし方 / IBM Cloud Community Summit 2019.04
 
Power platform day summer 19
Power platform day summer 19 Power platform day summer 19
Power platform day summer 19
 
気ままに勉強会 第30回 Google Apps Scriptやってる鰹🐟の初めてのPower Apps
気ままに勉強会 第30回 Google Apps Scriptやってる鰹🐟の初めてのPower Apps気ままに勉強会 第30回 Google Apps Scriptやってる鰹🐟の初めてのPower Apps
気ままに勉強会 第30回 Google Apps Scriptやってる鰹🐟の初めてのPower Apps
 
メディア企業のクラウドとAgile文化 ~ペタバイト級の映画もTVもクラウドへ~
メディア企業のクラウドとAgile文化 ~ペタバイト級の映画もTVもクラウドへ~メディア企業のクラウドとAgile文化 ~ペタバイト級の映画もTVもクラウドへ~
メディア企業のクラウドとAgile文化 ~ペタバイト級の映画もTVもクラウドへ~
 

GraphQL超入門(座学).pdf

  • 2. 2 Customer Success, IBM Technology, Japan / © 2023 IBM Corporation 自己紹介 Mayumi.Sakurai@ibm.com Property Value 氏名 櫻井 檀(さくらい まゆみ) 出身 浙江省 (2023杭州アジア大会開催のところ) 日本歴 2009年〜 所属チーム CSM Automation HashTag #ITほぼゼロから
  • 3. 3 Customer Success, IBM Technology, Japan / © 2023 IBM Corporation 免責事項 本資料に含まれる情報は可能な限り正確を期しておりますが、 記載された内容に関して、日本アイ・ビー・エム株式会社が 何ら保証するものではありません。 従って、本資料の情報の利用は使用者の責任において 為されるものであり、資料の内容によって受けた 如何なる被害に関しても一切の補償をするものではありません。
  • 4. 4 Customer Success, IBM Technology, Japan / © 2023 IBM Corporation GraphQLの基本的な 概念がわかる 本Dojoのゴール
  • 5. 5 Customer Success, IBM Technology, Japan / © 2023 IBM Corporation 本日のアジェンダ(座学) 1. GraphQLとは 2. REST APIの課題について 3. GraphQLでできること 4. GraphQLの基本概念 5. ここまでのまとめ
  • 6. 6 Customer Success, IBM Technology, Japan / © 2023 IBM Corporation 本日のアジェンダ(デモ) 1. REST APIとデータベースを取り込んでみる • REST API • MySQL 2. クエリーを実行してデータ取得
  • 7. 7 Customer Success, IBM Technology, Japan / © 2023 IBM Corporation 本日のアジェンダ(座学) 1. GraphQLとは 2. REST APIの課題について 3. GraphQLでできること 4. GraphQLの基本概念 5. ここまでのまとめ
  • 8. 8 Customer Success, IBM Technology, Japan / © 2023 IBM Corporation GraphQLとは(アンケート) 皆さんはGraphQLをどれくらい知っていますか? 1. 全然知らない 2. 聞いたことはある 3.基本的な用語を知っている 4.少し使ったことがある 5.がっつり何か作ったことがある
  • 9. 9 Customer Success, IBM Technology, Japan / © 2023 IBM Corporation GraphQLとは API向けクエリ言語
  • 10. 10 Customer Success, IBM Technology, Japan / © 2023 IBM Corporation GraphQLとは • Facebook(Meta)で開発 • REST APIのデメリットを補うもの • 2012年 モバイルAPP向けに開発 • 2015年 オープンソース化 • 2023年 IBM、StepZen社 買収 https://graphql.org/brand/
  • 11. 11 Customer Success, IBM Technology, Japan / © 2023 IBM Corporation GraphQLとは(StepZenのご紹介) API/データ提供者が素早くローコードで GraphQL APIを構築・提供できるマネージド・サービス ①GraphQL API をより迅速に より少ないコードで構築する ②IBM StepZen Graph Server に 面倒な作業を任せる ③エンタープライズレベルの セキュリティ
  • 12. 12 Customer Success, IBM Technology, Japan / © 2023 IBM Corporation GraphQLとは • Facebook(Meta)で開発 • REST APIのデメリットを補うもの • 2012年 モバイルAPP向けに開発 • 2015年 オープンソース化 • 2023年 IBM、StepZen社 買収 https://graphql.org/brand/
  • 13. 13 Customer Success, IBM Technology, Japan / © 2023 IBM Corporation 本日のアジェンダ(座学) 1. GraphQLとは 2. REST APIの課題について 3. GraphQLでできること 4. GraphQLの基本概念 5. ここまでのまとめ
  • 14. 14 Customer Success, IBM Technology, Japan / © 2023 IBM Corporation REST APIの課題について • オーバーフェッチ(不要なデータ取得) 例:名前と年齢の情報を知りたい /user/1 [ユーザー情報] name: Aさん age: 25 email: aaaaa@.com createdAt: 2023-08-27 不要なデータ ⇨通信やサーバーサイド側での負荷の増加
  • 15. 15 Customer Success, IBM Technology, Japan / © 2023 IBM Corporation • アンダーフェッチ(複数リクエスト必要) [ユーザー情報] name: Aさん age: 25 email: aaaaa@.com createdAt: 2023-08-27 [投稿情報] title: Aさんの投稿 content: GraphQLは オーバーフェッチとア ンダーフェッチを解決 できます。 ①/user/1 ②/post/1 ⇨画面表示までに時間がかかる上に、通信の負荷も上昇 例:[ユーザー情報]と[投稿情報]を表示させたい REST APIの課題について
  • 16. 16 Customer Success, IBM Technology, Japan / © 2023 IBM Corporation ユースケースごとにエンドポイントを作成すれば解決?! GraphQL オーバーフェッチ・アンダーフェッチ解決例 REST APIの課題について エンドポイントが増えすぎて管理が難しくなる…
  • 17. 17 Customer Success, IBM Technology, Japan / © 2023 IBM Corporation 本日のアジェンダ(座学) 1. GraphQLとは 2. REST APIの課題について 3. GraphQLでできること 4. GraphQLの基本概念 5. ここまでのまとめ
  • 18. 18 Customer Success, IBM Technology, Japan / © 2023 IBM Corporation • 必要なデータだけを取得 例:名前と年齢の情報を知りたい [ユーザー情報] name: Aさん age: 25 ⇨REST APIと比べて、通信やサーバーサイド側での負荷が低い GraphQLで何ができるのか 名前と年齢の情報
  • 19. 19 Customer Success, IBM Technology, Japan / © 2023 IBM Corporation • 関連する情報も一つのリクエストで取得 [ユーザー情報] name: Aさん age: 25 [投稿情報] title: Aさんの投稿 content: GraphQLはオーバーフェッチ とアンダーフェッチを解決できます。 ⇨ REST APIと比べて、通信の負荷が低い 例:[ユーザー情報]と[投稿情報]を表示させたい GraphQLで何ができるのか ・[ユーザー情報]の名前と年齢 ・[投稿情報]の全内容
  • 20. 20 Customer Success, IBM Technology, Japan / © 2023 IBM Corporation DB クラウド Webアプリ AI Request /aaa /bbb /ccc ⇨ユースケースが増えればエンドポイントも増える GraphQLで何ができるのか • REST APIの通信例
  • 21. 21 Customer Success, IBM Technology, Japan / © 2023 IBM Corporation DB クラウド Webアプリ AI ・ Query ・ Mutation GraphQL GraphQLで何ができるのか • GraphQLの通信例 ⇨エンドポイントの管理が楽に
  • 22. 22 Customer Success, IBM Technology, Japan / © 2023 IBM Corporation GraphQLで何ができるのか(まとめ) •必要なデータだけを取得 •関連する情報も一つのリクエストで取得 •エンドポイントの管理が楽
  • 23. 23 Customer Success, IBM Technology, Japan / © 2023 IBM Corporation 本日のアジェンダ(座学) 1. GraphQLとは 2. REST APIの課題について 3. GraphQLでできること 4. GraphQLの基本概念 5. ここまでのまとめ
  • 24. 24 Customer Success, IBM Technology, Japan / © 2023 IBM Corporation GraphQLの基本概念 DB クラウド AI GraphQLにおける定義 リクエスト スキーマ リゾルバ 多様なデータソース クエリ
  • 25. 25 Customer Success, IBM Technology, Japan / © 2023 IBM Corporation GraphQLの基本概念 クエリ ・Query データ取得系 ・Mutation データ更新系 ・Subscription リアルタイムにデータ の更新情報を受ける ※参考 ・GraphQLのクエリ(広義) ⇨ データを取得するための全てのリクエストの こと ・操作としてのクエリ(狭義) ⇨読み取り専用でデータを取得する操作のこと
  • 26. 26 Customer Success, IBM Technology, Japan / © 2023 IBM Corporation GraphQLの基本概念 Query { Person{ name } } Queryによるデータ取得 { "Person": [ { “name”: ”Aさん" }, { “name”: ”Bさん" }, { “name”: ”Cさん" } ] } レスポンス このQueryは、現在データベースに保存されているすべての人物のリストを返す
  • 27. 27 Customer Success, IBM Technology, Japan / © 2023 IBM Corporation GraphQLの基本概念 Query { Person{ name age } } Queryによるデータ取得 { "Person": [ { “name”: ”Aさん", "age": 40 }, { "name": ”Bさん", "age": 23 }, { “name”: ”Cさん", "age": 34 } ] } レスポンス このQueryは、現在データベースに保存されているすべての人物と年齢のリストを返す
  • 28. 28 Customer Success, IBM Technology, Japan / © 2023 IBM Corporation GraphQLの基本概念 スキーマ type Person { name: String! age: Int! } Schema例 ・Type(型) ⇨データの種類や構造を定義 ・Field(フィールド) ⇨型の中の個々の情報のこと データの構造を定義のみ、実際のデータ操作は行わない Type Field
  • 29. 29 Customer Success, IBM Technology, Japan / © 2023 IBM Corporation GraphQLの基本概念 スキーマ type Person { name: String! age: Int! } Schema例 ・Stringのデータ型 ⇨文字列 ・Intのデータ型 ⇨数字 スカラー (データ型) データの構造を定義のみ、実際のデータ操作は行わない
  • 30. 30 Customer Success, IBM Technology, Japan / © 2023 IBM Corporation GraphQLの基本概念 リゾルバ GraphQLのクエリに対する処理方法を定義 StepZenではディレクティブを用いてリゾルバの動作を指定 →@restディレクティブを使ってREST APIからデータを取得
  • 31. 31 Customer Success, IBM Technology, Japan / © 2023 IBM Corporation 本日のアジェンダ(座学) 1. GraphQLとは 2. REST APIの課題について 3. GraphQLでできること 4. GraphQLの基本概念 5. ここまでのまとめ
  • 32. 32 Customer Success, IBM Technology, Japan / © 2023 IBM Corporation ここまでのまとめ(再掲) DB クラウド AI GraphQLにおける定義 リクエスト スキーマ リゾルバ 多様なデータソース クエリ
  • 33. 33 Customer Success, IBM Technology, Japan / © 2023 IBM Corporation 本日のアジェンダ(デモ) 1. REST APIとデータソースを取り込んでみる • REST API • MySQL 2. クエリーを実行してデータ取得
  • 34. 34 Customer Success, IBM Technology, Japan / © 2023 IBM Corporation 多様なデータソースを 取り込んでみよう デモ①
  • 35. デモ①: REST API 、MySQLでGraphQL API構築 ①データソースの選択 ②スキーマ自動生成 ③構築したGraphQL APIを確認
  • 36. 36 Customer Success, IBM Technology, Japan / © 2023 IBM Corporation クエリーを実行して 必要なデータのみ取得 デモ②
  • 38. 38 Customer Success, IBM Technology, Japan / © 2023 IBM Corporation GraphQLの基本的な 概念がわかる まとめ
  • 39. 39 Customer Success, IBM Technology, Japan / © 2023 IBM Corporation まとめ 1. GraphQLとは 2. REST APIの課題について 3. GraphQLの基本概念 4. デモ 5. まとめ こんなサイトも参考に・・・ ▼GraphQL(StepZen)IBM公式ドキュメント https://www.ibm.com/products/stepzen ▼StenZen社提供サンプルソース https://github.com/stepzen-dev/examples ▼デモで使用したStepZenサイト https://stepzen.com/
  • 40. 40 Customer Success, IBM Technology, Japan / © 2023 IBM Corporation 補足:StepZen名称変更 以下の通り名称変更されました (変更前)IBM StepZen Graph Server (変更後)IBM API Connect® Essentials as a Service (SaaS) https://www.ibm.com/docs/ja/announcements/cloud-pak-integration-202341-mq-934-deliver-new-integration- capabilities-stepzen-graph-server-is-renamed
  • 41. 41 Customer Success, IBM Technology, Japan / © 2023 IBM Corporation いろいろTry&Errorしながら 試してみてください。 ありがとうございました
  • 42. 42 Customer Success, IBM Technology, Japan / © 2023 IBM Corporation