SlideShare une entreprise Scribd logo
1  sur  24
PWA to APK
~ ネイティブアプリとの融合
2019/03/20
PWA Night vol.2
Ryunosuke Shindo
自己紹介
進藤 龍之介
エンジニア/日本Androidの会
2018年 Web Working Group PWA 集中勉強会主催
WordPress プラグイン「PWA for WordPress」開発
オンライン診療サービス「YaDoc」開発に参加 [New]
Twitter @ryu_compin
Fb ryushindo
PWA on APK
PWA → TWA → APK
1/31
Google Play Store now open for
Progressive Web Apps 😱
https://medium.com/@firt/goog
le-play-store-now-open-for-
progressive-web-apps-
ec6f3c6ff3cc
ざっくり
• Chrome 72 for Android 公開!
• Chrome 72 から Trusted Web Activity が実装されたよ!
• PWA が Google Play Store に載せられるようになったよ!
• サクッと URL 登録して完了!とはいかない、手順多い。
• Chrome と通信する Java の API
• Cordova みたいな Web リソースをパッケージングするようなも
のではない。
• セッション、ストレージ、キャッシュなどは Chrome と共有
要するに
Chrome に乗った PWA (の Activity)を内包する APK
いいことあるの?その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
Statement List Generator and Tester
https://developers.google.com/digital-asset-links/tools/generator
SHA256 fingerprint の表示
keytool -list -v -keystore [jks_file] -alias [alias_name] -storepass [pass] -keypass [pass]
アプリの構成
Google Chrome Labs のサンプル使います
https://github.com/GoogleChromeLabs/svgomg-twa
TWA Support Library
build.gradle(project) に Jitpack 追加
allprojects {
repositories {
google()
jcenter()
maven { url "https://jitpack.io" }
}
}
build.gradle (app)
TWA ライブラリの前提 Java 8 とTWA Support Library
android {
...
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
dependencies {
implementation 'com.github.GoogleChrome.custom-tabs-
client:customtabs:3a71a75c9f'
}
TWA Activity
<activity android:name="android.support.customtabs.trusted.LauncherActivity"
android:label="${launcherName}">
<meta-data android:name="android.support.customtabs.trusted.DEFAULT_URL"
android:value="${defaultUrl}" />
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
~~~~~~~
~~~~~~~
</activity>
動かしてみる
アドレスバー表示されちゃってるよ!?
リリースビルドでちゃんとfingerprintがサイト側の assetlink と一致すれば出なくなります。
そうでない場合は普通に Chrome の customtab みたい。
こんなサービスも出てました
• PWA対応サイトのURLを入れるだけでAPKを作ってくれる
• 作るだけなら無料
• 独自のパッケージ名をつける場合は有料
https://pwa2apk.com/
ネイティブとの融合
Webコアなシステムモデルを考えよう
Web コアなシステム
Web サイト/アプリ in Browser
内包・拡張
ネイティブアプリ
考慮点
• Webとネイティブのデータ連携
• まだ模索中
• PWA でせっかくオフライン稼働できるのに、サーバー経由でデータの
やりとりなんて寂しすぎる
• いい方法思いついたら教えてください。
• Web側の実装
• アプリに戻るボタン類はブラウザ閲覧で表示されないように工夫しな
いと
→通常のアクセスとアプリからのアクセスを分類できるように実装す
る工夫
Webをさらに活かせる可能性
はたくさんあると思います。
ありがとうございました。
参照
• Google Play Store now open for Progressive Web Apps
https://medium.com/@firt/google-play-store-now-open-for-
progressive-web-apps-ec6f3c6ff3cc
• Using Trusted Web Activities
https://developers.google.com/web/updates/2019/02/using-twa
• Digital Asset Links
https://developers.google.com/digital-asset-links/v1/getting-started
• Sample
https://github.com/GoogleChromeLabs/svgomg-twa

Contenu connexe

Similaire à 20190320 pwanight PWA to APK

Challenge PWA!! Technical Edition @JAG201809
Challenge PWA!! Technical Edition @JAG201809Challenge PWA!! Technical Edition @JAG201809
Challenge PWA!! Technical Edition @JAG201809Ryu Shindo
 
Challenge PWA!! TRY PWA4WP!
Challenge PWA!! TRY PWA4WP!Challenge PWA!! TRY PWA4WP!
Challenge PWA!! TRY PWA4WP!Ryu Shindo
 
PWA A Go-Go !! @ABC2018A 20181013
PWA A Go-Go !! @ABC2018A 20181013PWA A Go-Go !! @ABC2018A 20181013
PWA A Go-Go !! @ABC2018A 20181013Ryu Shindo
 
PWA4WP の ServiceWorker
PWA4WP の ServiceWorkerPWA4WP の ServiceWorker
PWA4WP の ServiceWorkerRyu Shindo
 
Dropbox APIなどを使って制作を効率化しよう@関西オープンフォーラム
Dropbox APIなどを使って制作を効率化しよう@関西オープンフォーラムDropbox APIなどを使って制作を効率化しよう@関西オープンフォーラム
Dropbox APIなどを使って制作を効率化しよう@関西オープンフォーラムMasayuki Abe
 
WebIntentsにより拓かれる次のWeb
WebIntentsにより拓かれる次のWebWebIntentsにより拓かれる次のWeb
WebIntentsにより拓かれる次のWebKensaku Komatsu
 
DroidKaigi 2018 - Dialogflow for Android
DroidKaigi 2018 - Dialogflow for AndroidDroidKaigi 2018 - Dialogflow for Android
DroidKaigi 2018 - Dialogflow for AndroidSENSY Inc
 
6th oct2012 kobeit_webintents
6th oct2012 kobeit_webintents6th oct2012 kobeit_webintents
6th oct2012 kobeit_webintentsKensaku Komatsu
 
Cloud native & cloud design patterns for small teams - ハッカーズチャンプルー2018
Cloud native & cloud design patterns for  small teams - ハッカーズチャンプルー2018Cloud native & cloud design patterns for  small teams - ハッカーズチャンプルー2018
Cloud native & cloud design patterns for small teams - ハッカーズチャンプルー2018Yutaka Tachibana
 
モバイルVR「Daydream」について
モバイルVR「Daydream」についてモバイルVR「Daydream」について
モバイルVR「Daydream」についてSatoshi Noda
 
PyScriptの紹介
PyScriptの紹介PyScriptの紹介
PyScriptの紹介2bo 2bo
 
wordcamp haneda 20190420 Apps Based on WordPress
wordcamp haneda 20190420 Apps Based on WordPresswordcamp haneda 20190420 Apps Based on WordPress
wordcamp haneda 20190420 Apps Based on WordPressRyu Shindo
 
はやい!?うまい!?安い!?すべてのプラットフォームに届く「 PWA 」の魅力
はやい!?うまい!?安い!?すべてのプラットフォームに届く「 PWA 」の魅力はやい!?うまい!?安い!?すべてのプラットフォームに届く「 PWA 」の魅力
はやい!?うまい!?安い!?すべてのプラットフォームに届く「 PWA 」の魅力Ryu Shindo
 
Dev tools introduction
Dev tools introductionDev tools introduction
Dev tools introductionRyu Shindo
 
Hands on PhotoBlog App with WordPress REST API and App Inventor
Hands on PhotoBlog App with WordPress REST API and App InventorHands on PhotoBlog App with WordPress REST API and App Inventor
Hands on PhotoBlog App with WordPress REST API and App InventorHong Chen
 
WordPressとわぷーのGPL 奈良編
WordPressとわぷーのGPL 奈良編WordPressとわぷーのGPL 奈良編
WordPressとわぷーのGPL 奈良編Shigeki Takai
 
マルチクラウドデータ連携Javaアプリケーションの作り方
マルチクラウドデータ連携Javaアプリケーションの作り方マルチクラウドデータ連携Javaアプリケーションの作り方
マルチクラウドデータ連携Javaアプリケーションの作り方CData Software Japan
 
Challenge PWA!! WordCamp Tokyo 2018
Challenge PWA!!  WordCamp Tokyo 2018Challenge PWA!!  WordCamp Tokyo 2018
Challenge PWA!! WordCamp Tokyo 2018Ryu Shindo
 
第49回HTML5勉強会 Google I/O 2014サマリー
第49回HTML5勉強会 Google I/O 2014サマリー第49回HTML5勉強会 Google I/O 2014サマリー
第49回HTML5勉強会 Google I/O 2014サマリーTakuya Oikawa
 

Similaire à 20190320 pwanight PWA to APK (20)

Challenge PWA!! Technical Edition @JAG201809
Challenge PWA!! Technical Edition @JAG201809Challenge PWA!! Technical Edition @JAG201809
Challenge PWA!! Technical Edition @JAG201809
 
Challenge PWA!! TRY PWA4WP!
Challenge PWA!! TRY PWA4WP!Challenge PWA!! TRY PWA4WP!
Challenge PWA!! TRY PWA4WP!
 
PWA A Go-Go !! @ABC2018A 20181013
PWA A Go-Go !! @ABC2018A 20181013PWA A Go-Go !! @ABC2018A 20181013
PWA A Go-Go !! @ABC2018A 20181013
 
PWA4WP の ServiceWorker
PWA4WP の ServiceWorkerPWA4WP の ServiceWorker
PWA4WP の ServiceWorker
 
Dropbox APIなどを使って制作を効率化しよう@関西オープンフォーラム
Dropbox APIなどを使って制作を効率化しよう@関西オープンフォーラムDropbox APIなどを使って制作を効率化しよう@関西オープンフォーラム
Dropbox APIなどを使って制作を効率化しよう@関西オープンフォーラム
 
WebIntentsにより拓かれる次のWeb
WebIntentsにより拓かれる次のWebWebIntentsにより拓かれる次のWeb
WebIntentsにより拓かれる次のWeb
 
DroidKaigi 2018 - Dialogflow for Android
DroidKaigi 2018 - Dialogflow for AndroidDroidKaigi 2018 - Dialogflow for Android
DroidKaigi 2018 - Dialogflow for Android
 
6th oct2012 kobeit_webintents
6th oct2012 kobeit_webintents6th oct2012 kobeit_webintents
6th oct2012 kobeit_webintents
 
20131214 wtm62
20131214 wtm6220131214 wtm62
20131214 wtm62
 
Cloud native & cloud design patterns for small teams - ハッカーズチャンプルー2018
Cloud native & cloud design patterns for  small teams - ハッカーズチャンプルー2018Cloud native & cloud design patterns for  small teams - ハッカーズチャンプルー2018
Cloud native & cloud design patterns for small teams - ハッカーズチャンプルー2018
 
モバイルVR「Daydream」について
モバイルVR「Daydream」についてモバイルVR「Daydream」について
モバイルVR「Daydream」について
 
PyScriptの紹介
PyScriptの紹介PyScriptの紹介
PyScriptの紹介
 
wordcamp haneda 20190420 Apps Based on WordPress
wordcamp haneda 20190420 Apps Based on WordPresswordcamp haneda 20190420 Apps Based on WordPress
wordcamp haneda 20190420 Apps Based on WordPress
 
はやい!?うまい!?安い!?すべてのプラットフォームに届く「 PWA 」の魅力
はやい!?うまい!?安い!?すべてのプラットフォームに届く「 PWA 」の魅力はやい!?うまい!?安い!?すべてのプラットフォームに届く「 PWA 」の魅力
はやい!?うまい!?安い!?すべてのプラットフォームに届く「 PWA 」の魅力
 
Dev tools introduction
Dev tools introductionDev tools introduction
Dev tools introduction
 
Hands on PhotoBlog App with WordPress REST API and App Inventor
Hands on PhotoBlog App with WordPress REST API and App InventorHands on PhotoBlog App with WordPress REST API and App Inventor
Hands on PhotoBlog App with WordPress REST API and App Inventor
 
WordPressとわぷーのGPL 奈良編
WordPressとわぷーのGPL 奈良編WordPressとわぷーのGPL 奈良編
WordPressとわぷーのGPL 奈良編
 
マルチクラウドデータ連携Javaアプリケーションの作り方
マルチクラウドデータ連携Javaアプリケーションの作り方マルチクラウドデータ連携Javaアプリケーションの作り方
マルチクラウドデータ連携Javaアプリケーションの作り方
 
Challenge PWA!! WordCamp Tokyo 2018
Challenge PWA!!  WordCamp Tokyo 2018Challenge PWA!!  WordCamp Tokyo 2018
Challenge PWA!! WordCamp Tokyo 2018
 
第49回HTML5勉強会 Google I/O 2014サマリー
第49回HTML5勉強会 Google I/O 2014サマリー第49回HTML5勉強会 Google I/O 2014サマリー
第49回HTML5勉強会 Google I/O 2014サマリー
 

Plus de Ryu Shindo

モバイル Web の歴史をなつかしむ
モバイル Web の歴史をなつかしむモバイル Web の歴史をなつかしむ
モバイル Web の歴史をなつかしむRyu Shindo
 
南島原 it ナイト vol.5 20180703
南島原 it ナイト vol.5 20180703南島原 it ナイト vol.5 20180703
南島原 it ナイト vol.5 20180703Ryu Shindo
 
PWA 総まとめ @ABC 2018 Spring
PWA 総まとめ @ABC 2018 SpringPWA 総まとめ @ABC 2018 Spring
PWA 総まとめ @ABC 2018 SpringRyu Shindo
 
Cache 自由自在
Cache 自由自在Cache 自由自在
Cache 自由自在Ryu Shindo
 
Service Workerとは何者か
Service Workerとは何者かService Workerとは何者か
Service Workerとは何者かRyu Shindo
 
PWAがたぶんくる
PWAがたぶんくるPWAがたぶんくる
PWAがたぶんくるRyu Shindo
 

Plus de Ryu Shindo (6)

モバイル Web の歴史をなつかしむ
モバイル Web の歴史をなつかしむモバイル Web の歴史をなつかしむ
モバイル Web の歴史をなつかしむ
 
南島原 it ナイト vol.5 20180703
南島原 it ナイト vol.5 20180703南島原 it ナイト vol.5 20180703
南島原 it ナイト vol.5 20180703
 
PWA 総まとめ @ABC 2018 Spring
PWA 総まとめ @ABC 2018 SpringPWA 総まとめ @ABC 2018 Spring
PWA 総まとめ @ABC 2018 Spring
 
Cache 自由自在
Cache 自由自在Cache 自由自在
Cache 自由自在
 
Service Workerとは何者か
Service Workerとは何者かService Workerとは何者か
Service Workerとは何者か
 
PWAがたぶんくる
PWAがたぶんくるPWAがたぶんくる
PWAがたぶんくる
 

20190320 pwanight PWA to APK