SlideShare a Scribd company logo
Challenge PWA!!
Web の舞台はホーム画面へ進撃する!
Technical Edition
2018/09/19
@Japan Android Group
Ryunosuke Shindo
自己紹介
進藤 龍之介
エンジニア/日本Androidの会
Web Working Group PWA 集中勉強会主催
www.crowdfarm.jp 運営
プラグイン「PWA for WordPress」開発
Twitter @ryu_compin
Fb ryushindo
2018/9/15 @WordCamp Tokyo 2018
https://www.slideshare.net/RyuShindo/challenge-pwa-wordcamp-tokyo-2018
「できるだけ多くの人に PWA
を知って欲しいと思いますの
で、非技術者の方でもわかっ
ていただけるようにコーディ
ングレスな形でお話しを進め
たいと思います。」
PWA を暑アツく語ってみて
実際のところ、Web 系、特にデザイン
やディレクション、サイトオーナー、
マーケティングなど、技術系以外の人
にはまだ PWA はあまり浸透していない。
知っていても難しそう、と思われて手
を出せないでいる。
でも、かなり興味はある。
PWA の導入を本来決断する層の人たち
に知ってもらうことが PWA 普及にはと
ても大事。
ちょっとだけおさらい
PWA のキホン
What is a Progressive Web App?
• Progressive - Works for every user, regardless of browser choice because it's built with progressive enhancement as a core
tenet.
• Responsive - Fits any form factor: desktop, mobile, tablet, or whatever is next.
• Connectivity independent - Enhanced with service workers to work offline or on low-quality networks.
• App-like - Feels like an app, because the app shell model separates the application functionality from application content .
• Fresh - Always up-to-date thanks to the service worker update process.
• Safe - Served via HTTPS to prevent snooping and to ensure content hasn't been tampered with.
• Discoverable - Is identifiable as an "application" thanks to W3C manifest and service worker registration scope, allowing
search engines to find it.
• Re-engageable - Makes re-engagement easy through features like push notifications.
• Installable - Allows users to add apps they find most useful to their home screen without the hassle of an app store.
• Linkable - Easily share the application via URL, does not require complex installation.
https://developers.google.com/web/fundamentals/codelabs/your-first-pwapp/
「はじめてのプログレッシブウェブアプリ」より
ざっくり言うと
Web アプリがローカルアプリになる!
• ホーム画面にアイコン
• インストール時にWeb コンテンツやリソースのキャッシュ
• キャッシュされた JavaScript がオフラインでアプリを制御
• 以下今のところAndroidだけ
• バックグラウンドでの動作(Background Sync)
• Push通知
PWA の動作概要
キャッシュとオンラインコンテンツをService Workerが仲立ち
Cache
Online
Service Worker
Local(offline) で実行
「Web 側」から見てきた
PWA の立ち位置
PWA はフロンティアになれるのか
Web要件アプリ要件
こんな感じの守備範囲だったのが
ネイティブ機能/ハイパフォーマンス 機能の簡潔さ/ローコスト
ネイティブ クロスプラットフォーム
Web
Web要件アプリ要件
こうなりうる
ネイティブ機能/ハイパフォーマンス 機能の簡潔さ/ローコスト
ネイティブ
クロスプラット
フォーム Web
PWA
スマートフォン使用時間に占める
Web の使用時間は 15%(アプリ85%)
Webアプリ
利用率としてはこう?
ネイティブ機能/ハイパフォーマンス 機能の簡潔さ/ローコスト
Webネイティブ クロスプラットフォーム
モバイルにおける Web の存在
ここでみなさんにお聞きしたい
こんな感じに思うのは僕だけ?
Home
App1
Google
Web1
Web2
Web3
・・・
SNS
SNS
個人的見解、共感が得られるかな?
Home
App1
Google
Web1
Web2
Web3
・・・
SNS
SNS
多くのユースケースにおいて
• 入り口は検索か SNS
• ブックマークなんて使わない
• Web サイトは全部ひっくるめ
て、検索や SNS シェアの先にあ
る世界としてひとくくり、ひと
つのアプリみたいに(無意識下
に)思われ、使われていない
か?
古きよき? PC の時代
Home
App1
BROWSER
(BookMark)
Web1
Web2
Web3
・・・
Mail
だからこうしたい
Home
App1
Google
Web1
Web2
Web3
Web
Web
PWA
PWA
SNS
「ホーム画面へ
進撃する」
Webアプリ
頑張れ Web
ネイティブ機能/ハイパフォーマンス 機能の簡潔さ/ローコスト
ネイティブ
クロスプラット
フォーム Web
PWA
今日は「Technical Edition」
WordPress の PWA 化から見えてくる PWA 実装の勘所
WordPress を PWA にするということ
• ほとんどの WordPress サイトは SPA じゃない
(コンテンツだけ切り離せない)
• サーバーサイド(PHP)で埋め込まれた新着情報群、複雑に入
り組んだコンテンツ
• ユーザー(運用、構築)に技術系の人がいるとは限らない
• PWA ニーズはわりとある
• 情報発信系(ブログ、メディア、ニュース)
• Web上のカタログをタブレットアプリ化して営業ツールに流用
• EC
悩みどころ
急がないけど更新を反映し
たいところ
即時反映したいところ
WordPress ではほとんどのコ
ンテンツがサーバー側で生成
されてページに埋め込まれた
状態でブラウザに届く。
どこをどうキャッシュする?
キャッシュの更新タイミング
• ServiceWorkerはオンライン時に同期され、
次回起動時に更新されたものが動作する
• Cacheは明示的に更新するか、ServiceWorker
のActivate時に削除、再取得する実装が一般的
• 先行の既存プラグインはほとんどこの実装
このままじゃ新しく書いた記事が新着リスト
に載らない!?
キャッシュをどう扱うか
• そもそものキャッシュの目的
• 高速化
• ネットワークの節約、オフライン対応
• 考慮点
• 更新の反映
• インタラクティブなコンテンツ
PWA におけるキャッシュのキホン
 Cache first
 Network first
 No cache
