SlideShare una empresa de Scribd logo
1 de 50
Descargar para leer sin conexión
2018/05/24(木)PWA Beginners #4
@MiracleTShirt09
Add to homescreen
のちょっと深い話v2
demp app
• デモアプリ
• https://a2hs-demo.firebaseapp.com/
• ソースコード
• https://github.com/MasahikoJinno/pwa-demo
Agenda
• Profile
• Add to homescreenとは?
• App install bannersとは?
• bannerinstallpromptイベント
• Androidスマホ以外におけるA2HS
• A2HSの所感
• おまけ
Profile
Profile
• 氏名: 神野 真彦
• 所属: ヤフー株式会社
• 職種: エンジニア
• 分野: フロントエンド?
• Tw: @MiracleTShirt09
Favorite things
筋トレ
PHP
JavaScript
けものフレンズ
PWA
WebRTC 刃牙道
千鳥
HHKB プロテイン
ガンダム
カンバン
FaaS
エルメス
Kotlin
サイゼリア
Youtube
サーバル
Fate
BIG3のMAX
• ベンチプレス: 80kg
• デッドリフト: 100kg
• スクワット: 140kg
宣伝(執筆しました)
これ!!!
Add to homescreenとは?
Add to homescreenって?
• Webアプリのホーム画
面追加のこと
• A2HSと略す
• PWAにおいては必須の
要素とされる
• 「魅力的なWebアプリ
(PWA)はホーム画面に
居場所を作れる」
対応ブラウザ(主要なやつ)
• Chrome
• 少なくとも49以降は対応している
• iOS Safari
• 11.3(iOS 11.3β版)に搭載されている
• Edge
• 17以降 ※ 触ったことは無いよ
バージョンの調べ方
• 以下の2つの技術に対応している必要がある
• Service Worker
• Web App Manifest
• can i useで調べよう
• https://caniuse.com/#search=manifest
• https://caniuse.com/#search=service%20worker
• EdgeはService Workerには対応しているがWeb App
Manifestには対応していないのでA2HS出来ない(はず)
Webショートカットと何が
ちがうの?
• A2HSはそのWebアプリ
専用のネイティブアプ
リが生成される※
• なのでドロワー画面に
も表示される
※ 後述するmanifestの設定による
どうやればできるの?
• https通信
• manifestの作成
• ServiceWorkerの登録
https通信
• Service Workerの登録
でhttps通信が必要に
なる
• localhostなら不要
• ぱっと試したいなら
firebaseとか使うと良
いよ
manifestの作成
• Webアプリの設定を記
述するファイル
• name, short_name,
start_url, icon(192)
があればとりあえず動
くよ
• start_urlのにパラメ
タを記述するとA2HSか
ら起動したかどうか判
定できるようになるよ
Service Workerの登録1
• 右の内容のファイルを
ドキュメントルートに
配置してね!
• A2HSするだけなら空の
fetchイベントリスナー
を登録するだけでOK!
• 最低限の実装だよ!
• これだけで一応オフラ
イン対応しているとみ
なされる(Chromeでは)
Service Workerの登録2
• 右のコードをページに
埋め込んでね→
動作確認(スマホ)
• Chromeの場合は画面右
上のメニューから「ホー
ム画面追」をタップす
るとAndroidのホーム
画面にWebアプリを追
加することができる
動作確認(PC)
• Chromeの検証ツールからA2HS可能かどうか確認することができる
• Application > ManifestのAdd to homescreenをクリック
これが出ればOK
App Install Bannersとは?
App Install Bannersっ
て?
• A2HSをしてもらうため
の訴求バナー
• これはChrome(ブラウ
ザ)が後述の条件に当
てはまる際に表示する
表示条件
• HTTPS通信されている
• manifestにname, short_name, 192x192のicon,
start_urlが記述されている
• Service Workerが登録されている
• 2週間以内に2回そのページに訪問し、その間隔が5
分以上あいている
• A2HS(そのページ/サイトのホーム画面アイコンが無
い)されていない
動作確認
• 条件を満たした情報でページにアクセスする
• Chromeの場合は設定>プライバシー>閲覧履歴デー
タを消去するからデータを消すと再度バナーの表示
確認を行うことができる
bannerinstallpromptイベント
bannerinstallpropt
イベントって?
• App Install Bannerが
表示される際に発火さ
れるイベント
• このイベントのリスナー
を記述することでApp
Install Bannerの制御
ができる
バナーを表示しない
• App Install Bannerの表示は原則アプリケーション
側で制御できない
• なのでアプリ・サイトの状態によっては出しなくな
いときに出てしまう可能性がある
• その場合は次のコードを記述することでバナー表示
を抑制することができる
バナーを表示しない
バナーを表示しない
• 動作確認はChromeの検証ツールのconsoleでやる
A2HSのログを落とす
• ユーザがApp Install Bannerに対してどのようなリ
アクションをとったのかログに落としたい場合は次
のようなコードを記述する
A2HSのログを落とす
App Install Bannerの表示
を先送りする
• 次のようなコードを記
述するとApp Install
Bannerの表示を先送り
することができる
• Instagramなどは、こ
の先送りを利用して事
前訴求モーダル画面を
表示している
https://www.instagram.com/
App Install Bannerの表示
を先送りする
• 先送りのコード
• この例ではReactのstateにイベントオブジェクトを
持たせている
App Install Bannerの表示
を先送りする
• 先送りしたApp Install Bannerの表示をするコード
• 例によってReactを使用しています
こんなかんじ
• 動きはInstagr○mの丸パクリです。
Androidスマホ以外(おもにiOS)
におけるA2HS
SafariでのA2HS
• iOS11.3(Safari 11.1)
でようやく
WebAppManifestが実装
されたので試してみた
• Androidと異なり、戻
るのナビゲーションも
無いので他社サイトに
飛ぶと戻ってこれない
• Chromeに比べるとまだ
まだUXの見直しが必要
iPhone 7だとこんな感じ
なぜかiPhone X
だとナビゲーショ
ンバーが表示さ
れない・・・
ここ
別ドメイン(サブドメインが違うだけでも)のリ
ンクを踏むとSafariで開く・・・
iOSのA2HS致命的だと思う
ところ
• 別ドメインページはSafariをひら
く(先述)
• Cookieなどの情報がSafariと別管
理になっている
• 「戻る」や「ページの更新」がで
きない
その他Android(Chrome)と
の細かい違い
• App Install Bannersは無い
• つまりログを落としたり事前訴求したりすること
もできない
• 必須のアイコンサイズは512x512(Androidは192x192)
• standalone, fullscreenの差が無い
• 細かくないけど・・・
• minimal-uiはWebショートカット扱い
• Chromeではちゃんとアプリを生成する
PCでのA2HS
• Macだとランチャー画面、Winだとスタートメニューに追
加されます(開くのはタダのChrome)
• GoogleがPC版のPWAを2018年中にサポート開始するとの情
報があるので今後はもう少しUX良くなるかも
A2HS所感
メリット
• 手軽にネイティブアプリっ
ぽいものがつくれる
• 手軽に起動起点をとれる
• (standalone以上だと)検
索ペインからの流出が防
げる
• SPAとの親和性が高い(ブ
ラウザ機能が制限される
ので)
気をつけたいこと
• A2HSすると一部のブラ
ウザ機能(主にタブ)が
使用できなくなるので
UXが落ちる場合がある
• 良くも悪くも通常のWeb
ページよりブラウザの
実装に挙動が左右され
る
• ブラウザによって
manifestの解釈がこと
なる
気をつけたいこと
• 別ウインドウで開くリ
ンク(target=“_blanc”)
は別アプリ(シングル
タブのChrome)が開く
• 別アプリ開いたら離脱
率上がりそう・・・
iOSはまだ様子見かな・・・
• iOSはまだPWA(A2HS)の機能が充実してない
• スワイプで戻る/プル2リフレッシュくら
い実装してほしい・・・
• 別ドメインのサイト開くときのUXももう
ちょい考えて欲しい・・・
• GoogleもiOSにはPWA版のGoogle MAPを提供
していない(重要)
• iOSにはService Workerの一部機能(キャッ
シュ)のみ適応が無難かも
その他(どうでもいい)
• Chromeは多分A2HS機能
のABテストをしている
• AndroidとChromeのバー
ジョンが全く同じでも
細かい所が違ってたり
する
• 文言とかも微妙にちがっ
たりする
• 最近落ち着いてきた?
ここらへんの文言
とか
ご静聴ありがとうござい
ましたッッ!!

