Slide 1

Slide 1 text

作って学ぶ GraphQL Go Conference mini 2022 Autumn IN SENDAI Kyo Sato

Slide 2

Slide 2 text

Shopify No-Code Mobile-App VIP Appify ってなに?

Slide 3

Slide 3 text

Contents - 自己紹介 - GraphQL について - 終わりに

Slide 4

Slide 4 text

Contents - 自己紹介 - GraphQL について - 終わりに

Slide 5

Slide 5 text

- GraphQL について理解を深めたかった - GraphQL を導入することで得られる メリットについて整理したかった - Appify で使用されている技術 理由

Slide 6

Slide 6 text

自己紹介

Slide 7

Slide 7 text

自己紹介 Name: きょー。 HN: Keyl0ve Hobby: 温泉、旅行、食べ歩 Univ. : 会津大学 B3

Slide 8

Slide 8 text

GraphQLについて 目標: - GraphQL という技術を広める - 実際にサーバを立てて試してもらう

Slide 9

Slide 9 text

GraphQL - Facebook - OSS - API のために作られた クエリ言語 - 既存のデータに対するクエリ を実行するランタイム

Slide 10

Slide 10 text

GraphQL のメリット -クライアントはスキーマをもとに、 欲しいフィールドだけをリクエストできる -リレーションがある値は一度のリクエストで 取得できる -スキーマをもとに開発するので型の不一致が 起きない

Slide 11

Slide 11 text

GraphQL のメリット -クライアントはスキーマをもとに、 欲しいフィールドだけをリクエストできる -リレーションがある値は一度のリクエストで 取得できる -スキーマをもとに開発するので型の不一致が 起きない

Slide 12

Slide 12 text

GraphQL のメリット -クライアントはスキーマをもとに、 欲しいフィールドだけをリクエストできる -リレーションがある値は一度のリクエストで 取得できる -スキーマをもとに開発するので型の不一致が 起きない

Slide 13

Slide 13 text

REST vs GraphQL https://qiita.com/shunp/items/d85fc47b33e1b3a88167

Slide 14

Slide 14 text

REST vs GraphQL HTTP requests HTTP responses GET /api/user?id=1 GET /api/address?user_id=1 { ”id” : 1, “name” : “user1” } { ”street” : “Aoba street”, “city” : “Sendai city” }

Slide 15

Slide 15 text

REST vs GraphQL HTTP requests HTTP responses GET /api/user?id=1 GET /api/address?user_id=1 { ”id” : 1, “name” : “user1” } { ”street” : “Aoba street”, “city” : “Sendai city” } 2回 API を叩いてる!!

Slide 16

Slide 16 text

REST vs GraphQL HTTP requests HTTP responses GET /api/user?id=1 GET /api/address?user_id=1 { ”id” : 1, “name” : “user1” } { ”street” : “Aoba street”, “city” : “Sendai city” } 2回 API を叩いてる!!

Slide 17

Slide 17 text

REST vs GraphQL HTTP requests HTTP responses POST /graphql query { user(id: 1){ id } } { ”user” : { “id”: 1, } }

Slide 18

Slide 18 text

REST vs GraphQL HTTP requests HTTP responses POST /graphql query { user(id: 1){ id name } } { ”user” : { “id”: 1, “name”: “user1” } }

Slide 19

Slide 19 text

REST vs GraphQL HTTP requests HTTP responses POST /graphql query { user(id: 1){ id name address{ street city } { ”user” : { “id”: 1, “name”: “user1”, “address”: { “street”: “Aoba street”, “city”: “Sendai city” } } }

Slide 20

Slide 20 text

REST vs GraphQL HTTP requests HTTP responses POST /graphql query { user(id: 1){ id name address{ street city } { ”user” : { “id”: 1, “name”: “user1”, “address”: { “street”: “Aoba street”, “city”: “Sendai city” } } } 1 回 API を叩くだけで良い

Slide 21

Slide 21 text

GitHub の repository を取ってくる REST https://api.github.com/users/Keyl0ve/repos GraphQL https://api.github.com/graphql

Slide 22

Slide 22 text

GitHub の repository を取ってくる REST https://api.github.com/users/Keyl0ve/repos GraphQL https://api.github.com/graphql 通信の効率は GraphQL の方が上

Slide 23

Slide 23 text

GraphQL のメリット -クライアントはスキーマをもとに、 欲しいフィールドだけをリクエストできる -リレーションがある値は一度で取得できる -スキーマをもとに開発するので型の不一致が 起きない

Slide 24

Slide 24 text

強い型付けが採用されている - パラメータの定義には、スキーマ 定義言語(SDL)が使用されてい る - クライアントに公開されるすべて のAPIはSDLで記述されている

Slide 25

Slide 25 text

GraphQL のデメリット - クエリが複雑になる可能性 - クエリ伝播の問題につながるかもしれ ない - 学習の難しさ - 特にスキーマの設計

Slide 26

Slide 26 text

クエリ伝播の問題、スキーマ設計の難しさ query { user(id: 1){ id name address{ street city history{ people awards{ year{ awardName personName } } sample{ sample sample sample } sample{ sample

Slide 27

Slide 27 text

クエリ伝播の問題、スキーマ設計の難しさ query { user(id: 1){ id name address{ street city history{ people awards{ year{ awardName personName } } sample{ sample sample sample } sample{ sample スキーマを把握していないと、サーバー にとって非常に時間のかかる処理のクエ リを送ってしまう可能性がある

Slide 28

Slide 28 text

GraphQL サーバを立てよう - gqlgen を使ってサーバ 立ててみた - request から respons まで

Slide 29

Slide 29 text

https://qiita.com/Keyl0ve/items/e88b83c13fb86b7c9908 GraphQL、gqlgen を使って サーバ を立てる

Slide 30

Slide 30 text

終わりに GraphQL、REST 使い分け の判断が重要

Slide 31

Slide 31 text

Thanks for listening !! Twitter: Keyl0ve_