Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
GraphQLの オフライン対応した話
Search
takanorip
May 23, 2018
Technology
850
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
GraphQLの オフライン対応した話
takanorip
May 23, 2018
More Decks by takanorip
See All by takanorip
今さら理解するウェブフォントver.2026
takanorip
3
680
AI-Slopなデザインを生まないためのデザインプロセス戦略
takanorip
10
6.2k
「見せる」登壇資料デザインの極意
takanorip
7
1.7k
Design System Documentation Tooling 2025
takanorip
3
3.1k
デザインエンジニアの延長にデザインマネージャーとしての可能性を探る
takanorip
1
1.4k
Tools for Design Engineers other than LLM in the LLM era
takanorip
1
910
Bulletproof Design System with TypeScript
takanorip
7
5.4k
Eleventy3.0 で始める爆速個人ブログ開発!
takanorip
0
320
Webフォント選定の極意!フォントの基本から最新トレンドまで徹底解説
takanorip
6
1.2k
Other Decks in Technology
See All in Technology
ブラウザとサーバーから考えるAI時代のフロントエンド監視
shogo4131
3
860
AIに攻撃される前に、AIに攻撃させる
tsuchikazu
0
170
Kiro Crewをはじめよう
kizawa2020
1
140
"優秀な誰か"の下位互換にならないために
yut0naga1_fa
1
1.7k
WasmをRustにする
sansantech
PRO
0
190
AIカンパニーへの転換を支えた、エンジニアの仕事の再定義
kworkdev
PRO
1
460
Deep Data Security 機能解説
oracle4engineer
PRO
2
790
AgentCoreで実践するハーネスエンジニアリング
yakumo
1
300
日本語に強いオープンな大規模言語モデル「LLM-jp」
odashi
2
540
初対面のメンバーがチームを組み、Claude Codeでゼロからサービスをリリース
mkdev10
1
120
DGX Spark でどこまでハッキングができるのか?
kash1064
0
930
事業活動を AI Ready にする攻めと守りのデータエンジニアリング / data-engineering-for-ai-ready-business
pei0804
7
2.6k
Featured
See All Featured
GraphQLとの向き合い方2022年版
quramy
50
15k
A Soul's Torment
seathinner
8
3.7k
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
430
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
50
10k
The Mindset for Success: Future Career Progression
greggifford
PRO
0
530
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
1
330
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
1
570
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
590
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
63
46k
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
68
58k
YesSQL, Process and Tooling at Scale
rocio
174
15k
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
1
340
Transcript
GraphQLの オフライン対応した話 Takanori Oki @PWA Beginners 勉強会 #4
自己紹介 • 大木尊紀(オオキタカノリ / @takanorip) • 株式会社スマートドライブ フロントエンドエンジニア • Nuxt.js、Polymer、React、など
• Polymer Japan 翻訳チーム
「イヌでもわかる〜」シリーズ Boothで好評発売中!
None
GraphQL?
GraphQL / Apollo Client • GraphQL • APIへリクエストするためのクエリ言語 • apollo-client
• フロントエンドからGraphQLへリクエスト するためのツール
GraphQLのリクエスト結果は ServiceWorkerだけだと キャッシュされない
なぜ?
GraphQLは すべてのリクエストが POSTメソッド だから!
Cache.put と、Cache.add、 Cache.addAll は、 GET リクエストのみ cache に保存できます。 出典:MDN
別途、GraphQLの オフライン対応が必要
じゃあどうするの? • リクエスト結果をIndexedDBなどに保存 • オフラインエラーのときはIndexedDBに 保存したキャッシュに向けて再度リクエストを 投げる • その結果を使ってViewを表示
apollo-cache-persist • GraphQLのキャッシュをオフラインストレージ に入れることで永続化するライブラリ • localStorage、sessionStorage、 localForageに対応してる • https://github.com/apollographql/ apollo-cache-persist
None
補足:localForage • 非同期ストレージ(IndexedDBやWebSQL) をlocalStorageライクなAPIで使えるように してくれる • IndexedDBやWebSQLがサポートされてな いブラウザだとlocalStorageを使う • (localStorageは同期的)
None
apollo-link-retry • ネットワーク接続がオフラインのとき、リクエスト を保持し、オンラインに戻るまで再試行する • オフラインのときにすぐこけない • 間隔や遅延などをコントロールできる
None
Optionの設定 • apollo-clientの設定でキャッシュを優先的に 参照するようにする
None
まとめ
• GraphQLはServiceWorker だけじゃオフライン対応できない • localForageが有能 • キャッシュに対してクエリを投げる
おわり (フォント:BIZ UDフォント)