Más contenido relacionado

La actualidad más candente

マイクロサービスアーキテクチャ とは何か
マイクロサービスアーキテクチャとは何かマイクロサービスアーキテクチャとは何か
マイクロサービスアーキテクチャ とは何か
Yusuke Suzuki
 
OpenID ConnectとSCIMの標準化動向
OpenID ConnectとSCIMの標準化動向OpenID ConnectとSCIMの標準化動向
OpenID ConnectとSCIMの標準化動向
Tatsuo Kudo
 

La actualidad más candente (20)

Azure Api Management 俺的マニュアル 2020年3月版
Azure Api Management 俺的マニュアル 2020年3月版Azure Api Management 俺的マニュアル 2020年3月版
Azure Api Management 俺的マニュアル 2020年3月版
 
3分でわかるAzureでのService Principal
3分でわかるAzureでのService Principal3分でわかるAzureでのService Principal
3分でわかるAzureでのService Principal
 
実装して理解するLINE LoginとOpenID Connect入門
実装して理解するLINE LoginとOpenID Connect入門実装して理解するLINE LoginとOpenID Connect入門
実装して理解するLINE LoginとOpenID Connect入門
 
Azure Monitor Logで実現するモダンな管理手法
Azure Monitor Logで実現するモダンな管理手法Azure Monitor Logで実現するモダンな管理手法
Azure Monitor Logで実現するモダンな管理手法
 
