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
860
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
GraphQLの オフライン対応した話
takanorip
May 23, 2018
Transcript
23 slides
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フォント)
More Decks by takanorip
See All by takanorip
今さら理解するウェブフォントver.2026
takanorip
3
1.2k
AI-Slopなデザインを生まないためのデザインプロセス戦略
takanorip
10
6.6k
「見せる」登壇資料デザインの極意
takanorip
7
2k
Design System Documentation Tooling 2025
takanorip
3
3.2k
デザインエンジニアの延長にデザインマネージャーとしての可能性を探る
takanorip
1
1.4k
Tools for Design Engineers other than LLM in the LLM era
takanorip
1
940
Bulletproof Design System with TypeScript
takanorip
7
5.5k
Eleventy3.0 で始める爆速個人ブログ開発!
takanorip
0
330
Webフォント選定の極意!フォントの基本から最新トレンドまで徹底解説
takanorip
6
1.3k
Other Decks in Technology
See All in Technology
OpenTelemetryで変わった 新時代のCloudWatchメトリクス監視
tsukuboshi
0
210
属人化したISMS運用をGitHubとAIで仕組み化した1年間の記録
sioncojp
4
2.6k
マネジメントされる側の仕事は「文句」を言うこと
riyaamemiya
6
5k
3文字略語に騙されない! 世界一わかりやすい『EDR』超入門
kamadamakoto
1
170
DevOps Agentにあらゆるセキュリティインシデントのトリアージを任せた件
jirtosterone
1
150
異夢同船〜異なる夢でも同じ船でなんとかする〜
fortegp05
0
280
Steering と Hook (チームの決まりを守らせる) | 目指せ Kiro マスター 06
inariku
PRO
2
130
内製アプリとClaudeスキルのセキュリティチェック、 Backlogの課題で回しています。
ayaka_egaaa
0
200
AWS Quick 入門 | 目指せ Quick マスター 01
inariku
PRO
2
350
少ない人手 限られた予算 それでも守る 消せない・見つける・戻れる オールハザード型BCP on AWS / 20261107 Mitsutoshi Matsuo
shift_evolve
PRO
0
390
JAWS_FESTA2026_オンプレ-AWS間プロキシサーバの移行_性能_障害対応で得た実践ノウハウ_高島一晃.pdf
tkazuaki0820
1
130
ラクスル会社紹介資料|エンジニア向け / RAKSUL Introduction for Engineers
raksulrecruiting
0
110
Featured
See All Featured
First, design no harm
axbom
PRO
2
1.4k
Optimising Largest Contentful Paint
csswizardry
37
4k
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.6k
End of SEO as We Know It (SMX Advanced Version)
ipullrank
3
4.5k
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
1
300
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
1
350
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
1
1.7k
What does AI have to do with Human Rights?
axbom
PRO
1
2.5k
What’s in a name? Adding method to the madness
productmarketing
PRO
24
4.2k
Docker and Python
trallard
47
4.3k
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
1
240
RailsConf 2023
tenderlove
30
1.6k