(With OFFLINE Page)
HIGH
PERFORMANCE
キャッシュの
利用度が高い
ほどパフォー
マンスはいい
WordPress のページ構成で PWA 化
Template Data
Cache
ページまる
ごとキャッ
シュ
App Shell ライクにできるのが理想
Template Data
REST API
JavaScript
Cache
ページの外
枠だけ
キャッシュ
Progressive – 段階的導入
• WordPress で運用されている多くのサイトで、いきなり SPA 構
成や コンテンツの Ajax 化は困難
• ユーザーの習熟度に合わせていけるように
• 今あるリソースをスタート地点に始められるように設計
• 最終目標は AppShell ライクなフレーム部とコンテンツ部の切り
離し
PWA for WordPress
キャッシュのお悩みを解決できる
Wordpress の PWA 化プラグイン作りました!
PWA4WP のここがいけてる
• キャッシュの有効期限が設定できる
ブログなどの新着記事一覧の埋め込み部分の反映
記事の内容などの更新
急がないけどずっと更新されないのはダメ、というコンテ
ンツはわりと多い
• キャッシュの除外が柔軟に指定できる
Ajax などで取得するような API などの出力データの取り出し
元
リアルタイムで状況を表示するようなコンテンツ
画像だけキャッシュする、というような設定も可能
使ってみよう
DEMO... うまくいきますように
事前に用意しておく
オフラインページ
普通の固定ページでOK
アイコン画像
png形式必須
サイズ 512px x 512px 以
上推奨
Demo – PWA for WordPress
インストール
https://wordpress.org/plugins/pwa4wp/
「プラグイン→新規追加」から
「PWA for WordPress」または「PWA4WP」を検索
Demo – PWA for WordPress
セットアップ
•Manifest
•ServiceWorker
•PWA 発行
Demo – PWA for WordPress
メイン画面
Demo – PWA for WordPress
Manifest
Demo – PWA for WordPress
Manifest
Demo – PWA for WordPress
ServiceWorker
Demo – PWA for WordPress
ServiceWorker
Demo – PWA for WordPress
ServiceWorker キャッシュ制御 ( 正規表現 )
例1:画像( jpg / png / gif ) だけキャッシュするには
以下の2行を指定
^.*.(?!jpg|png|gif)(.{3,4})$
^.*/$
特定の拡張子以外(除外リストの指定なので、「以外」を除外する設定になる)
末尾が / で終わる
Demo – PWA for WordPress
ServiceWorker キャッシュ制御 ( 正規表現 )
例2:REST API を除外する
^.*/wp-json/.*$
Demo – PWA for WordPress
Chrome Developer Tool での確認
(Application タブ)
Demo – PWA for WordPressキャッシュされたデータ
Demo – PWA for WordPress
超高速!!
(Networkそもそも使わないんだから
そりゃそうだ)
Demo – PWA for WordPress
Auditsしてみる
Chromeのツール「Lighthouse」
100点!
生成される ServiceWorker
トップディレクトリに生成
• WordPress のディレクトリ構成は仮想パスなので、Scopeのトップに置
こうとしても実在しない
• ServiceWorker は自身が配置されたディレクトリ以下のコンテンツにし
か適用されない
パラメータを ServiceWorker 内に埋め込み、機能はプラグイン
ディレクトリ内の JavaScript を呼び出し
pwa4wp-cache-manager.js
onFetch
Online-
First
Cache-
First
Fetch
Search
Cache
Return
Cache
Store
Cache
Cache
Storage
Indexed
DB
Return
Response
Fetch
Failed
No
Cache
Return
OFFLINE PAGE
Cache
Found
Fetch
Failed
Fetch
Success
Mode
機能追加予定
• Push
• マルチサイト対応
• インストール提示タイミングのコントロール
• コンテンツ内のウィジェットなどをAjaxに切り離す
(別プラグイン?)
まとめ
キャッシュ制御がとても大事。
いきなり完成型は難しいかもしれないし、
ちょっとずつでも。
(Progressive = 段階的に)
使ってみたい方へ
• PWA for WordPress デモ&ハンズオン
9/22(土) 14:00~
WordPressもくもく勉強会@日本橋 #21
https://wpmokumoku.connpass.com/event/98544/
9/30(日) 10:00~
羽田 WordPress Meetup
https://www.meetup.com/ja-JP/Tokyo-WordPress-
Meetup/events/254132755/
最新ソースは Github にあります
https://github.com/ryu-compin/pwa4wp
欲しい機能とかあったらリクエストください!
・・・って WordCamp では言いましたが今日は違う。
欲しい機能があったら付け足してPullリクお願い!
ありがとうございました。
https://wordpress.org/plugins/pwa4wp/

