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
20180827_PWA.pdf
Search
ozaki25
August 27, 2018
Technology
53
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
20180827_PWA.pdf
ozaki25
August 27, 2018
More Decks by ozaki25
See All by ozaki25
20210526_a11y.pdf
ozaki25
0
210
20210525_react_next.pdf
ozaki25
0
160
Webフロントエンドはなぜ複雑なのか
ozaki25
1
150
utility first css
ozaki25
0
120
20201225_how_to_learn_technology.pdf
ozaki25
0
180
20201124_blitz.pdf
ozaki25
0
110
20200727_liff_app.pdf
ozaki25
1
680
20200721_web_vitals.pdf
ozaki25
0
120
20200624_web_otp_api.pdf
ozaki25
1
150
Other Decks in Technology
See All in Technology
Disciplined Vibes: Scaling AI-Assisted Engineering
sheharyar
0
140
タクシーアプリ『GO』の実践的データ活用
mot_techtalk
3
190
失敗を経て、Harness Engineering で 大切にしたいことを考える / Learning from Failure: What Matters in Harness Engineering
bitkey
PRO
1
320
2026TECHFRESH畢業分享會 - 原生還是跨平台? App 開發踩坑實錄
line_developers_tw
PRO
0
870
LLMと共に進化するプロセスを目指して
ymatsuwitter
13
4.1k
Djangoユーザが知っ得なPostgreSQL機能 - 設計の選択肢を増やす / Djang-use-PostgreSQL
soudai
PRO
1
230
ポケモンの型をTypeScriptの型システムで表現してみた
subroh0508
0
370
2026TECHFRESH畢業分享會 - Lightning Talk - E起 See See : 電商推薦讀心術? 數據說了算
line_developers_tw
PRO
0
860
DevOps Agentで始めるAWS運用 〜フロンティアエージェントが変える運用の現場〜
nyankotaro
1
390
Snowflakeと仲良くなる第一歩
coco_se
4
430
Amazon Bedrock AgentCore ワークショップ JAWS UG TOHOKU / amazon-bedrock-agentcore-workshop-jawsug-tohoku-2026
gawa
9
740
EventBridge Connection
_kensh
5
700
Featured
See All Featured
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
1
1.7k
The Invisible Side of Design
smashingmag
302
52k
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.3k
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
1
230
Designing for Performance
lara
611
70k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
Designing Powerful Visuals for Engaging Learning
tmiket
1
410
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
65
55k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
2k
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.7k
Marketing to machines
jonoalderson
1
5.4k
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
1
770
Transcript
1SPHSFTTJWF8FC"QQT
"HFOEB ֓ཁฤ ٕज़ฤ ·ͱΊ
֓ཁฤ
1SPHSFTTJWF8FC"QQTͱ w (PPHMFͷఏএ͢Δ࣍ੈͷ8FCΞϓϦͷ͜ͱ w ΑΓྑ͍ϢʔβମݧΛఏڙ͢ΔͨΊͷࢦඪ w '8͕ଘࡏ͢ΔΑ͏ͳͷͰͳ͍ w (PPHMF͕νΣοΫϦετΛެ։͍ͯ͠Δ͕ɺͦΕΒࣗલͰ ࣮͢Δඞཁ͕͋Δ
PWA Check List - https://developers.google.com/web/progressive-web-apps/checklist
ैདྷͷ8FCͱԿ͕ҧ͏ʁ w ϒϥβ"1*ͷൃలʹΑΓैདྷͷ8FCͰͰ͖ͳ͔ͬͨ͜ͱ͕Ͱ͖ ΔΑ͏ʹͳͬͨ w ϓογϡ௨ w ΦϑϥΠϯͰͷར༻ w ϗʔϜεΫϦʔϯͷΞΠίϯ͔Βىಈ
=> ϚαϓΰϣίϤϷͽͭ͡ͽͣ͡͵ͩ;͢WebͽΘݢᚆ
ͳͥࠓ18"ʁ w J04͕͔Β18"ͷίΞٕज़Ͱ͋Δ4FSWJDF8PSLFSʹରԠ w 4FSWJDF8PSLFSʹରԠ͢ΔϒϥβͷγΣΞ͕େ෯ʹ֦େ https://caniuse.com/#search=serviceworker
ઌਐࣄྫ w ܦిࢠ൛ IUUQTIBDLOJLLFJDPNCMPHOJLLFJGFBUVSFEBUHPPHMFJP w 4VVNP w 5XJUUFS-JUF w
5SJWBHP
ҰํੈͷதͰ w 18"ͱ͍͏୯ޠ͕όζϫʔυԽ w 18"ԽϗʔϜεΫϦʔϯʹՃͰ͖Δ͜ͱ w ʮ18"ͰԿ͔Ͱ͖ͳ͍͔ʁʯͱతͱखஈ͕ٯస w %FW0QT
"HJMFʑͱಉ͡ಓΛḷΓͭͭ͋Δ
18"ͱͷ͖߹͍ํ w 18"಄ͷഎܠʹ͋Δٕज़ཁૉΛཧղ͢Δ͜ͱ w ͦΕΒͷٕज़ཁૉͰԿΛ࣮ݱͰ͖Δ͔ཧղ͢Δ͜ͱ w ͦΕΒΛ౿·্͑ͨͰϢʔβମݧͷ্ʹͭͳ͕ΔػೳΛݟۃ Ί࠾༻Ͱ͖Δ͜ͱ
18"ͱͷ͖߹͍ํ w 18"಄ͷഎܠʹ͋Δٕज़ཁૉΛਖ਼͘͠ཧղ͢Δ͜ͱ 4FSWJDF8PSLFS 8FC"QQ.BOJGFTU 1VTI"1*ʑ w ͦΕΒͷٕज़ཁૉͰԿΛ࣮ݱͰ͖Δ͔ཧղ͢Δ͜ͱ ϓογϡ௨ɺϗʔϜεΫϦʔϯՃɺΦϑϥΠϯରԠʑ w
ͦΕΒΛ౿·্͑ͨͰϢʔβମݧͷ্ʹͭͳ͕ΔػೳΛݟۃ Ί࠾༻Ͱ͖Δ͜ͱ ࢦ͖͢ͱ͜Ζ͜͜ 18"Λ࡞Γ͍ͨͷͰͳ͘ 69্ͷखஈͷҰ͕ͭ18"
ٕज़ฤ
18"ΛऔΓרٕ͘ज़ w 4FSWJDF8PSLFS w $BDIF"1* w 8FC"QQ.BOJGFTU w ͦͷଞ
4FSWJDF8PSLFS w όοΫάϥϯυͰಈ࡞͢ΔϓϩάϥϚϒϧͳϩʔΧϧϓϩΩγ w ϦΫΤετϨεϙϯεͷΓऔΓʹհೖͰ͖Δ
4FSWJDF8PSLFS <!-- index.html --> <script> if ('serviceWorker' in navigator) {
navigator.serviceWorker.register(‘/sw.js') .then(registration => { console.log('registration successful'); }).catch(() => { console.log('registration failed'); }); } </script> // sw.js self.addEventListener('install', event => { console.log('install service worker'); }); self.addEventListener('activate', event => { console.log('activate service worker'); }); self.addEventListener('fetch', event => { console.log('intercept fetch request'); }); 4FSWJDF8PSLFSͷొॲཧ
$BDIF"1* w ίϯςϯπΛ$BDIFʹอଘ͢Δ͜ͱ͕Ͱ͖Δ
$BDIF"1* const CACHE_NAME = ‘pwa-sample-v1'; const urlsToCache = [ '/assets/css/styles.css',
'/assets/js/main.js', ]; self.addEventListener('install', event => { event.waitUntil( caches .open(CACHE_NAME) .then(cache => cache.addAll(urlsToCache)) .catch(console.log) ); }); self.addEventListener('fetch', event => { event.respondWith( caches.match(event.request).then(res => { if (res) { console.log('exist in cache'); // cacheʹ͋ͬͨΒͦΕΛฦ͢ return res; } else { console.log('not exist in cache'); // cacheʹͳ͚Ε௨৴ͯͦ͠ͷ݁ՌΛฦ͢ return fetch(event.request); } }) ); }); ىಈ࣌ʹ$BDIFʹอଘ $BDIFʹ͋Ε௨৴͠ͳ͍
8FC"QQ.BOJGFTU w NBOJGFTUϑΝΠϧΛ༻ҙ͢Δ͜ͱͰΠϯετʔϧͰ͖ΔΑ͏ʹ ͳΔ w εϓϥογϡը໘ΞΠίϯͷઃఆͰ͖Δ w ϒϥβͷόʔͳ͠Ͱશը໘දࣔͰ͖Δ w 1$ͰσεΫτοϓΞϓϦͱͯ͠ΠϯετʔϧͰ͖Δ
8FC"QQ.BOJGFTU NBOJGFTUϑΝΠϧΛ࡞ͬͯIUNMͰಡΈࠐΉ͚ͩ // manifest.json { "name": “React Handson",
"short_name": "ReactHandson", "start_url": "/", "display": “standalone", "orientation": "any", "background_color": "#f5fcff", "theme_color": "#222222", "icons": [ { "src": "/assets/img/icon_072.png", "sizes": "72x72", "type": "image/png" } ] } <!— index.html —> <link rel="manifest" href=“/manifest.json">
8FC"QQ.BOJGFTU Πϯετʔϧϓϩϯϓτͷ੍ޚ // main.js let deferredPrompt; const button
= document.getElementById('install-button'); // Chrome͕ग़͢ϓϩϯϓτΛࢭ͠ୀආ͓ͯ͘͠ addEventListener('beforeinstallprompt', function(e) { e.preventDefault(); deferredPrompt = e; button.disabled = false; return false; }); // ϘλϯΛΫϦοΫͨ͠Βୀආ͓͍ͯͨ͠ϓϩϯϓτදࣔॲཧΛ࣮ߦ button.addEventListener('click', function() { if(deferredPrompt !== undefined) { deferredPrompt.prompt(); deferredPrompt = null; } });
ͦͷଞ w 1VTI"1* w ϓογϡ௨ w #BDLHSPVOE4ZOD"1* w όοΫάϥϯυಉظ w
8FC"VUIFOUJDBUJPO"1* w ೝূͷࣗಈԽ w 1BZNFOU3FRVFTU"1* w ܾࡁը໘ͷڞ௨6* w *NBHF$BQUVSF"1* w ΧϝϥͷΞΫηε w 8FC4IBSF"1* w 4/4γΣΞͷڞ௨6*
18"ؔ࿈πʔϧ w 18"#VJMEFS w .JDSPTPGU w طଘαΠτΛΠϯϓοτʹNBOJGFTUTXKTͷܗΛੜ w 8PSLCPY w
(PPHMF w $BDIFཧΛ༰қʹ͢ΔϥΠϒϥϦ w ࠾༻ࣄྫΛΑ͘ฉ͘
·ͱΊ
18"ͷ͍͍ͱ͜Ζ w ωΠςΟϒPS8FCΛݕ౼͢Δࡍͷબࢶ͕֦େͨ͠ w ఏڙ͍ͨ͠αʔϏεͷੑ࣭ʹΑͬͯΞϓϦͱ8FCͷ͍͍ͱ͜ औΓ͕Ͱ͖Δ w Ұ෦ͷػೳ͚ͩͰϢʔβମݧͷ্ʹͭͳ͛Δ͜ͱ͕Ͱ͖Δ
18"ͷ՝ w ར༻Մೳͳϒϥβ੍͕ݶ͞Εͨػೳ͕ଟ w ຊͰJ04Ͱ͑Δ͔Ͳ͏͔ͷӨڹ͕େ͖͍ w ·ͩϊϋ͕গͳ͍ͷͰϋϚΓͲ͜Ζଟ͍ w Ωϟογϡઓུ w
J04ͰͷΔϘλϯ w ϓογϡ௨ڐՄͷλΠϛϯά
·ͱΊ w "1*ͷൃలʹΑΓ8FCͰͰ͖Δ͜ͱ͕֦େͨ͠ w ͦΕΒΛ׆༻ͯ͠ϢʔβମݧΛ্ͤͨ͞ΞϓϦ͕18" w Կ͕Ͱ͖Δ͔ཧղ͠దʹ͍͚Δ͜ͱ͕େ w ݱঢ়ະରԠϒϥβଟ͍͕ࠓޙʹ͚ͯΥον͍ͯ͘͠ ͖
͋Γ͕ͱ͏͍͟͝·ͨ͠