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
ゼロから始めるPWA入門
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
syumai
April 06, 2018
Programming
6.4k
6
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
ゼロから始めるPWA入門
syumai
April 06, 2018
More Decks by syumai
See All by syumai
作って学ぶ、 JSX (TSX) ランタイムの基本
syumai
7
1.8k
Oxlintのカスタムルールの現況
syumai
6
1.3k
Oxlintはいかにしてtsgolintのlint ruleを呼び出しているのか
syumai
2
1.4k
『[入門] Cloudflare Workers』本はなぜ誕生したのか
syumai
0
490
tsgolintはいかにしてtypescript-goの非公開APIを呼び出しているのか
syumai
9
3.2k
知られているようで知られていない JavaScriptの仕様 4選
syumai
3
1.3k
CloudflareのSandbox SDKを試してみた
syumai
0
970
実践AIチャットボットUI実装入門
syumai
9
4.3k
ProxyによるWindow間RPC機構の構築
syumai
3
1.5k
Other Decks in Programming
See All in Programming
Laravelで学ぶ Webアプリケーションチューニング入門/web_application_tuning_101
hanhan1978
4
1.7k
琵琶湖の水は止められてもNet--HTTPのリトライは止められない / You might be able to stop the water flow of Lake Biwa but you can't stop Net::HTTP retries
luccafort
PRO
0
590
ITヒヤリハットを整理してみた ~ライフサイクルと原因から考える再発防止策~
koukimiura
1
140
変わらないものが、変わるものを決める — 意図駆動開発 × イベントソーシング × イミュータブル | What Doesn't Change Decides What Can — IDD × Event Sourcing × Immutability
tomohisa
0
1.3k
What's New in Android 2026
veronikapj
0
250
その節約、円になってますか?
isamumumu
1
700
TSX の <Hoge<Fuga>> という構文に驚いた話 / tsx-type-argument-syntax
kanaru0928
0
210
S3 を使うアプリケーションをローカル完結で動かすことに全力を注いでみた / Running S3 Apps Offline
contour_gara
0
340
継続モナドとリアクティブプログラミング
yukikurage
3
690
Foundation Models frameworkで画像分析
ryodeveloper
1
590
PHP Application における Kubernetes 内 gRPC 通信
ganchiku
0
580
源内ハンズオン概要編
hideg
0
120
Featured
See All Featured
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
1.2k
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.3k
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
1
420
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
56
3.4k
AI: The stuff that nobody shows you
jnunemaker
PRO
9
890
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
The Curse of the Amulet
leimatthew05
2
14k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
Odyssey Design
rkendrick25
PRO
2
750
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
200
Large-scale JavaScript Application Architecture
addyosmani
515
110k
My Coaching Mixtape
mlcsv
0
200
Transcript
ゼロから始めるPWA入門 @__syumai 2018.4.6 Webエンジニア勉強会 #06
自己紹介 しゅーまい ダックリングズ株式会社 フロントエンド / サーバーサイド 担当 VR / ウェディング関連のサービスをやってるベンチャー
エンジニアは2名 4月で新卒3年目 最近はReact Native / Rails / Vue.jsをやってます Twitter: @__syumai(アンダーバー2 つ) GitHub: syumai
入門と言うより、勉強の記録です…汗 => github.com/syumai/sw-playground
目次 1. Progressive Web App (PWA) とは 2. PWAの構成要素 3.
開発ツールについて 4. Service Workerで遊んでみた 5. 次に試したい事
Progressive Web Appとは
『はじめてのプログレッシブウェブアプリ | Web | Google Developers』 https://developers.google.com/web/fundamentals/codelabs/your-first-pwapp/?hl=ja
ウェブとアプリの両方の利点
ウェブの利点 • 手軽 • 更新が楽 • データが軽い
アプリの利点 • オフライン利用可 • Push通知 • 動作が軽い
アプリの利点 • オフライン利用可 • Push通知 • 動作が軽い ↑PWAなら実現できる!
利用事例 • Twitter Lite ◦ データセーバー機能あり、省データに特化 • Instagram ◦ 画像フィルタも使える
None
初回ダウンロード => 4.1MB アプリ => 約35MB Twitter Lite
初回ダウンロード => 47.8KB アプリ => 約34MB Instagram
PWAの構成要素
主要なPWAの構成要素 • Service Worker (一番大事!) • Cache Storage • Web
App Manifest
今回紹介しないもの • Web Push API / Web Notification API ◦
昔はGCMとか必要で設定めっちゃ大変だった • IndexedDB ◦ SWから非同期的に扱えるNoSQL DB 他にもいろいろあります
Service Worker
Service Worker • Webページのバックグラウンドで走るスクリプト • 別のスクリプトからインストールする • 閲覧中のページのDOM操作などは行わない • ブラウザを閉じても、通知の待ち受けなどに使える
• Webのリクエストに介入できる
Service Worker • Webページのバックグラウンドで走るスクリプト • 別のスクリプトからインストールする • 閲覧中のページのDOM操作などは行わない • ブラウザを閉じても、通知の待ち受けなどに使える
• Webのリクエストに介入できる ↑リクエストを捕まえて、任意のレスポンスを返せる!
Service Worker • かなり強力な機能のため、SSL環境 or localhostでしか動きません
Cache Storage
Cache Storage • 開発者が完全にコントロール出来るキャッシュストレージ • html, css, js, 画像など、Webサイト上の任意のファイルを保存出来る •
ドメインごとに保存される • ネームスペースが切れる (v1など) • 明示的に削除しない限りクリアされない
Cache Storageから取り出して Service Workerから返す ↓ オフラインで完全に動作する Webサイトが作れる!
Web App Manifest
Web App Manifest • Webサイトのアプリとしての振る舞いを定義する • アイコン • アプリ名 •
テーマカラー (AndroidのChrome等で有効) • ホームURL • デバイスの向き • フルスクリーンかどうか など
None
インストールしたアプリと同じように、 ホームから開けるようになる!
開発ツールについて
Chrome Dev Toolsが最強
これ!
Chrome Dev Tools • Service Workerのデバッグが簡単 • バックグラウンドで動いていても、ブレークポイント置いたり出来る • オフライン環境の再現もチェック一つで
• リロードでService Workerをアップデートできるオプションも
Chrome Dev Tools • Cache Storageの中身を簡単に見れる • 即座に削除も可能
開発ツールの詳細は、 Totally Tooling Tips (S3) をYouTubeで! https://www.youtube.com/playlist?list=PLNYkxOF6rcIB3ci 6nwNyLYNU6RDOU3YyL
Lighthouse
Google公式のPWA監査ツール
Lighthouse • PWAのパフォーマンスをチェックしてレポートを作ってくれる • Chrome拡張で簡単に入る
Service Workerで遊んでみた
Service Worker • リクエストに介入できる • => fetchのイベントを捕まえて、別のレスポンスを返せる
普通の使い方
インストール時にキャッシュ https://developers.google.com/web/fundamentals/primers/service-workers/?hl=ja
リクエストを捕まえて、キャッシュからレスポンスを返す https://developers.google.com/web/fundamentals/primers/service-workers/?hl=ja
今回やってみた事 => 存在しないページを返す
Dummy Router • ページをめくってpagesディレクトリ配下のHTMLをガンガン読む
pages/x.htmlと言うファイルは無い
テンプレートのHTMLをコード内に用意 https://github.com/syumai/sw-playground/blob/master/dummy-router/sw.js
テンプレートからHTMLを生成して返す https://github.com/syumai/sw-playground/blob/master/dummy-router/sw.js
デモ https://syumai.github.io/sw-playground/dummy-router/
次にやった事
キャッシュしたテンプレート +JSONからレスポンス生成!
デモ https://syumai.github.io/sw-playground/basic-progressive-blog/
レスポンスの軽量化! • HTMLはあるけど、取りに行かず、ServiceWorkerで生成! • HTML => 28KB • SW +
JSON => 8KB
大変だったこと • 任意のファイルをキャッシュから取り出す作業 • 任意のレスポンスで e.respondWith => Responseオブジェクトを返すasync functionを書いて頑張った
次にやりたい事 • Nuxt.jsのPWAモジュール • APIサーバーとの連携
ダックリングズでは React Nativeを一緒にやりたい人を 募集中です!