More Related Content

PPTX
PWA has come!! / 2019/2/9 ABCD 浜松
PDF
Single-page application
PDF
SPAに必要なJavaScriptFrameWork
PPTX
PWA A Go-Go !! @ABC2018A 20181013
PDF
Spa のための web サーバ構築ノウハウ
KEY
Android webブラウザのhtml5対応状況
PPTX
[社内勉強会]SPAのすすめ
PDF
今、WordPress を使う理由
PWA has come!! / 2019/2/9 ABCD 浜松
Single-page application
SPAに必要なJavaScriptFrameWork
PWA A Go-Go !! @ABC2018A 20181013
Spa のための web サーバ構築ノウハウ
Android webブラウザのhtml5対応状況
[社内勉強会]SPAのすすめ
今、WordPress を使う理由

What's hot (20)

PDF
ユーザーにやさしい管理画面をつくるために。テーマ制作者ができること 初級編【WordCamp Kansai 2014】
PDF
業務アプリケーションにおけるモダンWeb開発の現状ーHTML5開発って簡単なの?
PDF
エンジニアからデザイナーに贈るプロトタイピングのすすめ - 春のフロントエンド祭り 2015
PDF
プログラミングってなに?
PDF
PWA aruaru
PPTX
WordPressサイトをスマホアプリにしちゃおう!
PDF
three.jsによる一歩進めたグラフィカルな表現
PDF
リーンスタートアップとPWA
 
PDF
今から始めよう!WordPressで作る女子ウケ★スマホサイト
PPTX
Onsen UIが目指すもの
PPTX
プログラミングの学習方法 | How To Learn The Programming 14.05.31 WP-D Fes #02 Interviews ...
PDF
WordPress APIで作るモバイルアプリ
PPTX
Word press plugin開発にオートロードを使ってみた話
PDF
Ionicでハイブリッドアプリ入門①
PDF
ウェブアクセシビリティチェックツール開発者の頭ん中
PDF
フロントエンド初学者がSPAに手を出してみた
PDF
PWAを使ってWebXRコンテンツをオフラインで動くようにする手順について
PDF
Word camposaka imaigo_slideshare
PDF
The Next PowerCMS
ユーザーにやさしい管理画面をつくるために。テーマ制作者ができること 初級編【WordCamp Kansai 2014】
業務アプリケーションにおけるモダンWeb開発の現状ーHTML5開発って簡単なの?
エンジニアからデザイナーに贈るプロトタイピングのすすめ - 春のフロントエンド祭り 2015
プログラミングってなに?
PWA aruaru
WordPressサイトをスマホアプリにしちゃおう!
three.jsによる一歩進めたグラフィカルな表現
リーンスタートアップとPWA
 
