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
SharedWorkerを使ったキャッシュでネイティブアプリに負けないユーザー体験を目指す
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
KAKEHASHI
PRO
October 12, 2026
Technology
13
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
SharedWorkerを使ったキャッシュでネイティブアプリに負けないユーザー体験を目指す
フロントエンドカンファレンス関西2026
https://2026.frontend-conf.osaka.jp/
での登壇資料です
KAKEHASHI
PRO
October 12, 2026
More Decks by KAKEHASHI
See All by KAKEHASHI
Honoが叶える!いつでも降りられるLambdalith
kakehashi
PRO
1
120
分析の民主化を支えるメタデータ整備の実践
kakehashi
PRO
3
1k
薬剤師(ドメインエキスパート)と一緒に育てる薬局向けAIアシスタント
kakehashi
PRO
2
230
デザイナーとPdMが自分でデプロイする ― Amplify Hosting の PR プレビューで回す仮説検証
kakehashi
PRO
2
210
人を動かすのは時間ではなく、納得感 〜新任EMが入社3ヶ月、組織を2回変えた話〜
kakehashi
PRO
3
660
クラウド上のデータ復旧で見落としがちな制約: 医療系 SaaS の BCP 設計から得た教訓
kakehashi
PRO
0
5.6k
プロダクトだけじゃない、社内プロセスにおける自動化・省力化ノススメ
kakehashi
PRO
1
5.9k
「軸足」は 固定しなくていい - 熱量と強みで描く、しなやかなキャリアの形
kakehashi
PRO
2
720
Sync と Async ─ useSyncExternalStore を使う者の岐路
kakehashi
PRO
1
900
Other Decks in Technology
See All in Technology
DevelopersIO 2026 知識の地図を描く ─ オントロジーとは何か?
ishikawa_satoru
1
480
分析AIエージェントを育てる、動く環境を育てる
codatum
1
370
メルペイ 会計システム概要と歴史
mewuto
0
190
あなたの知らないAmazon VPC Route Server/Amazon VPC Route Server you don't know about
masakiokuda
2
230
BedrockとLambdaで作る リアルタイム進行型推理ゲーム
kawametho
0
200
私の推しは「聞いてから進む」AIです -AI-DLCに一人でアプリを作らせた話
yama3133
1
180
OSC2026on_the-world-is-waiting-for-your-voice.pdf
naruoga
0
360
転んだ話が背中を預ける理由になる / A_story_about_falling_down_gives_you_a_reason_to_watch_each_other_s_backs.pdf
pauli
3
330
おそらく日本で唯一のDevRelインターン生として
husengs7
0
170
AI時代だからこそ推したい!Gitコマンド再入門
munakata
0
160
スキルを作る、その前に!複数人で使われるスキルを 作るためのプロセス
junkifurukawa
2
350
3つのアプローチで目指す チームを強くするAI駆動開発
thkt
0
130
Featured
See All Featured
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.4k
Agile that works and the tools we love
rasmusluckow
331
22k
Highjacked: Video Game Concept Design
rkendrick25
PRO
1
470
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
370
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
450
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
20k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.6k
How to optimise 3,500 product descriptions for ecommerce in one day using ChatGPT
katarinadahlin
PRO
3
3.9k
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
2
470
The Language of Interfaces
destraynor
162
27k
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
2
2k
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
68
58k
Transcript
SharedWorkerを使ったキャッシュで ネイティブアプリに負けないユーザー体験を目指す 2026/10/12 Nokogiri@株式会社カケハシ フロントエンドカンファレンス関西2026 ©KAKEHASHI inc.
自己紹介 Nokogiri(@nkgrnkgr) X | Bluesky | Github 株式会社カケハシ ソフトウェアエンジニア(主にフロントエンド) React
/ TypeScript / フロントエンド大好き! 二児の父👶 ポケモン対戦大好き! ©KAKEHASHI inc. 2
会社紹介 株式会社カケハシとは • ヘルステックスタートアップ • 主に調剤薬局向けの業務システムを提供 • クラウド型電子薬歴「Musubi」のほか、複数プ ロダクトを開発・提供し、グループ全体で国内の 薬局の14,000店舗超をカバー
©KAKEHASHI inc. 3
同じデータを複数のタブで取り直している ©KAKEHASHI inc. 4
同じデータを複数のタブで取り直している 薬局のユースケース • 1患者毎に1タブ • 最大1日に200-300名、来局 • 医薬品など数万件、数MB程度のデータ • 丸一日ほぼ変更がない場合がある
• 環境によってはネットワークが細い • 移行元がWindowsネイティブアプリ タブを跨いで1回だけ取得し、使い回せないか ©KAKEHASHI inc. 5
複数タブでデータを使い回す ©KAKEHASHI inc. 6
複数タブでデータを使い回す 使う2つの技術 SharedWorker • 同じオリジンの複数タブで共有できる SSE(Server-Sent Events) • Worker •
タブとは別スレッドで動き、全タブが閉じると 終わる ©KAKEHASHI inc. サーバーからブラウザへ一方向にイベントを 流す HTTP の仕組み • 接続を張りっぱなしにして、更新の通知を受 け取る 7
複数タブでデータを使い回す Workerに1カ所で持ち、全タブで使い回す • タブからWorkerへ取得イベントを 投げる ©KAKEHASHI inc. • Worker内で通信し、Mapで管理 •
待つのは初回の1タブ目だけ • 2タブ目以降通信なしで返す 8
複数タブでデータを使い回す 値が変わればサーバーが知らせる、全タブを閉じるとデータが消える • マスタに変更があればSSEでWorker に通知 • Workerは再取得して、全タブに Broadcast • SSE接続もタブ毎ではなくWorker1本
• 全タブ閉じるとWorkerごと消えるので 後始末のコードがいらない ©KAKEHASHI inc. 9
複数タブでデータを使い回す 検討した他の技術 技術 説明 localStorage タブを閉じても残る。ログアウトやセッション切れで 消す責務が増える。容量上限と同期 API の問題も IndexedDB
同じく残る。消す責務が増える。永続は今回要らない WASM + SQLite 参照中心なので仕組みが過剰 ※似た名前のServiceWorkerはfetchを横取りしてオフライン対応する部品で、用途が違う 全タブ閉じると消えるSharedWorkerの寿命はちょうどいい ©KAKEHASHI inc. 10
まとめ ©KAKEHASHI inc. 11
まとめ SharedWorker+SSEでタブ間のデータ共有とライフサイクル管理が可能 • データ取得をSharedWorkerに一本化 • SharedWorkerが全タブにBroadcastして同期 • 更新通知はSSE経由 • 全タブ閉じるとWorkerごとデータも消える
※今回の発表内容は、実プロダクトで運用している内容ではなくPoCとして検証した内容です。 ブラウザに大きなデータを置くときの選択肢として検討いただけると幸いです。 ©KAKEHASHI inc. 12
We Are Hiring!!! PM EM エンジニア積極採用中 © KAKEHASHI Inc. All
Rights Reserved.