Slide 1

Slide 1 text

5分で分かった気になれる GraphQLの話 2019-11-23 on Devfest in 信州2019

Slide 2

Slide 2 text

whoami? Ryo Uehara(@starling8+) ▪ 県内某社のWebエンジニア(新米) ▪ DockerとNodeJSがメインスタック ▪ プライベートではUbuntuとHaskellい じってる ▪ アカウントの8の数は使ってるサービス で変わります 2

Slide 3

Slide 3 text

1 What is GraphQL? 3

Slide 4

Slide 4 text

What is GraphQL? 4 ▪ ポストRESTAPIとして注目されているWebAPIの規格 ▪ ネストしたリソースやRESTであれば複数のエンドポイ ントへのリクエストを一回のリクエストで取得できる ▪ 複雑なエンドポイントやクエリパラメータを定義するこ となく、必要なフィールドのみをクライアントで取得す ることが可能

Slide 5

Slide 5 text

What is GraphQL? 従来のRESTモデル 5 出典:https://www.sitepoint.com/rest-2-0-graphql/

Slide 6

Slide 6 text

What is GraphQL? GraphQLモデル 6 出典:https://www.sitepoint.com/rest-2-0-graphql/

Slide 7

Slide 7 text

2 Basics of GraphQL 7

Slide 8

Slide 8 text

Basics of GraphQL ~server side~ TypeDefs ▪ 返すオブジェクトやインプット の型を定義 8

Slide 9

Slide 9 text

Basics of GraphQL ~server side~ TypeDefs ▪ Queryにデータ取得のエンドポ イントを定義 ▪ Mutationにデータ操作のエン ドポイントを定義 9

Slide 10

Slide 10 text

Basics of GraphQL ~server side~ Resolvers ▪ Query, Mutationのリクエス トハンドラーを実装 10

Slide 11

Slide 11 text

Basics of GraphQL ~client side~ Query usage ▪ 必要なフィールドを指定して queryを作成 ▪ `/graphql`エンドポイントに POSTメソッドでqueryを送信 11

Slide 12

Slide 12 text

Basics of GraphQL ~client side~ FrameWork ▪ Client FrameWork(Apollo, Relay...)がうまいこと loading, errorのハンドリン グやキャッシュをやってくれる 12

Slide 13

Slide 13 text

3 Good DX 13

Slide 14

Slide 14 text

Good DX ~graphiql~ ドキュメントビューとクエリを試せるGUIが組み込み済み 14

Slide 15

Slide 15 text

Good DX ~versioning~ ▪ バージョン管理をしないで済む ▫ 新しく型定義を追加すれば良い ▫ 破壊的変更は非推奨 ▫ 削除する場合は非推奨項目であることを示すメタデータ を付与して、使われなくなったら削除 15

Slide 16

Slide 16 text

4 Conclusion 16

Slide 17

Slide 17 text

Conclusion GraphQLは ▪ かんたん! ▪ はやい! ▪ たのしい! 17

Slide 18

Slide 18 text

Thanks! Happy coding with GraphQL! You can find me at: @starling888888 on Twitter 18

Slide 19

Slide 19 text

出典 画像出典:https://www.sitepoint.com/rest-2-0-graphql/ コード出典:https://github.com/apollographql/fullstack-tutorial 19

Slide 20

Slide 20 text

CREDITS Special thanks to all the people who made and released these awesome resources for free: ▪ Presentation template by SlidesCarnival ▪ Photographs by Unsplash 20