Slide 1

Slide 1 text

0 GraphQLに取り組んだ新卒が ぶつかった壁を共有したい 2023-11-24 第69回NearMe技術勉強会 Kaito Asahi

Slide 2

Slide 2 text

1 このスライドはこんな⽅におすすめ🥁 ● GraphQLってなんぞやと思っていらっしゃる⽅ ○ 「Query, Mutationってなんや?」 ● バックエンドのタスクに取り組み始めた⽅ ○ 「なんか、GraphQLをうちで使うらしいわ〜」 ● 新しい技術に興味ある⽅ ※注意 ● Mutationのハンズオンは含みません(queryだけ) ● typeDefs, resolversの実装は含みません ※過去の勉強会にて、GraphQL、その統合ツールのApolloに関してはこちらにあります! https://speakerdeck.com/nearme_tech/rustzhi-graphqltong-he-turu-apollo-routerwoshi-tutemita-hanzuon

Slide 3

Slide 3 text

2 何で詰んだのか?

Slide 4

Slide 4 text

3 何で詰んだのか? → カスタムの型を利⽤したときに、 subfieldsのselectionを明⽰していなかった

Slide 5

Slide 5 text

4 GraphQLのクイックチェック ● GraphQLとは? ○ APIのための問い合わせ⾔語 ○ クライアント/サーバー通信のための⾔語仕様 ● GraphQLの特徴 ○ 階層構造のクエリ ■ クエリと、レスポンスの構造が⼀致 ○ 強い型付け

Slide 6

Slide 6 text

5 GraphQLのクイックチェック ● RESTと何が異なるの? ○ REST ■ 各エンドポイントに対して、固有のレスポンスを返す ● オーバーフェッチ、アンダーフェッチ ■ エンドポイントの管理が⼤変 ● ~/posts, ~/users ○ GraphQL ■ リソース数に関わらず、エンドポイントは1つ ■ クライアントからの固有の型に適したレスポンスを返す ※参考:https://aws.amazon.com/jp/compare/the-difference-between-graphql-and-rest/

Slide 7

Slide 7 text

6 GraphQLのクイックチェック ● QueryとMutation ○ Query ■ いわゆる、GETメソッド ○ Mutation ■ いわゆる、POST, PUT, DELETEメソッド ● 何かしらデータベースに変化を起こす

Slide 8

Slide 8 text

7 GraphQLのクイックチェック ● 簡単にGraphQLを触ってみる ● https://studio.apollographql.com/ ○ ここから、sign in(もしくはsign up)してください

Slide 9

Slide 9 text

8 GraphQLのクイックチェック ● 簡単にGraphQLを触ってみる ● “Connect your API”を選択

Slide 10

Slide 10 text

9 GraphQLのクイックチェック ● 簡単にGraphQLを触ってみる ● オープンなエンドポイントを今回は利⽤ ○ https://countries.trevorblades.com

Slide 11

Slide 11 text

10 GraphQLのクイックチェック ● 簡単にGraphQLを触ってみる ● そのまま”Continue”

Slide 12

Slide 12 text

11 GraphQLのクイックチェック ● 簡単にGraphQLを触ってみる ● “current”を選択

Slide 13

Slide 13 text

12 GraphQLのクイックチェック ● 簡単にGraphQLを触ってみる ● “Run in Explorer”をクリック

Slide 14

Slide 14 text

13 GraphQLのクイックチェック ● 簡単にGraphQLを触ってみる ● これで準備完了

Slide 15

Slide 15 text

14 GraphQLのクイックチェック ● 簡単にGraphQLを触ってみる ● これで準備完了

Slide 16

Slide 16 text

15 GraphQLのクイックチェック ● 簡単にGraphQLを触ってみる ● “Operation”部分に、以下のクエリを書く query ExampleQuery { countries { code name } }

Slide 17

Slide 17 text

16 GraphQLのクイックチェック ● 簡単にGraphQLを触ってみる ● “Operation”部分に、以下のクエリを書く ○ “countries”の中の、”code”, “name”値を取得 query ExampleQuery { countries { code name } }

Slide 18

Slide 18 text

17 GraphQLのクイックチェック ● 簡単にGraphQLを触ってみる ● “Response”を確認してみましょう

Slide 19

Slide 19 text

18 GraphQLのクイックチェック ● 簡単にGraphQLを触ってみる ● “emoji”を追加する query ExampleQuery { countries { code name emoji } }

Slide 20

Slide 20 text

19 GraphQLのクイックチェック ● 簡単にGraphQLを触ってみる ● “Response”を確認してみましょう

Slide 21

Slide 21 text

20 それで、結論の詰んだポイントはどういうの?

Slide 22

Slide 22 text

21 GraphQLのクイックチェック ● カスタムな型 ● countriesは、カスタムな型である”Country”型の配列を返す ○ ⻑いので⼀部省略

Slide 23

Slide 23 text

22 GraphQLのクイックチェック ● カスタムな型 ● countriesは、カスタムな型である”Country”型の配列を返す ○ StringやIDなどは、スカラー型

Slide 24

Slide 24 text

23 GraphQLのクイックチェック ● カスタムな型 ● countriesは、カスタムな型である”Country”型の配列を返す ○ StringやIDなどは、スカラー型

Slide 25

Slide 25 text

24 GraphQLのクイックチェック ● カスタムな型 ● continentも、カスタムの型”Continent” → 何を返すのかは明⽰しなければいけない(これ指定しないで詰んだことあり...) query ExampleQuery { countries { code name continent } } query ExampleQuery { countries { code name continent { code name } } }

Slide 26

Slide 26 text

25 Thank you