Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
GraphQL with Apollo Client
Search
Kawakami Natsumi
October 25, 2019
Programming
510
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
GraphQL with Apollo Client
Kawakami Natsumi
October 25, 2019
More Decks by Kawakami Natsumi
See All by Kawakami Natsumi
個人開発サービスを使ってもらうための技術選定
natsumican63
1
1.8k
個人開発を加速させる効率アップ戦術
natsumican63
19
12k
がんばらない個人開発
natsumican63
1
1.4k
スモールスタートのための技術スタック検討
natsumican63
0
340
Other Decks in Programming
See All in Programming
Agentic UI
manfredsteyer
PRO
0
140
Webフレームワークの ベンチマークについて
yusukebe
0
160
AutonomyとControlのあいだ:Graflowで記述するAIエージェント協調
myui
0
120
「なぜそう決めたのか」を残し続ける仕組み ― Notion AI カスタムエージェント × Slack連携による設計判断の自動記録 - NIKKEI Tech Talk #47
niftycorp
PRO
0
110
LLMによるContent Moderationの本番運用の裏側と品質担保への挑戦
suikabar
2
560
New "Type" system on PicoRuby
pocke
1
820
JJUG CCC 2026 Spring: JSpecify で実現する Kotlin フレンドリーな Java API 設計
ternbusty
1
160
DynamoDBには集計系のクエリがないけどなんとかしたい
musan
1
130
IBM Bobを活用したレガシーアプリの最新化
oniak3ibm
PRO
1
190
過去最大のMCPアップデート! 2026-07-28 RC版の謎に迫る
licux
6
240
例外の正しい扱い方 そのエラー try-catchして大丈夫?
jinwatanabe
0
210
net-httpのHTTP/2対応について
naruse
0
470
Featured
See All Featured
Typedesign – Prime Four
hannesfritz
42
3.1k
What's in a price? How to price your products and services
michaelherold
247
13k
Believing is Seeing
oripsolob
1
140
End of SEO as We Know It (SMX Advanced Version)
ipullrank
3
4.2k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
30 Presentation Tips
portentint
PRO
1
320
Testing 201, or: Great Expectations
jmmastey
46
8.2k
Mobile First: as difficult as doing things right
swwweet
225
10k
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
220
Leo the Paperboy
mayatellez
7
1.8k
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
160
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
170
Transcript
GraphQL with Apollo Client
About Me Kawakami Natsumi @natsumican63 Work for Studio Arcana 2
Agenda 1. GraphQLの何がうれしいのか 2. GraphQLクライアントサイド実装 3
GraphQLだと何がうれしいのか 4
5 { "data": { "pokemon": { "name": "Pikachu", "number": "025",
"weight": { "maximum": "6.75kg" }, "height": { "maximum": "0.45m" }, "classification": "Mouse Pokémon", ~~~~~~~~~~ 中略 ~~~~~~~~~~ "evolutions": [ { "name": "Raichu" } ] } } } GET /pokemon/<pikachu> ピカチュウの図鑑番号と、進化先の ポケモンの図鑑番号が知りたい! 1.リソース取得が過不足なく行えてうれしい
6 { "data": { "pokemon": { "name": "Raichu", "number": "026",
"weight": { "maximum": "33.75kg" }, "height": { "maximum": "0.9m" }, "classification": "Mouse Pokémon" ~~~~~~~~~~ 中略 ~~~~~~~~~~ } } } GET /pokemon/<raichu> ピカチュウの図鑑番号と、進化先の ポケモンの図鑑番号が知りたい! RESTでは、目的のデータを取得するのに複数回リクエストを投げる必要があったり、 不要なデータまで取得してしまうケースがある。
ピカチュウの図鑑番号と、進化先の ポケモンの図鑑番号が知りたい! { "data": { "pokemon": { "number": "025", "evolutions":
[ { "name": "Raichu", "number": "026" } ] } } } POST /graphql { pokemon(name: "pikachu") { number evolutions { name number } } } GraphQLはネストしたデータを一度かつ不要なデータを含まずに取得できるため、ラ ウンドトリップやレスポンスサイズを減縮することができる。
2.スキーマによる型安全がうれしい • GraphQLサーバーは、定義されたスキーマに応じてレスポンスを返す • スキーマによる型付けにより、実装から型情報を取得することができる ◦ ドキュメントも自動生成される 8
GraphQLクライアントサイド実装 9
Apollo Client • GraphQLサーバーと通信するためのクライアントサイドライブラリ ◦ React,Vue,Angular,iOSなどの実装がある ◦ Apollo以外だとRelayとか • 便利機能がたくさん
◦ Loading,errorなどの通信状態の管理 ◦ キャッシュ機構による状態管理 ◦ Optimistic UIの実装が簡単 10
11 Apollo Providerで囲ったコンポーネント下でApollo Clientを使うことができる。
graphql-code-genでTypeScript用の型を自動生成する • GraphQLサーバーのエンドポイントからSchemaを取得 ◦ 実装から取得するので乖離がおこらない • クライアントサイドで利用するデータのクエリを書く • 要求したデータの型定義のみが生成される ◦
Nonnull,Nullableの情報も型として表現される 12
Thank you! 13