$30 off During Our Annual Pro Sale. View Details »
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
PWAを活用している_ガジェットアプリの話.pdf
Search
anozon
October 25, 2021
Programming
0
23
PWAを活用している_ガジェットアプリの話.pdf
anozon
October 25, 2021
Tweet
Share
More Decks by anozon
See All by anozon
VSVimの間合いですよ
anozon
0
100
埼玉県の描き方.pdf
anozon
0
34
Other Decks in Programming
See All in Programming
Findy AI+の開発、運用におけるMCP活用事例
starfish719
0
1.7k
Spinner 軸ズレ現象を調べたらレンダリング深淵に飲まれた #レバテックMeetup
bengo4com
0
170
TestingOsaka6_Ozono
o3
0
170
SwiftUIで本格音ゲー実装してみた
hypebeans
0
490
GISエンジニアから見たLINKSデータ
nokonoko1203
0
180
LLMで複雑な検索条件アセットから脱却する!! 生成的検索インタフェースの設計論
po3rin
4
960
AI前提で考えるiOSアプリのモダナイズ設計
yuukiw00w
0
190
20251212 AI 時代的 Legacy Code 營救術 2025 WebConf
mouson
0
210
Denoのセキュリティに関する仕組みの紹介 (toranoana.deno #23)
uki00a
0
160
Rubyで鍛える仕組み化プロヂュース力
muryoimpl
0
160
gunshi
kazupon
1
120
バックエンドエンジニアによる Amebaブログ K8s 基盤への CronJobの導入・運用経験
sunabig
0
170
Featured
See All Featured
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
2.8k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.2k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
89
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
69
Large-scale JavaScript Application Architecture
addyosmani
515
110k
Leadership Guide Workshop - DevTernity 2021
reverentgeek
0
170
Scaling GitHub
holman
464
140k
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
410
What’s in a name? Adding method to the madness
productmarketing
PRO
24
3.8k
The Cult of Friendly URLs
andyhume
79
6.7k
WCS-LA-2024
lcolladotor
0
390
Transcript
PWAを活用している ガジェットアプリの話 あのぞん(えるざっぷ)
About me @anozon あのぞん🌏.tsx (@anozon) elzup (elzup) · GitHub 株式会社プランクユニッツ
PWA初心者 React,TypeScript Firebase, hooks で Redux 離れが進んでる
こんなアプリを作っています Mitelop ガジェットツール集 タイマー/Todoリスト /編集点/みどころ記録 プログラミング配信で使えそうなもの 自分でツールとしてほしいもの Web URL: https://mitelop.anozon.me/
GitHub: elzup/mitelop https://github.com/elzup/mitelop
こんなアプリを作っています Mitelop 使っている技術 TypeScript, React Next.js (極力SSG) styled-components 好き Material
UI (そろそろ外せそう) Netlify
かっこいいロゴ作れたと思ったら.. ダークモードで微妙だった デザイン難しい。。。
Mitelop と PWA関連の話 (PCブラウザがメイン) theme-color とフレームの色 (デモ) PWA モードのときだけ挙動や見た目を変える PWA
のローカルでバッグ
theme-color とフレームの色
ちょっとでもコンパクトなガジェットにしたい ブラウザアプリだとヘッダー (フレームの範囲)が多い → このくらいフラットにできた 子ウィンドウ PWA PWA theme色背景色統一 theme-color
とフレームの色
<meta name=”theme-color” /> を変更すると リアルタイムに変わる https://mitelop.anozon.me/color theme-color とフレームの色
これ以上はネイティブじゃないとできなさそう - 長方形以外 - フレームの丸み - ひし形 - 透過ウィンドウ などなどできたら嬉しいので期待
theme-color とフレームの色
PWA モードのときだけ 挙動や見た目を変える
PWAで起動してるときは見た目を変えたい 例: ヘッダーを削除したい PWA モードのときだけ挙動や見た目を変える
CSSはメディアクエリで簡単 @media (display-mode: standalone) を使う PWA モードのときだけ挙動や見た目を変える
CSSはメディアクエリで簡単 PWA モードのときだけ挙動や見た目を変える スッキリ
JSで値を取りたい場合は? PWA モードのときだけ挙動や見た目を変える window.matchMediaが使えます window.matchMedia('(display-mode: standalone)').matches
JSで値を取りたい場合は window.matchMedia('(display-mode: standalone)').matches PWA モードのときだけ挙動や見た目を変える
JSで値を取りたい場合は window.matchMedia('(display-mode: standalone)').matches PWA モードのときだけ挙動や見た目を変える
react-hooks 化した PWA モードのときだけ挙動や見た目を変える const mql = window.matchMedia('(display-mode: standalone)') mql.addEventListener('change',
listener) で変更イベントの検知ができる → useIsStandalone (useIsPwaMode) hooks を作ってみた
react-hooks 化した PWA モードのときだけ挙動や見た目を変える () =>
react-hooks 化したが・・・ PWA モードのときだけ挙動や見た目を変える ここで気づく mediaQuery (今回は ‘display-mode: standalone’) は引数にして汎用的になるん
じゃね? → シンプルだし便利だから既にあるんじゃね? →
react-hooks 化したが・・・ PWA モードのときだけ挙動や見た目を変える ここで気づく mediaQuery (今回は ‘display-mode: standalone’) は引数にして汎用的になるん
じゃね? → シンプルだし便利だから既にあるんじゃね? → ありました react-use https://github.com/streamich/react-use/blob/master/docs/useMedia.md
react-use useMediaのコード 大筋は同じ実装だったが mounted 変数の意味は謎
react-hooks 化したが・・・ PWA モードのときだけ挙動や見た目を変える ということでこんなにシンプルに使えます
PWA のローカルでバッグ (もはや PWA 初心者がどうやってやったのかの話 )
PWA化 は https が要件の1つ PWA のローカルでバッグ ローカルで https を使いたいと気に使っているサービス ngrok
https://ngrok.com/
ngrok で PWA ローカルデバッグしてみた ちゃんとインストールできる PWA のローカルでバッグ
ホワイトアウト問題に悩まされる • 別のプロダクトでホワイトアウトに悩んでる • キャッシュのテンプレ設定しかしていない • 古い js を参照しにいってしまう •
↓正しいパターン? a. 更新ボタンで unregister し新しいのを参照させる b. 常に更新する • next-pwa を使っている • use-service-worker • https://github.com/JCofman/react-hook-use-service-worker
About me @anozon https://twitter.com/anozon https://github.com/elzup PWA初心者 React,TypeScript