
WebView(以下アプリ内Webview)とは、スマートフォンのネイティブアプリ内にウェブページを表示できる小型ブラウザ機能です。
アプリを離れることなく、商品ページや記事ページ、会員ページなどのWebコンテンツをそのまま埋め込んで表示できます。
そんなアプリ内WebviewをGA4で計測する方法について解説します。
アプリ内Webviewを計測する方法は2パターン
アプリ内Webviewを計測する方法は以下の2パターンあります。
1.ウェブサイトとして計測
この方法は通常のウェブサイトと同じように計測します。
GA4のタグか、GA4のタグ設定を行ったGTMのスニペットコードをウェブページに埋め込み計測します。
そのため、計測の実装や設定はウェブサイトの方法がそのまま使えます。よく、通常のブラウザ(SafariやGoogle Chromeなど)で表示するウェブサイトをそのままアプリ内Webviewに使っているケースがあります。この場合、ウェブサイト計測がそのまま利用できるといったメリットがあります。

ただし、以下の点に注意しましょう。
・ネイティブアプリとアプリ内Webview間でセッションがつながらない
ネイティブアプリは「アプリ用データストリーム」、アプリ内Webviewは「ウェブ用データストリーム」を使います。GA4はデータストリームを跨いでセッションはつながりません。したがって、ネイティブアプリとアプリ内Webviewを行き来する行動のセッションは別々となります。
・ユーザーがつながりにくい
ユーザーを識別するIDはネイティブアプリとアプリ内Webviewで別々になります。そのため、基本的にネイティブアプリとアプリ内Webview間で別人として計測されます。
User-ID機能を使いログインユーザーの会員IDを計測することで同一人物として集計することができます。ただし、非ログインユーザー(匿名ユーザー)は会員IDがないため別人のままとなります。
2.ネイティブアプリとして計測
この方法はアプリ内Webviewの計測データをGoolge Analytics for Firebase(GA4F) SDK経由で計測します。専用のJavascript(Javascriptハンドラ)をウェブページに埋め込みます。合わせて、ネイティブアプリにもコードを実装する必要があります。埋め込むコードは以下を参照してください。(※JavaScriptハンドラはiOS/Android共通です)
iOS: https://firebase.google.com/docs/analytics/webview?hl=ja&platform=ios
Android: https://firebase.google.com/docs/analytics/webview?hl=ja&platform=android
この方法を使えば、アプリ内Webviewであってもネイティブアプリと同一人物、同一セッションとして計測可能になります。

ただし、以下の点に注意しましょう。
・ネイティブアプリにもコード追加改修が必要となる
ウェブページだけの改修にとどまらず、ネイティブアプリにもコード実装が必要となるため、アプリ開発者と相談、検討したうえで進める必要があります。
・GTM利用が前提となっていない
JavascriptハンドラはGTMを前提したコードになっていません。したがってGTMを使った運用、管理をする場合は、埋め込むコードの動作を理解した上で自身でGTMに対応する必要があります。(Javascriptの理解が必須と言えます。)
・自動イベント計測に対応していない
ウェブサイトの計測ではなくネイティブアプリとしての計測となるため、ウェブ用の自動計測されるイベント(page_view、scroll など)は自動では発火しなくなるため、必要に応じて手動で実装する必要があります。
最大の注意点は「2重計測してしまう可能性がある」です。GA4のタグが入っているページがそのままアプリ内WebViewから使われるケースでは、アプリ用データストリームとWeb用データストリームに二重でデータが送られてしまいます。

対応方法として、アプリ内WebViewでページが開かれた場合はウェブサイト用のGA4タグの計測を止めます。どのような処理を作成するは様々な方法が考えられるため、運用やネイティブアプリの仕様などと照らし合わせて検討しましょう。
上述したJavascriptハンドラはアプリ内Webviewではなかった場合の処理が入っているため、この処理の逆を作ればよいという考えが一番シンプルだと思います(ただし、Javascriptハンドラをそのまま転用するのではなく、あくまでも参考にしながらスクラッチでJavascriptを使って開発することが前提です)。
他にもアプリ内Webview表示時にuserAgentの改ざんやJavascript変数やCookieにアプリ内Webviewフラグ(isWebview=trueのような)を設定してもらい、それをもって判定処理を作る方法もあります。
それぞれのメリット・デメリット
簡易的に以下のようにメリット・デメリットを比較しました。
同一ユーザー/セッションで計測が必要であれば「ネイティブアプリとして計測」がよいでしょう。その場合、ある程度の技術力や技術理解が必要となります。
実装難易度や運用コストなどを考えるとウェブサイトとして計測がよいでしょう。
また、アプリはログイン前提となっているような場合はUser-ID機能を使うことで同一ユーザーとして計測可能です。
さらにセッションベースではなく、ユーザーベースで行動を見ていくのであればウェブサイトとして計測する方法がよいと考えることもできます。

まとめ
どちらがベストな計測方法なのか?教科書のような答えはありません。
自社のアプリをどう使ってもらうか、ビジネス要件に沿って評価するにはどうすればよいかなどを考えたうえで、上述したメリット・デメリットと照らし合わせながら最適な方法を選択するとよいかと思います。
技術的な内容については弊社エンジニアが記事にまとめていますのでご参考ください。
【GA4】GTMを使ってアプリストリームからWebView時のページビューを計測する
https://qiita.com/aqril_1132/items/96fe2dabd04fbf43e25b