今から始めよう!WordPressで作る女子ウケ★スマホサイト
Onsen UIが目指すもの
プログラミングの学習方法 | How To Learn The Programming 14.05.31 WP-D Fes #02 Interviews ...
WordPress APIで作るモバイルアプリ
Word press plugin開発にオートロードを使ってみた話
Ionicでハイブリッドアプリ入門①
ウェブアクセシビリティチェックツール開発者の頭ん中
フロントエンド初学者がSPAに手を出してみた
PWAを使ってWebXRコンテンツをオフラインで動くようにする手順について
Word camposaka imaigo_slideshare
The Next PowerCMS
Ad

Similar to Challenge PWA!! Technical Edition @JAG201809 (20)

PPTX
Challenge PWA!! TRY PWA4WP!
PPTX
PWA4WP の ServiceWorker
KEY
Html5時代のクリエイターのあり方
KEY
ON HTML5 FIELD で書き尽くせなかったこと
PPTX
Web開発の 今までとこれから
PDF
パソナテック Find Your Ability 講演資料 「ディレクターにとってのWeb業界って? 」
PDF
NSA NB委員会セミナー「モバイルアプリ開発業務におけるmonacaの活用」
PPT
ネットワーク分散型フレームワークConView
PPTX
はやい!?うまい!?安い!?すべてのプラットフォームに届く「 PWA 」の魅力
PPTX
PWA+TWA
KEY
エンジニアの為のWordPress入門 〜WordPressはWebAppプラットフォームです〜
KEY
HTML5時代のwebクリエイターに必要なこと
KEY
スマートフォン開発の事例 Html5開発の導入ポイント
PPTX
多対多のクラウド利用を支えるデータ標準化技術
PDF
ネイティブアプリ開発を加速する、モダンバックエンドとのタイアップ手法
PPT
60分でわかるレスポンシブWebデザイン[セミナー資料]
KEY
Platform.html5
KEY
スマートフォンアプリケーション開発の最新動向
PPTX
wordcamp haneda 20190420 Apps Based on WordPress
KEY
20120413 nestakabaneworkshop
Challenge PWA!! TRY PWA4WP!
PWA4WP の ServiceWorker
Html5時代のクリエイターのあり方
ON HTML5 FIELD で書き尽くせなかったこと
Web開発の 今までとこれから
パソナテック Find Your Ability 講演資料 「ディレクターにとってのWeb業界って? 」
NSA NB委員会セミナー「モバイルアプリ開発業務におけるmonacaの活用」
ネットワーク分散型フレームワークConView
はやい!?うまい!?安い!?すべてのプラットフォームに届く「 PWA 」の魅力
PWA+TWA
エンジニアの為のWordPress入門 〜WordPressはWebAppプラットフォームです〜
HTML5時代のwebクリエイターに必要なこと
スマートフォン開発の事例 Html5開発の導入ポイント
多対多のクラウド利用を支えるデータ標準化技術
ネイティブアプリ開発を加速する、モダンバックエンドとのタイアップ手法
60分でわかるレスポンシブWebデザイン[セミナー資料]
Platform.html5
スマートフォンアプリケーション開発の最新動向
wordcamp haneda 20190420 Apps Based on WordPress
20120413 nestakabaneworkshop
Ad

More from Ryu Shindo (10)

PPTX
Dev tools introduction
PPTX
最大公約数的なServiceWorker制作から見るPWAの勘所
PPTX
20190320 pwanight PWA to APK
PPTX
モバイル Web の歴史をなつかしむ
PPTX
Challenge PWA!! WordCamp Tokyo 2018
PPTX
南島原 it ナイト vol.5 20180703
PPTX
PWA 総まとめ @ABC 2018 Spring
PPTX
Cache 自由自在
PPTX
Service Workerとは何者か
PPTX
PWAがたぶんくる
Dev tools introduction
最大公約数的なServiceWorker制作から見るPWAの勘所
20190320 pwanight PWA to APK
モバイル Web の歴史をなつかしむ
Challenge PWA!! WordCamp Tokyo 2018
南島原 it ナイト vol.5 20180703
PWA 総まとめ @ABC 2018 Spring
Cache 自由自在
Service Workerとは何者か
PWAがたぶんくる

Challenge PWA!! Technical Edition @JAG201809