SlideShare uma empresa Scribd logo
1 de 24
PWA+TWA
2019/5/26
@ABC 2019 Spring
Ryunosuke Shindo
自己紹介
進藤 龍之介
エンジニア/日本Androidの会
2018年 Web Working Group PWA 集中勉強会主催
WordPress プラグイン「PWA for WordPress」開発
オンライン診療サービス「YaDoc」開発に参加
Twitter @ryu_compin
Fb ryushindo
WordPress プラグイン
https://wordpress.org/plugins/pwa4wp/
TWA ( Trusted Web Activity )
• Chrome 72 for Android から実装
• PWA が Google Play Store に載せられるようになった
• サクッと URL 登録して完了!とはいかない、わりと手順多い。
• Chrome と通信する Java の API
• Cordova みたいな Web リソースをパッケージングするようなも
のではない。
• セッション、ストレージ、キャッシュなどは Chrome と共有
PWA を APK にするということ
Chrome に乗った PWA (の Activity)を内包する APK
ネイティブだからできること
• ウィジェット
• アイコン長押しのアプリケーションショートカットなどのOSと
の密接な統合
• wear OS や Android Auto などへの拡張
• ハードリセットや機種変更時に再インストールされる
• バックグラウンドサービスでネイティブ機能を利用可能
• マネタイズ
• PWA コンテンツとネイティブの画面が混在可能
• 同一ホストのコンテンツから複数の PWA アプリが作れる
• 国際化サポート
TWA の実装
• Digital Asset Links によるコンテンツの信頼性確保
• ブラウザによるレンダリング
• 最新の環境
• Jelly Bean まで対応
• Web View が OS から切り離されたのは Lollipop 以降
• Web View より Chrome のほうが新しい
• アプリからコンテンツへの直接のアクセスはできない
• クエリパラメーターやカスタムHTTPヘッダ、intent URI などでやりと
り?
• Web とネイティブの遷移はアクティビティの切替で行う
TWA アプリの動作イメージ
APK
Activity
Activity
Activity
Chrome
Trusted
Web
Activity
Web
PWA
Digital Asset
Links
Intent
Data
実装
なにはともあれ組み込んでみよう
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]
アプリへの組み込み
すぐできる!
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 ( Manifest )
<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>
インテントで呼ぶ
import android.support.customtabs.CustomTabsIntent;
Intent intent=new Intent();
intent.setClassName("jp.compin.android.pwa.crowdfarmdiar
y","android.support.customtabs.trusted.LauncherActivity");
startActivity(intent);
動かしてみる
アドレスバー表示されちゃってる!?
リリースビルドでちゃんとfingerprintがサイト側の assetlink と一致すれば出なくなります。
そうでない場合は普通に Chrome の customtab みたい。
こんなサービスも出てました
• PWA対応サイトのURLを入れるだけでAPKを作ってくれる
• 作るだけなら無料
• 独自のパッケージ名をつける場合は有料
https://pwa2apk.com/
ネイティブとの融合
Webコアなシステムモデルを考えよう
Web コアなシステム
Web サイト/アプリ in Browser
内包・拡張
ネイティブアプリ
考慮点
• Webとネイティブのデータ連携
• Intentでの呼び出しだけの疎結合状態なので、データ連携の方法は要検
討。サーバーに送ってPWAから参照する、など。
• いい方法思いついたら教えてください。
• Web側の実装
• アプリに戻るボタン類はブラウザ閲覧で表示されないように工夫しな
いと
→通常のアクセスとアプリからのアクセスを分類できるように実装す
る工夫
ありがとうございました。
PWA for WordPress ぜひお試しください
https://wordpress.org/plugins/pwa4wp/

Mais conteúdo relacionado

Mais procurados

パララックスでレスポンシブでJ query mobileなサイトのつくりかた
パララックスでレスポンシブでJ query mobileなサイトのつくりかたパララックスでレスポンシブでJ query mobileなサイトのつくりかた
パララックスでレスポンシブでJ query mobileなサイトのつくりかた
Shumpei Shiraishi
 

Mais procurados (20)

What's new Azure DevOps in //Build 2019
What's new Azure DevOps in //Build 2019What's new Azure DevOps in //Build 2019
What's new Azure DevOps in //Build 2019
 
Azure DevOpsとセキュリティ
Azure DevOpsとセキュリティAzure DevOpsとセキュリティ
Azure DevOpsとセキュリティ
 
Azure DevOps 関西 2019 - Overview
Azure DevOps 関西 2019 - OverviewAzure DevOps 関西 2019 - Overview
Azure DevOps 関西 2019 - Overview
 
Deploy to Azure by ??? Azure Repos or GitHub
Deploy to Azure by ??? Azure Repos or GitHubDeploy to Azure by ??? Azure Repos or GitHub
Deploy to Azure by ??? Azure Repos or GitHub
 
Introduce TFSUG and Azure DevOps Server 2020
Introduce TFSUG and Azure DevOps Server 2020Introduce TFSUG and Azure DevOps Server 2020
Introduce TFSUG and Azure DevOps Server 2020
 
Deploy Strategy with Azure Pipelines
Deploy Strategy with Azure PipelinesDeploy Strategy with Azure Pipelines
Deploy Strategy with Azure Pipelines
 
Static website + Piplelines
Static website + PiplelinesStatic website + Piplelines
Static website + Piplelines
 
Spring I/O 2017での拡張のお話
Spring I/O 2017での拡張のお話Spring I/O 2017での拡張のお話
Spring I/O 2017での拡張のお話
 
Azure Boards and Azure Test Plans inside out.
Azure Boards and Azure Test Plans inside out.Azure Boards and Azure Test Plans inside out.
Azure Boards and Azure Test Plans inside out.
 
Ignite 2021 振り返り(DevOps)
Ignite 2021 振り返り(DevOps)Ignite 2021 振り返り(DevOps)
Ignite 2021 振り返り(DevOps)
 
パララックスでレスポンシブでJ query mobileなサイトのつくりかた
パララックスでレスポンシブでJ query mobileなサイトのつくりかたパララックスでレスポンシブでJ query mobileなサイトのつくりかた
パララックスでレスポンシブでJ query mobileなサイトのつくりかた
 
Azure Web Apps と Azure Mobile Apps
Azure Web Apps とAzure Mobile AppsAzure Web Apps とAzure Mobile Apps
Azure Web Apps と Azure Mobile Apps
 
Azure boards for beginners
Azure boards for beginnersAzure boards for beginners
Azure boards for beginners
 
スマートフォンWebアプリ最適化”3つの極意”
スマートフォンWebアプリ最適化”3つの極意”スマートフォンWebアプリ最適化”3つの極意”
スマートフォンWebアプリ最適化”3つの極意”
 
FukuokaPWA #1 A2HSのちょっと深い話
FukuokaPWA #1 A2HSのちょっと深い話FukuokaPWA #1 A2HSのちょっと深い話
FukuokaPWA #1 A2HSのちょっと深い話
 
Fireworks lover advent calendar 2013
Fireworks lover advent calendar 2013Fireworks lover advent calendar 2013
Fireworks lover advent calendar 2013
 
PWA Beginners 勉強会 #4 A2HSのちょっと深い話v2
PWA Beginners 勉強会 #4 A2HSのちょっと深い話v2PWA Beginners 勉強会 #4 A2HSのちょっと深い話v2
PWA Beginners 勉強会 #4 A2HSのちょっと深い話v2
 
Azure DevOps入門~TechLab編
Azure DevOps入門~TechLab編Azure DevOps入門~TechLab編
Azure DevOps入門~TechLab編
 
JSUG SpringOnePlatform 2016報告会 Case study2 - feed back - springoneplatform
JSUG SpringOnePlatform 2016報告会 Case study2 - feed back - springoneplatformJSUG SpringOnePlatform 2016報告会 Case study2 - feed back - springoneplatform
JSUG SpringOnePlatform 2016報告会 Case study2 - feed back - springoneplatform
 
webpackを使ったワンランク上のモダンJSカスタマイズ_門屋 亮氏
webpackを使ったワンランク上のモダンJSカスタマイズ_門屋 亮氏webpackを使ったワンランク上のモダンJSカスタマイズ_門屋 亮氏
webpackを使ったワンランク上のモダンJSカスタマイズ_門屋 亮氏
 

Semelhante a PWA+TWA

マルチクラウドデータ連携Javaアプリケーションの作り方
マルチクラウドデータ連携Javaアプリケーションの作り方マルチクラウドデータ連携Javaアプリケーションの作り方
マルチクラウドデータ連携Javaアプリケーションの作り方
CData Software Japan
 
リモートデバッグツール Weinerをつかってみた
リモートデバッグツール Weinerをつかってみたリモートデバッグツール Weinerをつかってみた
リモートデバッグツール Weinerをつかってみた
Masakazu Muraoka
 

Semelhante a PWA+TWA (20)

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 A Go-Go !! @ABC2018A 20181013
PWA A Go-Go !! @ABC2018A 20181013PWA A Go-Go !! @ABC2018A 20181013
PWA A Go-Go !! @ABC2018A 20181013
 
Challenge PWA!! TRY PWA4WP!
Challenge PWA!! TRY PWA4WP!Challenge PWA!! TRY PWA4WP!
Challenge PWA!! TRY PWA4WP!
 
WebIntentsにより拓かれる次のWeb
WebIntentsにより拓かれる次のWebWebIntentsにより拓かれる次のWeb
WebIntentsにより拓かれる次のWeb
 
Challenge PWA!! Technical Edition @JAG201809
Challenge PWA!! Technical Edition @JAG201809Challenge PWA!! Technical Edition @JAG201809
Challenge PWA!! Technical Edition @JAG201809
 
Webアプリの向こうに見えるPWAアプリ開発
Webアプリの向こうに見えるPWAアプリ開発Webアプリの向こうに見えるPWAアプリ開発
Webアプリの向こうに見えるPWAアプリ開発
 
Dev tools introduction
Dev tools introductionDev tools introduction
Dev tools introduction
 
PWA 総まとめ @ABC 2018 Spring
PWA 総まとめ @ABC 2018 SpringPWA 総まとめ @ABC 2018 Spring
PWA 総まとめ @ABC 2018 Spring
 
Challenge PWA!! WordCamp Tokyo 2018
Challenge PWA!!  WordCamp Tokyo 2018Challenge PWA!!  WordCamp Tokyo 2018
Challenge PWA!! WordCamp Tokyo 2018
 
Dropbox APIなどを使って制作を効率化しよう@関西オープンフォーラム
Dropbox APIなどを使って制作を効率化しよう@関西オープンフォーラムDropbox APIなどを使って制作を効率化しよう@関西オープンフォーラム
Dropbox APIなどを使って制作を効率化しよう@関西オープンフォーラム
 
Service workerとwebプッシュ通知
Service workerとwebプッシュ通知Service workerとwebプッシュ通知
Service workerとwebプッシュ通知
 
OSSプロジェクトへのコントリビューション はじめの一歩を踏み出そう!(Open Source Conference 2022 Online/Spring...
OSSプロジェクトへのコントリビューション はじめの一歩を踏み出そう!(Open Source Conference 2022 Online/Spring...OSSプロジェクトへのコントリビューション はじめの一歩を踏み出そう!(Open Source Conference 2022 Online/Spring...
OSSプロジェクトへのコントリビューション はじめの一歩を踏み出そう!(Open Source Conference 2022 Online/Spring...
 
【de:code 2020】 「あつまれ フロントエンドエンジニア」 Azure Static Web Apps がやってきた
【de:code 2020】 「あつまれ フロントエンドエンジニア」 Azure Static Web Apps がやってきた【de:code 2020】 「あつまれ フロントエンドエンジニア」 Azure Static Web Apps がやってきた
【de:code 2020】 「あつまれ フロントエンドエンジニア」 Azure Static Web Apps がやってきた
 
マルチクラウドデータ連携Javaアプリケーションの作り方
マルチクラウドデータ連携Javaアプリケーションの作り方マルチクラウドデータ連携Javaアプリケーションの作り方
マルチクラウドデータ連携Javaアプリケーションの作り方
 
リモートデバッグツール Weinerをつかってみた
リモートデバッグツール Weinerをつかってみたリモートデバッグツール Weinerをつかってみた
リモートデバッグツール Weinerをつかってみた
 
[Cloud OnAir] Talks by DevRel Vol.5 アプリケーションのモダナイゼーション 2020年9月3日 放送
[Cloud OnAir] Talks by DevRel Vol.5 アプリケーションのモダナイゼーション 2020年9月3日 放送[Cloud OnAir] Talks by DevRel Vol.5 アプリケーションのモダナイゼーション 2020年9月3日 放送
[Cloud OnAir] Talks by DevRel Vol.5 アプリケーションのモダナイゼーション 2020年9月3日 放送
 
20170705 apiをつくろう
20170705 apiをつくろう20170705 apiをつくろう
20170705 apiをつくろう
 
Amazon QuickSight の組み込み方法をちょっぴりDD
Amazon QuickSight の組み込み方法をちょっぴりDDAmazon QuickSight の組み込み方法をちょっぴりDD
Amazon QuickSight の組み込み方法をちょっぴりDD
 
CDN and WAF
CDN and WAFCDN and WAF
CDN and WAF
 
DroidKaigi 2018 - Dialogflow for Android
DroidKaigi 2018 - Dialogflow for AndroidDroidKaigi 2018 - Dialogflow for Android
DroidKaigi 2018 - Dialogflow for Android
 

Último

Último (12)

論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 

PWA+TWA