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
モバイルWeb開発最前線 -PWA開発パターン「PRPL」の紹介-
Search
Takanori Maeda
June 24, 2016
Technology
590
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
モバイルWeb開発最前線 -PWA開発パターン「PRPL」の紹介-
PWAとPRPLの話
Takanori Maeda
June 24, 2016
More Decks by Takanori Maeda
See All by Takanori Maeda
Why Redux?
maechabin
0
170
Why React and not jQuery?
maechabin
0
240
最新フロントエンド事情2016年版
maechabin
1
820
Other Decks in Technology
See All in Technology
Local CI × GitHub Actions
gogutan
3
230
AIがコードを書く時代に、エンジニアは何で自分の価値を証明するのか / In an era where AI writes code how do engineers prove their value
carta_engineering
3
1.1k
Code for Security プロジェクト紹介 2026年10月
yu23ki14
0
110
アウトプット初心者、半年間のふりかえり
4o1sobblue
0
440
オントロジーって 結局なにもの? AI エージェントに「意味」を渡す知識設計の話
greenmidori
0
230
Rust で関数型ドメインモデリング
takonda
0
170
⾮構造化データを価値に変える AI エージェント基盤とその組織
ivry_presentationmaterials
0
200
古い指輪から広がった JAVA コミュニティ とのつながり
yamad
0
130
OptunaHub: ブラックボックス最適化のためのプラットフォーム
pfn
PRO
0
140
Persisting Massive Data with Rails ~Designing for 60 billion rows, and fighting the bottlenecks~ Railsで挑む大量データ永続化 〜600億件を永続化するための設計とボトルネックとの戦い〜
occhi
0
740
トークン化預金DCJPYの取り組みと活用ユースケース
finengine
0
160
Claude の新機能を、 出た日に触って社内に届けるまで
rfdnxbro
1
190
Featured
See All Featured
Unsuck your backbone
ammeep
672
58k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
203
77k
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
1
570
Skip the Path - Find Your Career Trail
mkilby
1
260
Leadership Guide Workshop - DevTernity 2021
reverentgeek
1
400
Automating Front-end Workflow
addyosmani
1369
210k
WCS-LA-2024
lcolladotor
0
890
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
2
950
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.6k
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
1k
Imperfection Machines: The Place of Print at Facebook
scottboms
270
14k
The Cult of Friendly URLs
andyhume
79
7k
Transcript
ϞόΠϧWeb։ൃ࠷લઢ ʔ PWA։ൃύλʔϯʮPRPLʯͷհ ʔ @maechabin
Webۀքʹ͓͚Δ 2016ͷτϨϯυʁ
PWA
Progressive Web Apps ϓϩάϨογϒɾΣϒΞϓϦ
PWAͱʁ 201511݄ʹChrome Dev SummitͰGoogle͕ ఏএͨ͠ʮΣϒͱΞϓϦͷ྆ํͷརΛ݉Ͷ උ͑ͨϞόΠϧWebΞϓϦʯͷ͜ͱ • ϒϥβͰར༻Ͱ͖ΔʢΠϯετʔϧෆՄʣ • ΦϑϥΠϯͰಈ͘
• ωΠςΟϒΞϓϦͷΑ͏ʹϓογϡ௨͕ૹΕΔ • εϚϗͷϗʔϜը໘ʹΞΠίϯͱ͓͚ͯ͠Δ
PWAͷಛʢৄࡉʣ • ஈ֊త: ϓϩάϨογϒɾΤϯϋϯεϝϯτΛجຊཧ೦ͱͨ͠ΞϓϦͰ͋ΔͨΊɺ ϒϥβʹؔͳ͘ɺͯ͢ ͷϢʔβʔʹར༻ͯ͠Β͑·͢ɻ • Ϩεϙϯγϒ: ύιίϯͰϞόΠϧͰλϒϨοτͰɺ࣍ੈͷͰɺ ͋ΒΏΔϑΥʔϜϑΝΫλʹద
߹͠·͢ɻ • ωοτϫʔΫଓʹґଘ͠ͳ͍: Service Worker ͷ׆༻ʹΑΓɺΦϑϥΠϯͰɺ ωοτϫʔΫڥ͕ྑ͘ͳ͍ ॴͰಈ࡞͠·͢ɻ • ΞϓϦײ֮: App Shell Ϟσϧʹج͍ͮͯ࡞ΒΕ͍ͯΔͨΊɺΞϓϦײ֮Ͱૢ࡞Ͱ͖·͢ɻ • ৗʹ࠷৽: Service Worker ͷߋ৽ϓϩηεʹΑΓɺৗʹ࠷৽ͷঢ়ଶʹอͨΕ·͢ɻ • ҆શ: ͖ݟίϯςϯπͷվ͟ΜΛ͙ͨΊɺHTTPS ܦ༝Ͱ৴͞Ε·͢ɻ • ൃݟ͍͢͠: W3C ͷϚχϑΣετͱService Worker ͷొείʔϓʹΑΓɺ ʮΞϓϦέʔγϣϯʯͱͯ͠ೝࣝ ͞ΕͭͭɺݕࡧΤϯδϯ͔Βൃݟ͢Δ͜ͱ͕Ͱ͖·͢ɻ • ࠶ΤϯήʔδϝϯτՄೳ: ϓογϡ௨ͷΑ͏ͳػೳΛ௨͡Ͱ༰қʹ ࠶ΤϯήʔδϝϯτΛଅ͢͜ͱ͕Ͱ͖·͢ɻ • ΠϯετʔϧՄೳ: Ϣʔβʔ͕ؾʹೖΕΞϓϦͷϦϯΫΛϗʔϜը໘ʹͯ͠ ͓͘͜ͱ͕Ͱ͖ɺΞϓϦετΞͰ ୳͠ճΔඞཁ͋Γ·ͤΜɻ • ϦϯΫՄೳ: URL Λͬͯ؆୯ʹڞ༗Ͱ͖ɺෳࡶͳΠϯετʔϧͷඞཁ͋Γ·ͤΜɻ ͡ΊͯͷϓϩάϨογϒ ΣϒΞϓϦ | Web Fundamentals - Google Developers https://developers.google.com/web/fundamentals/getting-started/your-first-progressive-web-app/?hl=ja
WPAΛͲ͏࡞Δ͔ʁ
ͦͷ։ൃύλʔϯͷͻͱ͕ͭ
PRPL ύʔϓϧ
PRPLʢύʔϓϧʣύλʔϯ • Push: ·ͣॳظදࣔʹඞཁͳίϯϙʔωϯτΛ αʔόʔ͔Βϓογϡɻ • Render: ॳظදࣔ༻ͷίϯϙʔωϯτΛϨϯμ Ϧϯάɻ •
Pre-cache: Γͷ෦ͷίϯϙʔωϯτΛΩϟ ογϡɻ • Lazy-load: ඞཁʹԠͯ͡Ωϟογϡ͔ΒԆϩ ʔυͯ͠ϨϯμϦϯάɻ
PRPLΛઆ໌͢Δલʹ
ݱࡏΛৼΓฦΓ·͠ΐ͏
HTTP/1.1 HTTP/1.1ɺ1ͭͷϦΫΤετ͕ྃ͢Δ·Ͱɺ ݪଇ࣍ͷϦΫΤετΛૹΔ͜ͱ͕Ͱ͖ͳ͍ɻ ͭ·ΓɺHTTP/1.1ͰߴԽΛਤΔͨΊʹɺϦ ΫΤετͷΛݮΒ͢͜ͱ͕ϕετϓϥΫςΟε ʹͳ͍ͬͯΔɻ
όϯυΔʂ Bundle ෳͷϑΝΠϧΛͻͱͭͷόϯυϧϑΝΠϧʹ·ͱΊͯಡΈࠐΉ
ΞϓϦ͕ෳࡶʹͳΕͳΔ΄ͲόϯυϧϑΝ Πϧͷ༰ྔେ͖͘ͳΓɺ࠷ॳͷಡΈࠐΈʹ 10ඵ͘Β͍͔͔Δ߹͋Δɻ ͜ΕɺϞόΠϧWebͷUXͷ؍͔Βͨ͠ Βɺ͔ͳΓக໋త ͦͷ݁Ռ
PRPLʢύʔϓϧʣͲ͏ͳͷʁ
PRPLʢύʔϓϧʣύλʔϯ • Push: ·ͣॳظදࣔʹඞཁͳίϯϙʔωϯτΛ αʔόʔ͔Βϓογϡɻ • Render: ॳظදࣔ༻ͷίϯϙʔωϯτΛϨϯμ Ϧϯάɻ •
Pre-cache: Γͷ෦ͷίϯϙʔωϯτΛΩϟ ογϡɻ • Lazy-load: ඞཁʹԠͯ͡Ωϟογϡ͔ΒԆϩ ʔυͯ͠ϨϯμϦϯάɻ
Push Server HTTP/2 ॳظදࣔʹඞཁͳίϯϙʔωϯτΛαʔόʔ͔Βϓογϡ ϒϥβ
Render Server HTTP/2 ॳظදࣔ༻ͷίϯϙʔωϯτΛϨϯμϦϯά ϒϥβ
Service Worker Pre-cache Server HTTP/2 Γͷ෦ͷίϯϙʔωϯτΛϒϥβʹอଘ ϒϥβ
Service Worker Lazy-load Server HTTP/2 ඞཁʹԠͯ͡Ωϟογϡ͔ΒԆϩʔυͯ͠ϨϯμϦϯά ϒϥβ
͜Ε͕PRPLʂ
PRPLΛ࣮ݱ͢ΔͨΊͷٕज़
Web Components ίϯϙʔωϯτΛͻͱͭͷཁૉͱͯ͠࡞͢Δ͜ ͱ͕Ͱ͖Δ => Custom Elements <link rel=“import” href=“hogehoge.html”>
Ͱ࡞ͨ͠ίϯϙʔωϯτΛಡΈࠐΊΔ => HTML Imports Web ComponentsରԠͷϒϥβͰ༻Մೳɻ
Service Worker Service Worker௨ৗͷϖʔδͱผʹϒϥβͷό οΫάϥϯυͰ࣮ߦ͞ΕΔJavaScriptͷ࣮ߦڥɻ ϦιʔεΛϒϥβʹΩϟογϡ͢Δ͜ͱͰߴԽɺ ΦϑϥΠϯରԠɺ·ͨϓογϡ௨ͱ͍ͬͨߴͳ Ϣʔβʔମݧͷఏڙ͕Մೳɻ Service WorkerରԠͷϒϥβͰ༻ՄೳɻSSLલ
ఏɻ
HTTP/2 HTTPͱ͍͏ϓϩτίϧΛϞόΠϧʹ࠷దԽ͠ɺWebͷදࣔΛߴ Խ͢Δͱ͍͏తͰ࡞ΒΕͨGoogleͷSPDYͷΞΠσΞΛͱ ʹ༷ࡦఆɻ HTTP/1.1Ͱ࣮ݱ͕͔ͬͨ͠ɺલճͷϦΫΤετͷྃΛ ͨͣʹ࣍ͷϦΫΤετΛૹ৴͢Δ͜ͱ͕Մೳͱͳ͍ͬͯΔɻ ͞ΒʹʮServer Pushʯͱ͍͏ɺΫϥΠΞϯτ͔ΒϦΫΤετ ͕ͳͯ͘ɺhtmlϑΝΠϧͷத͔Βஅͯ͠ɺϨεϙϯεΛ ฦ͢Έ͕͋ΔʢPRPL͜ΕΛ͏ʣɻ
͓ܰ͘͞Β͍
Push Server HTTP/2 ॳظදࣔʹඞཁͳίϯϙʔωϯτΛαʔόʔ͔Βϓογϡ ϒϥβ
Render Server HTTP/2 ॳظදࣔ༻ͷίϯϙʔωϯτΛϨϯμϦϯά ϒϥβ
Service Worker Pre-cache Server HTTP/2 Γͷ෦ͷίϯϙʔωϯτΛϒϥβʹอଘ ϒϥβ
Service Worker Lazy-load Server HTTP/2 ඞཁʹԠͯ͡Ωϟογϡ͔ΒԆϩʔυͯ͠ϨϯμϦϯά ϒϥβ
൵͍͓͠Βͤ
·࣮ͩݱ͍͠ɾɾɾ • HTTP/2ͷڥ͕උ͞Ε͍ͯͳ͍ • Web Components͕ීٴ͍ͯ͠ͳ͍ • HTTP/2 Server pushͱWebͷΩϟογϡͷ
૬ੑ͕ѱ͍ ͔͠͠ɺ͜ͷPRPLͷߟ͑ํʹͱͯເ͕ ͋Δɻͥͻߟ͑ํ͚ͩͰ͓͖͍͑ͯͨ
Google͕৽ͨʹఏএ͢ΔProgressive Web Appsͷ৽ͨͳ։ൃύλʔϯʮPRPLʯͱʁ https://html5experts.jp/komasshu/19704/ A PATTERN FOR PWA PRPL http://www.slideshare.net/
KensakuKOMATSU/a-pattern-for-pwa-prpl ৄࡉҎԼʹͯ͢ࡌ͍ͬͯ·͢
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