20200212 AWS Black Belt Online Seminar AWS Systems Manager
20200212 AWS Black Belt Online Seminar AWS Systems Manager20200212 AWS Black Belt Online Seminar AWS Systems Manager
20200212 AWS Black Belt Online Seminar AWS Systems Manager
 
20200826 AWS Black Belt Online Seminar AWS CloudFormation
20200826 AWS Black Belt Online Seminar AWS CloudFormation 20200826 AWS Black Belt Online Seminar AWS CloudFormation
20200826 AWS Black Belt Online Seminar AWS CloudFormation
 
The Twelve-Factor Appで考えるAWSのサービス開発
The Twelve-Factor Appで考えるAWSのサービス開発The Twelve-Factor Appで考えるAWSのサービス開発
The Twelve-Factor Appで考えるAWSのサービス開発
 
KafkaとAWS Kinesisの比較
KafkaとAWS Kinesisの比較KafkaとAWS Kinesisの比較
KafkaとAWS Kinesisの比較
 
マイクロサービスアーキテクチャ とは何か
マイクロサービスアーキテクチャとは何かマイクロサービスアーキテクチャとは何か
マイクロサービスアーキテクチャ とは何か
 
GraphQL入門 (AWS AppSync)
GraphQL入門 (AWS AppSync)GraphQL入門 (AWS AppSync)
GraphQL入門 (AWS AppSync)
 
SPAのルーティングの話
SPAのルーティングの話SPAのルーティングの話
SPAのルーティングの話
 
