SlideShare ist ein Scribd-Unternehmen logo
1 von 79
Apps based
on WordPress
Ryunosuke Shindo
@WordCamp Haneda 2019
2019/04/20
自己紹介
進藤 龍之介
エンジニア/日本Androidの会
2018年 Web Working Group PWA 集中勉強会主催
WordPress プラグイン「PWA for WordPress」開発
オンライン診療サービス「YaDoc」開発に参加
Twitter @ryu_compin
Fb ryushindo
Web サイトの役割
何に使ってますか?
Web サイトで完結?
 ブログ
 プロモーション
 コーポレート
 EC
 サービス(コミュニケーションなど)
 アプリ
サービスの中の Web サイト : EC を例に
Web site
Apps
PWA
Payment
Logistics
Inquiry
Office
Data
Web は Front Office の中心に
Web サイトを拡張して活用する
• フロントサイド
• PWA
• アプリのデータ基盤
• バックサイド
• オフィス連携
• 決済、物流などへの自動連携
そこで WordPress です
• 連携に必要な機能が実装しやすい
• 豊富なプラグイン
• REST API などでデータ連携
•PWA for WordPress がある!!
今日の話はフロントの拡張
PWA と アプリケーション
ココ
Web site
Apps
PWA
Payment
Logistics
Inquiry
Office
Data
PWA って?
Progressive Web Apps
Web アプリがローカルアプリになる
• ホーム画面にアイコン
• インストール時にWeb コンテンツやリソースのキャッシュ
• キャッシュされた javascript がオフラインでアプリを制御
• 以下今のところAndroidだけ
• バックグラウンドでの動作(Background Sync)
• Push通知
細かくすると
Progressive すべてのブラウザで動作するように、Progressive Enhancement の理念で構築する。
Responsive デスクトップ、モバイル、タブレットなどあらゆる環境に対応する。
Connectivity independent ServiceWorker の機能により、オフラインや低速回線でも動作する。
App-like 機能とコンテンツを切り分けるアップシェルモデルによりアプリのような操作感を実現する。
Fresh ServiceWorker のアップデートプロセスにより、常に最新の状態を保つ。
Safe HTTPSによる通信で情報漏洩やコンテンツ改ざんからの安全性を確保する。
Discoverable W3C準拠の Manifest と ServiceWorker の「スコープ」により検索エンジンはアプリを検知することができる。
Re-engageable プッシュ通知などの機能により再エンゲージメントを容易にする。
Installable アプリストアを経由しなくてもホーム画面にアプリとしてインストールすることができる。
Linkable URLとしてシェアすることができ、複雑なインストール要件を必要としない。
(Google Developer Blogより)
PWA の動作概要
キャッシュとオンラインコンテンツをService Workerが仲立ち
Cache
Online
Service Worker
Internet
Local
Cache
Browser
ひとまずの「 PWA 化」
サイトそのまんまでも、今フルHTTPSサイトなら
• Manifest
• Service Worker
を追加して、インストール部分を追記したらと
りあえずPWA化できる
なぜ PWA にするの?
いいこといろいろあります
いいこと
• キャッシュによる速度向上
• オフライン対応
• エンゲージメント
• コンバージョン率の向上
• Push
• Background Sync
モバイルにおける Web の存在
Web サイト不遇の時代?
スマートフォン使用時間に占める
Web の使用時間は 15%(アプリ85%)
Web の立ち位置
Home
App1
Google
Web1
Web2
Web3
・・・
SNS
SNS
多くのユースケースにおいて
• 入り口は検索か SNS
• ブックマークなんて使わない
PWA にかけられた期待
PWA で何が変わるのか
こうしたい
Home
App1
Google
Web1
Web2
Web3
Web
Web
PWA
PWA
SNS
PWA for WordPress
PWAの動きを見てみよう
PWA for WordPress のココがいけてる
• 柔軟なキャッシュ制御
キャッシュ する/しない コンテンツを除外設定でコントロール
オンライン優先モード、キャッシュ優先モードの基本設定
初期キャッシュを自由に設定
• インストールポップアップの制御
• その他細かいところ
日本語
アイコンの自動リサイズ
既存サイトを PWA 化
WordPress + WooCommerce の EC サイトを簡単にそのまま PWA 化
事前に用意しておく
オフラインページ
普通の固定ページでOK
アイコン画像
png形式必須
サイズ 512px x 512px 以
上推奨
PWA for WordPress
インストール
https://wordpress.org/plugins/pwa4wp/
「プラグイン→新規追加」から
「PWA for WordPress」または「PWA4WP」を検索
PWA for WordPress
セットアップ
•Manifest
•ServiceWorker
•PWA 発行
PWA for WordPress
メイン画面
PWA for WordPress
Manifest
PWA for WordPress
Manifest
PWA for WordPress
ServiceWorker
PWA for WordPress
ServiceWorker
PWA for WordPress
ServiceWorker キャッシュ制御 ( 正規表現 )
例1:画像( jpg / png / gif ) だけキャッシュするには
以下の2行を指定
^.*.(?!jpg|png|gif)(.{3,4})$
^.*/$
特定の拡張子以外(除外リストの指定なので、「以外」を除外する設定になる)
末尾が / で終わる
PWA for WordPress
ServiceWorker キャッシュ制御 ( 正規表現 )
例2:REST API を除外する
^.*/wp-json/.*$
PWA for WordPress
Chrome Developer Tool での確認
(Application タブ)
PWA for WordPress
キャッシュされたデータ
PWA for WordPress
超高速!!
(Networkそもそも使わないんだから
そりゃそうだ)
PWA for WordPress
Auditsしてみる
Chromeのツール「Lighthouse」
Good!
※最近 PWA の項目が
点数じゃなくなりま
した
インストール
インストール完了
• スプラッシュいいね
• やっぱキャッシュすると速
い!
• ホーム画面のアイコンも
ブラウザ表示と PWA
ブラウザ PWA
アドレスバー
の有無
オフライン
で見てみる
OK!
アプリのサイズ
わずか201K、
とてもコンパクト!
実装の要点は
キャッシュプラン
失敗しない実装計画
基本キャッシュプランとして
Cache First と Online First
キャッシュの除外
キャッシュするもの、しないもの
↑大事
キャッシュされてはいけないものを除外する
キャッシュの有効期限
古いキャッシュを一定期間で捨てる
これから実装したい
Online First だけど一部 Cache First にしたい
Cache First だけど一部 Online First にしたい
最大公約数的キャッシュプラン完成型?
基本キャッシュプラン
Online First
Cache First
キャッシュ除外
(正規表現で柔軟にURLを指定)
キャッシュ有効期限
プラン反転指定URL
(Coming Next)
あとはprecacheとか追加的な機能もいろいろあるけど、そこは追々・・・
結局キャッシュプランの設計は・・・
キャッシュ{する|しない}要素の
切り分けが大事。
PWA 設計のちょっとしたヒントになれば幸いです。
ひと手間かけて改修
サイトの改修が可能なら、PWA で「キャッシュしたくない」と
ころを切り離す
WordPress の例:
ページ構成そのまま PWA 化
Template Data
Cache
ページまる
ごとキャッ
シュ
App Shell ライクにできるのが理想
Template Data
REST API
JavaScript
Cache
ページの外
枠だけ
キャッシュ
API 化して、URL をキャッシュ除外
Template Data
REST API
JavaScript
Cache
ページの外
枠だけ
キャッシュ
キャッシュ
除外 or
Online-Firstに
する
よくあるトラブル
前もって知っていれば怖くない
https 不完全問題
http コンテンツの埋め込みが混入している
Good Bad
http の埋め込みを探して修正
• http → https 化したときに、http 埋め込みが残留しているケース
が多い
• 外部サイトのアイコン
• JavaScript からの呼び出し
• WordPress のプラグインからの呼び出し(見つけにくい)
• DevTools の Console で確認する
キャッシュ焦げ付き問題
• IndexedDB などを利用して実装
• WorkBox にはキャッシュの有効期限を指定できるプラグインあ
り
• WordPress なら PWA4WP !
iPhone キラー:行き止まり
• 画像の全画面表示などでどん詰まり
<a href="some-beautiful-picture.jpg"><img src="some-beautiful-picture.jpg" width=xxx height=xxx></a>
外部ページとの行き来
• 外部ページに遷移すると、PWA はポップアウト画面(ブラウ
ザ)を開くが、処理完了後正しく戻れない
• 認証
• 決済
• ひとつ前の画面からポップアウトさせて結果を受け取るしか今
のところ手がない?
authwindow = window.open (”auth.html",”authentication", "width=480,height=480");
番外編:WordPress プラグインの動作障害
• PWA にしたら特定のプラグインが動かなくなった
• プラグインが JavaScript で自身のフォルダを参照してリアルタイム性の
必要な情報を取得していた場合など
• キャッシュの除外設定でプラグインの導入先を除外することで多くは
回避可能(PWA for WordPress)
^.*/wp-content/plugins/plugin-name/.*$
PWA まとめ
PWA はキャッシュ制御がとても大事。
いきなり完成型は難しいかもしれないし、
ちょっとずつでも。
(Progressive = 段階的に)
ぜひ試してみてください。
さて、まだいくよ!
Apps へ
PWA を Android ネイティブアプリ ( APK )に
PWA → TWA → APK
アプリ開発に新しい手法が登場?
• Chrome 72 for Android 公開!
• Chrome 72 から Trusted Web Activity が実装されたよ!
• PWA が Google Play Store に載せられるようになったよ!
• Trusted Web Activity は Chrome のActivity(画面インスタンス)として
動作
• サクッと URL 登録して完了!とはいかない、手順多い。
• Chrome と通信する Java の API
• Cordova みたいな Web リソースをパッケージングするようなもので
はない。
• セッション、ストレージ、キャッシュなどは Chrome と共有
要するに
Chrome に乗った PWA (の Activity)を内包する APK (Android アプ
リケーションパッケージ)
いいことあるの?その1
• ウィジェット
• アイコン長押しのアプリケーションショートカットなどのOSと
の密接な統合
• wear OS や Android Auto などへの拡張
• ハードリセットや機種変更時に再インストールされる
• バックグラウンドサービスでネイティブ機能を利用可能
いいことあるの?その2
• マネタイズ
• PWA コンテンツとネイティブの画面が混在可能
• 同一ホストのコンテンツから複数の PWA アプリが作れる
• 国際化サポート
TWA ( Trusted Web Activity )
• Digital Asset Links によるコンテンツの信頼性確保
• ブラウザによるレンダリング
• 最新の環境
• Jelly Bean まで対応
• Web View が OS から切り離されたのは Lollipop 以降
• Web View より Chrome のほうが新しい
• アプリからコンテンツへの直接のアクセスはできない
• クエリパラメーターやカスタムHTTPヘッダ、intent URI などでやりと
り?
• Web とネイティブの遷移はアクティビティの切替で行う
Digital Asset Links
アプリとWebコンテンツ間の信頼(Trust)の確保
intent の紐付け(URLのタップでアプリが起動される)
https://www.example.com/.well-known/assetlinks.json
[{
"relation": ["delegate_permission/common.handle_all_urls"],
"target" : { "namespace": "android_app", "package_name": "jp.compin.android.pwa.crowdfarmdiary",
"sha256_cert_fingerprints": [“XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"] }
}]
https://developers.google.com/digital-asset-links/v1/getting-started
動かしてみる
ネイティブとの融合
Webコアなシステムモデルを考えよう
Web コアなシステム
Web サイト/アプリ in Browser
ネイティブアプリ
内包・拡張
考慮点
• Webとネイティブのデータ連携
• まだ模索中
• PWA でせっかくオフライン稼働できるのに、サーバー経由でデータの
やりとりなんて寂しすぎる
• いい方法思いついたら教えてください。
• Web側の実装
• アプリに戻るボタン類はブラウザ閲覧で表示されないように工夫しな
いと
→通常のアクセスとアプリからのアクセスを分類できるように実装す
る工夫
Webをさらに活かせる可能性
はたくさんあると思います。
参考:PWA の細かい解説、拙著ですが
ビジネス+IT
PWA(Progressive Web Apps)はどうスゴイのか?
基本知識と12のメリットを解説 ( 2/7 公開)
https://www.sbbit.jp/article/cont1/35949
最後に告知!
日本 Android の会
ABC 2019 Spring
2019/5/26
@東海大学高輪キャンパス
今年もモバイルWebトラックをやります!
PWA についてもっと掘り下げたい方、どっぷり半日PWAの話が聞けま
す!
ぜひお越しください。
https://japan-android-group.connpass.com/event/125928/
ありがとうございました。
PWA for WordPress ぜひお試しください
https://wordpress.org/plugins/pwa4wp/

Weitere ähnliche Inhalte

Was ist angesagt?

Word camposaka imaigo_slideshare
Word camposaka imaigo_slideshareWord camposaka imaigo_slideshare
Word camposaka imaigo_slideshare
Go Imai
 
Word bench長崎01「オリジナルテーマで学ぶwordpressの基本」
Word bench長崎01「オリジナルテーマで学ぶwordpressの基本」Word bench長崎01「オリジナルテーマで学ぶwordpressの基本」
Word bench長崎01「オリジナルテーマで学ぶwordpressの基本」
タカシ キタジマ
 
20150523 chatwork continuous delivery
20150523 chatwork continuous delivery20150523 chatwork continuous delivery
20150523 chatwork continuous delivery
Yoshinori Fujiwara
 

Was ist angesagt? (17)

フロントエンド初学者がSPAに手を出してみた
フロントエンド初学者がSPAに手を出してみたフロントエンド初学者がSPAに手を出してみた
フロントエンド初学者がSPAに手を出してみた
 
PWA for beginner#2
PWA for beginner#2PWA for beginner#2
PWA for beginner#2
 
Web API を気軽に使える ツールやサービスのご紹介
Web API を気軽に使えるツールやサービスのご紹介Web API を気軽に使えるツールやサービスのご紹介
Web API を気軽に使える ツールやサービスのご紹介
 
UnderScoreとbootstrapとsassでword pressのテーマをつくろう
 UnderScoreとbootstrapとsassでword pressのテーマをつくろう UnderScoreとbootstrapとsassでword pressのテーマをつくろう
UnderScoreとbootstrapとsassでword pressのテーマをつくろう
 
WordPressプラグインの作り方
WordPressプラグインの作り方WordPressプラグインの作り方
WordPressプラグインの作り方
 
Voxer loves Drupal
Voxer loves DrupalVoxer loves Drupal
Voxer loves Drupal
 
Word camposaka imaigo_slideshare
Word camposaka imaigo_slideshareWord camposaka imaigo_slideshare
Word camposaka imaigo_slideshare
 
Word bench長崎01「オリジナルテーマで学ぶwordpressの基本」
Word bench長崎01「オリジナルテーマで学ぶwordpressの基本」Word bench長崎01「オリジナルテーマで学ぶwordpressの基本」
Word bench長崎01「オリジナルテーマで学ぶwordpressの基本」
 
20150523 chatwork continuous delivery
20150523 chatwork continuous delivery20150523 chatwork continuous delivery
20150523 chatwork continuous delivery
 
three.jsによる一歩進めたグラフィカルな表現
three.jsによる一歩進めたグラフィカルな表現three.jsによる一歩進めたグラフィカルな表現
three.jsによる一歩進めたグラフィカルな表現
 
Web Site Optimization for Beginners
Web Site Optimization for BeginnersWeb Site Optimization for Beginners
Web Site Optimization for Beginners
 
Web API(Dynamics 365 )勉強会
Web API(Dynamics 365 )勉強会Web API(Dynamics 365 )勉強会
Web API(Dynamics 365 )勉強会
 
[社内勉強会]SPAのすすめ
[社内勉強会]SPAのすすめ[社内勉強会]SPAのすすめ
[社内勉強会]SPAのすすめ
 
IPv6にどう取り組むか
IPv6にどう取り組むかIPv6にどう取り組むか
IPv6にどう取り組むか
 
WP-CLI (WordBench Sendai 20140628)
WP-CLI (WordBench Sendai 20140628)WP-CLI (WordBench Sendai 20140628)
WP-CLI (WordBench Sendai 20140628)
 
PWA A Go-Go !! @ABC2018A 20181013
PWA A Go-Go !! @ABC2018A 20181013PWA A Go-Go !! @ABC2018A 20181013
PWA A Go-Go !! @ABC2018A 20181013
 
SharePointアドイン開発 SAPデータ連携
SharePointアドイン開発 SAPデータ連携SharePointアドイン開発 SAPデータ連携
SharePointアドイン開発 SAPデータ連携
 

Ähnlich wie wordcamp haneda 20190420 Apps Based on WordPress

Ähnlich wie wordcamp haneda 20190420 Apps Based on WordPress (20)

PWA+TWA
PWA+TWAPWA+TWA
PWA+TWA
 
Challenge PWA!! WordCamp Tokyo 2018
Challenge PWA!!  WordCamp Tokyo 2018Challenge PWA!!  WordCamp Tokyo 2018
Challenge PWA!! WordCamp Tokyo 2018
 
PWA4WP の ServiceWorker
PWA4WP の ServiceWorkerPWA4WP の ServiceWorker
PWA4WP の ServiceWorker
 
PWA 総まとめ @ABC 2018 Spring
PWA 総まとめ @ABC 2018 SpringPWA 総まとめ @ABC 2018 Spring
PWA 総まとめ @ABC 2018 Spring
 
最大公約数的なServiceWorker制作から見るPWAの勘所
最大公約数的なServiceWorker制作から見るPWAの勘所最大公約数的なServiceWorker制作から見るPWAの勘所
最大公約数的なServiceWorker制作から見るPWAの勘所
 
Prejob wordpress v2_1121
Prejob wordpress v2_1121Prejob wordpress v2_1121
Prejob wordpress v2_1121
 
Prejob wordpress v2_1121
Prejob wordpress v2_1121Prejob wordpress v2_1121
Prejob wordpress v2_1121
 
SharePoint 開発でできること 2019年9月版
SharePoint 開発でできること 2019年9月版SharePoint 開発でできること 2019年9月版
SharePoint 開発でできること 2019年9月版
 
Challenge PWA!! TRY PWA4WP!
Challenge PWA!! TRY PWA4WP!Challenge PWA!! TRY PWA4WP!
Challenge PWA!! TRY PWA4WP!
 
20170705 apiをつくろう
20170705 apiをつくろう20170705 apiをつくろう
20170705 apiをつくろう
 
Challenge PWA!! Technical Edition @JAG201809
Challenge PWA!! Technical Edition @JAG201809Challenge PWA!! Technical Edition @JAG201809
Challenge PWA!! Technical Edition @JAG201809
 
Web appsとcleardbで作る簡単webサイト
Web appsとcleardbで作る簡単webサイトWeb appsとcleardbで作る簡単webサイト
Web appsとcleardbで作る簡単webサイト
 
Webアプリの向こうに見えるPWAアプリ開発
Webアプリの向こうに見えるPWAアプリ開発Webアプリの向こうに見えるPWAアプリ開発
Webアプリの向こうに見えるPWAアプリ開発
 
CData General Proposal
CData General ProposalCData General Proposal
CData General Proposal
 
Keynote
KeynoteKeynote
Keynote
 
Ecsとlambdaのバッチ処理
Ecsとlambdaのバッチ処理Ecsとlambdaのバッチ処理
Ecsとlambdaのバッチ処理
 
クラウドを積極活用した サービスの開発のために
クラウドを積極活用したサービスの開発のためにクラウドを積極活用したサービスの開発のために
クラウドを積極活用した サービスの開発のために
 
はやい!?うまい!?安い!?すべてのプラットフォームに届く「 PWA 」の魅力
はやい!?うまい!?安い!?すべてのプラットフォームに届く「 PWA 」の魅力はやい!?うまい!?安い!?すべてのプラットフォームに届く「 PWA 」の魅力
はやい!?うまい!?安い!?すべてのプラットフォームに届く「 PWA 」の魅力
 
スマートフォンWebアプリ最適化”3つの極意”
スマートフォンWebアプリ最適化”3つの極意”スマートフォンWebアプリ最適化”3つの極意”
スマートフォンWebアプリ最適化”3つの極意”
 
WordPressのオススメスライドとか記事とか集めました。(2012.10.13 WordBench神戸)
WordPressのオススメスライドとか記事とか集めました。(2012.10.13 WordBench神戸)WordPressのオススメスライドとか記事とか集めました。(2012.10.13 WordBench神戸)
WordPressのオススメスライドとか記事とか集めました。(2012.10.13 WordBench神戸)
 

Mehr von Ryu Shindo

Mehr von Ryu Shindo (8)

Dev tools introduction
Dev tools introductionDev tools introduction
Dev tools introduction
 
20190320 pwanight PWA to APK
20190320 pwanight PWA to APK20190320 pwanight PWA to APK
20190320 pwanight PWA to APK
 
モバイル Web の歴史をなつかしむ
モバイル Web の歴史をなつかしむモバイル Web の歴史をなつかしむ
モバイル Web の歴史をなつかしむ
 
南島原 it ナイト vol.5 20180703
南島原 it ナイト vol.5 20180703南島原 it ナイト vol.5 20180703
南島原 it ナイト vol.5 20180703
 
WordPressサイトをスマホアプリにしちゃおう!
WordPressサイトをスマホアプリにしちゃおう!WordPressサイトをスマホアプリにしちゃおう!
WordPressサイトをスマホアプリにしちゃおう!
 
Cache 自由自在
Cache 自由自在Cache 自由自在
Cache 自由自在
 
Service Workerとは何者か
Service Workerとは何者かService Workerとは何者か
Service Workerとは何者か
 
PWAがたぶんくる
PWAがたぶんくるPWAがたぶんくる
PWAがたぶんくる
 

wordcamp haneda 20190420 Apps Based on WordPress