Slide 1

Slide 1 text

<< Androidにおける Webの進歩 YUMEMI.grow Mobile #4

Slide 2

Slide 2 text

● 株式会社ゆめみ ● AndroidとFlutterをぼちぼち ● Twitter: @mono33__ みかみ

Slide 3

Slide 3 text

[1] What's new in Web on Android, https://youtu.be/sLn3wszcnGU

Slide 4

Slide 4 text

アジェンダ 1. AndroidにおけるWebコンテンツ 2. WebViewの進歩 3. Custom Tabsの進歩 4. PWAの進歩 5. TWAの紹介 6. まとめ

Slide 5

Slide 5 text

1. AndroidにおけるWebコンテンツ

Slide 6

Slide 6 text

AndroidにおけるWebコンテンツ ● AndroidにおけるWebコンテンツの扱いは主に4つ ○ WebView ○ Custom Tabs ○ Progress Web Apps(PWA) ○ Trusted Web Activity(TWA) ● Webの資源を有効活用することができる

Slide 7

Slide 7 text

2. WebViewの進歩

Slide 8

Slide 8 text

WebView ● Androidアプリに Webコンテンツを埋め込むた めのView ● ウェブコンテンツを制御・変 更するAPI [2] WebView, https://developer.android.com/reference/android/webkit/WebView WebView

Slide 9

Slide 9 text

X-Requested-With headerについて ● クリック詐欺の検出やAJAXリクエストであることをサー バーに通知するために利用 ● いくつかの脆弱性とプライバシー上の懸念 [3] Improving user privacy by requiring opt-in to send X-Requested-With header from WebView, https://android-developers.googleblog.com/2023/02/improving-user-privacy-by-requiring-opt-in-to-send-x-requested-wih-header-from-webview.html WebView サーバー XRW アプリケーション名

Slide 10

Slide 10 text

X-Requested-With headerの非推奨化 ● 段階的にX-Requested-With headerを削除 ● X-Requested-With headerに依存しているアプリのために オプトインAPIが用意 [4] Trial for X-Requested-With in WebView Deprecation, https://developer.chrome.com/origintrials/#/view_trial/1390486384950640641

Slide 11

Slide 11 text

ラージスクリーン端末のサポート ● ラージスクリーン向けのWebViewの機能開発 ○ WebViewから画像とテキストのドラッグ & ドロップ ○ ハンドライティング機能

Slide 12

Slide 12 text

https://www.youtube.com/watch?v=sLn3wszcnGU&t=250s

Slide 13

Slide 13 text

ドラッグ & ドロップ対応 ● WebViewから画像やテキストをドラッグ & ドロップ ● AndroidManifest.xmlに追加するだけ [5] DropDataContentProvider, https://developer.android.com/reference/androidx/webkit/DropDataContentProvider

Slide 14

Slide 14 text

https://www.youtube.com/watch?v=sLn3wszcnGU&t=270s

Slide 15

Slide 15 text

ハンドライティング機能について ● Android 14 のChromeとWebViewでHTMLの入力フォー ムで手書き機能の完全サポートや入力ジェスチャーがサ ポート ● Android 13では開発者向けオプションで手書き機能を検 証することができる(タッチペンで手書き入力)

Slide 16

Slide 16 text

Jetpack JavaScript Engine ● アプリ内でJavaScriptを実行するライブラリ ● ウェブアプリとモバイルアプリでビジネスロジックを共有す る場合などに利用 ● 別プロセスで実行できたり、WebViewを表示する必要がな いので少ないリソースで実行できたり [6] JavascriptEngine, https://developer.android.com/jetpack/androidx/releases/javascriptengine

Slide 17

Slide 17 text

Jetpack JavaScript Engineのイメージ

Slide 18

Slide 18 text

Jetpack JavaScript Engineのイメージ

Slide 19

Slide 19 text

3. Custom Tabsの進歩

Slide 20

Slide 20 text