20210127 今日から始めるイベントドリブンアーキテクチャ AWS Expert Online #13
20210127 今日から始めるイベントドリブンアーキテクチャ AWS Expert Online #1320210127 今日から始めるイベントドリブンアーキテクチャ AWS Expert Online #13
20210127 今日から始めるイベントドリブンアーキテクチャ AWS Expert Online #13
 
20200630 AWS Black Belt Online Seminar Amazon Cognito
20200630 AWS Black Belt Online Seminar Amazon Cognito20200630 AWS Black Belt Online Seminar Amazon Cognito
20200630 AWS Black Belt Online Seminar Amazon Cognito
 
AWS Black Belt Online Seminar 2016 AWS CloudFormation
AWS Black Belt Online Seminar 2016 AWS CloudFormationAWS Black Belt Online Seminar 2016 AWS CloudFormation
AWS Black Belt Online Seminar 2016 AWS CloudFormation
 
[AWS EXpert Online for JAWS-UG 18] 見せてやるよ、Step Functions の本気ってやつをな
[AWS EXpert Online for JAWS-UG 18] 見せてやるよ、Step Functions の本気ってやつをな[AWS EXpert Online for JAWS-UG 18] 見せてやるよ、Step Functions の本気ってやつをな
[AWS EXpert Online for JAWS-UG 18] 見せてやるよ、Step Functions の本気ってやつをな
 
OpenID ConnectとSCIMの標準化動向
OpenID ConnectとSCIMの標準化動向OpenID ConnectとSCIMの標準化動向
OpenID ConnectとSCIMの標準化動向
 
大規模負荷試験時にやったこと
大規模負荷試験時にやったこと大規模負荷試験時にやったこと
大規模負荷試験時にやったこと
 
Amazon Redshift パフォーマンスチューニングテクニックと最新アップデート
Amazon Redshift パフォーマンスチューニングテクニックと最新アップデートAmazon Redshift パフォーマンスチューニングテクニックと最新アップデート
Amazon Redshift パフォーマンスチューニングテクニックと最新アップデート
 
AWS Lambdaを紐解く
AWS Lambdaを紐解くAWS Lambdaを紐解く
AWS Lambdaを紐解く
 
AWSのログ管理ベストプラクティス
AWSのログ管理ベストプラクティスAWSのログ管理ベストプラクティス
AWSのログ管理ベストプラクティス
 

Similar a PWA Beginners 勉強会 #4 A2HSのちょっと深い話v2

WordCampでコントリビュータデイに参加しよう!
WordCampでコントリビュータデイに参加しよう!WordCampでコントリビュータデイに参加しよう!
WordCampでコントリビュータデイに参加しよう!
Daisuke Takahashi
 
JavaScript on GitHub (#kyotojs)
JavaScript on GitHub  (#kyotojs)JavaScript on GitHub  (#kyotojs)
JavaScript on GitHub (#kyotojs)
y_uuki
 

Similar a PWA Beginners 勉強会 #4 A2HSのちょっと深い話v2 (20)

FukuokaPWA #1 A2HSのちょっと深い話
FukuokaPWA #1 A2HSのちょっと深い話FukuokaPWA #1 A2HSのちょっと深い話
FukuokaPWA #1 A2HSのちょっと深い話
 
Mashup Awards は 新しい技術を試す 絶好の機会です
Mashup Awards は新しい技術を試す絶好の機会ですMashup Awards は新しい技術を試す絶好の機会です
Mashup Awards は 新しい技術を試す 絶好の機会です
 
Amazon Dash ButtonをハックしてSalesforceに登録してみた
Amazon Dash ButtonをハックしてSalesforceに登録してみたAmazon Dash ButtonをハックしてSalesforceに登録してみた
Amazon Dash ButtonをハックしてSalesforceに登録してみた
 
OSC2013@FUKUOKA
OSC2013@FUKUOKAOSC2013@FUKUOKA
OSC2013@FUKUOKA
 
オープンに活動することと現場の改善~Zabbix導入による改善物語~
オープンに活動することと現場の改善~Zabbix導入による改善物語~オープンに活動することと現場の改善~Zabbix導入による改善物語~
オープンに活動することと現場の改善~Zabbix導入による改善物語~
 
最大公約数的なServiceWorker制作から見るPWAの勘所
最大公約数的なServiceWorker制作から見るPWAの勘所最大公約数的なServiceWorker制作から見るPWAの勘所
最大公約数的なServiceWorker制作から見るPWAの勘所
 
YJTC18 A-1 大規模サーバの戦略
YJTC18 A-1 大規模サーバの戦略YJTC18 A-1 大規模サーバの戦略
YJTC18 A-1 大規模サーバの戦略
 
WordCampでコントリビュータデイに参加しよう!
WordCampでコントリビュータデイに参加しよう!WordCampでコントリビュータデイに参加しよう!
WordCampでコントリビュータデイに参加しよう!
 
Chrome-eject がこの先生きのこるには
Chrome-eject がこの先生きのこるにはChrome-eject がこの先生きのこるには
Chrome-eject がこの先生きのこるには
 
JAWS-UG沖縄 AWS Fargateハンズオン 2018年10月
JAWS-UG沖縄 AWS Fargateハンズオン 2018年10月JAWS-UG沖縄 AWS Fargateハンズオン 2018年10月
JAWS-UG沖縄 AWS Fargateハンズオン 2018年10月
 
appengine ja night #25 Google App Engine for PHP
appengine ja night #25 Google App Engine for PHPappengine ja night #25 Google App Engine for PHP
appengine ja night #25 Google App Engine for PHP
 
Vagrant体験入門
Vagrant体験入門Vagrant体験入門
Vagrant体験入門
 
増井雄一郎の「wri.pe」を事例に学ぶ、自作サービスの広め方〜PR・継続できる目標の立て方・改善編 先生:増井 雄一郎
増井雄一郎の「wri.pe」を事例に学ぶ、自作サービスの広め方〜PR・継続できる目標の立て方・改善編 先生:増井 雄一郎増井雄一郎の「wri.pe」を事例に学ぶ、自作サービスの広め方〜PR・継続できる目標の立て方・改善編 先生:増井 雄一郎
増井雄一郎の「wri.pe」を事例に学ぶ、自作サービスの広め方〜PR・継続できる目標の立て方・改善編 先生:増井 雄一郎
 
Programming AWS with Python
Programming AWS with Python  Programming AWS with Python
Programming AWS with Python
 
ホットペッパーグルメにAoGを使ってローンチしてみた
ホットペッパーグルメにAoGを使ってローンチしてみたホットペッパーグルメにAoGを使ってローンチしてみた
ホットペッパーグルメにAoGを使ってローンチしてみた
 
Datadog monitoring with HashiCorp
Datadog monitoring with HashiCorpDatadog monitoring with HashiCorp
Datadog monitoring with HashiCorp
 
VYATTA USERS MEETING Spring 2014 - JAZUG
VYATTA USERS MEETING Spring 2014 - JAZUGVYATTA USERS MEETING Spring 2014 - JAZUG
VYATTA USERS MEETING Spring 2014 - JAZUG
 
Dangerでpull requestレビューの指摘事項を減らす
Dangerでpull requestレビューの指摘事項を減らすDangerでpull requestレビューの指摘事項を減らす
Dangerでpull requestレビューの指摘事項を減らす
 
JavaScript on GitHub (#kyotojs)
JavaScript on GitHub  (#kyotojs)JavaScript on GitHub  (#kyotojs)
JavaScript on GitHub (#kyotojs)
 
Terraform with Bitbucket pipeline
Terraform with Bitbucket pipelineTerraform with Bitbucket pipeline
Terraform with Bitbucket pipeline
 

PWA Beginners 勉強会 #4 A2HSのちょっと深い話v2