Custom Tabs ● アプリ内でシームレスにWeb コンテンツを表示 ● ブラウザアプリを内部的に 使用するのでブラウザに 保存されている情報や機 能を利用できる [7] Custom Tabs, https://developer.chrome.com/docs/android/custom-tabs/

Slide 21

Slide 21 text

Partial Custom Tabs [8] Bringing the best of Chrome to Android developers and users, https://android-developers.googleblog.com/2023/02/bringing-best-of-chrome-to-android-d evelopers-and-users.html [9] custom-tabs-example-app, https://github.com/GoogleChrome/android-browser-helper/tree/main/demos/custom-tabs-exa mple-app ● 従来のCustomTabsは画面全体に オーバーレイ表示 ● Partial Custom Tabsは文字通り 画面の一部分にWebコンテンツを表 示

Slide 22

Slide 22 text

タブレット向けのPartial Custom Tabsの展望 ● ボトムシート/オーバーレイ/サイドバイサイドから切替

Slide 23

Slide 23 text

4. PWAの進歩

Slide 24

Slide 24 text

Progress Web Apps(PWA) ● Webプラットフォーム技術を使用して構築されたインストールでき るWebアプリ ● AndroidやiOSといったクロスプラットフォームで動作 ● オフラインやバックグラウンドでも動作させることができる [10] Progressive Web Apps, https://web.dev/progressive-web-apps/ PWAのイメージ

Slide 25

Slide 25 text

インストール可能条件の緩和 ● PWAにおいてオフライン機能での動作を 実現するService Workerの fetch handlerの対応が不要に ● オフラインを表すデフォルトのページが用 意 [11] Basic offline page for web apps on Chrome Android, https://developer.chrome.com/blog/default-offline/

Slide 26

Slide 26 text

5. TWAの紹介

Slide 27

Slide 27 text

Trusted Web Activity(TWA) ● フルスクリーンでのウェブコンテンツの表示を可能にするAndroid の機能 ● TWAを介せばWebサイトをそのままGoogle Playに公開も ● TWAを使うことでGoogle Playの機能を使える ○ Google Play Dstribution ○ Play Billing API [12] Trusted Web Activity, https://developer.chrome.com/docs/android/trusted-web-activity/

Slide 28

Slide 28 text

まとめ ● AndroidのWebコンテンツの扱いは年々進歩 ● ラージスクリーン対応が熱い ● PWA/TWAなども徐々に新機能が開発されている印象

Slide 29

Slide 29 text

References 1/2 ● [1] What's new in Web on Android, https://youtu.be/sLn3wszcnGU ● [2] WebView, https://developer.android.com/reference/android/webkit/WebView ● [3] Improving user privacy by requiring opt-in to send X-Requested-With header from WebView, https://android-developers.googleblog.com/2023/02/improving-user-privacy-by-requiring-opt-in- to-send-x-requested-wih-header-from-webview.html ● [4] Trial for X-Requested-With in WebView Deprecation, https://developer.chrome.com/origintrials/#/view_trial/1390486384950640641 ● [5] DropDataContentProvider, https://developer.android.com/reference/androidx/webkit/DropDataContentProvider ● [6] JavascriptEngine, https://developer.android.com/jetpack/androidx/releases/javascriptengine

Slide 30

Slide 30 text

References 2/2 ● [7] Custom Tabs, https://developer.chrome.com/docs/android/custom-tabs/ ● [8] Bringing the best of Chrome to Android developers and users, https://android-developers.googleblog.com/2023/02/bringing-best-of-chrome-to-android-develope rs-and-users.html ● [9] custom-tabs-example-app, https://github.com/GoogleChrome/android-browser-helper/tree/main/demos/custom-tabs-example-ap p ● [10] Progressive Web Apps, https://web.dev/progressive-web-apps/ ● [11] Basic offline page for web apps on Chrome Android, https://developer.chrome.com/blog/default-offline/ ● [12] Trusted Web Activity, https://developer.chrome.com/docs/android/trusted-web-activity/

Slide 31

Slide 31 text

CREDITS: This presentation template was created by Slidesgo, including icons by Flaticon, infographics & images by Freepik. Thanks!