Google Flutter

日本システム開発株式会社からGoogle Flutterに関するコラムをお届けします。

車載システムなど豊富な組み込み領域の実績を持つ弊社から、組み込み業界でもホットなFlutterに関する情報を発信します。

日本システム開発の技術、
覗いてみませんか。

Google Flutterコラム 第6回「GoogleAnalytics使ってみた」

はじめに

本コラムシリーズではGoogle Flutterを使ってアプリケーションを作成してきました。

第6回では違うテーマとして2022年7月時点のGoogleAnalyticsを使ってみた内容をお届けします。

GoogleAnalyticsとは

GoogleAnalyticsはGoogleが提供している、Webページ等のアクセス状況やユーザの行動履歴などを解析できるツールです。

アクセス状況や行動履歴を解析することで、より良いコンテンツ作成のヒントが得られます。

例えば、ユーザに人気のコンテンツを調査したり、特定ページへの到達状況からページ内の経路を改善したり、 iPhoneからのアクセスが多ければiPhone向けのコンテンツを充実させたりなどです。

アナリティクスの仕組みを簡単に説明します。

Webページやアプリにアナリティクス用のイベントを送信する処理を実装します。

Googleのサーバが送信されたイベントを記録して解析を実施します。

解析には既存のテンプレートがいくつか用意されており、比較的簡単に実施できます。

◎アナリティクスを使う目的

アナリティクスを使うメリットとして、アクセス状況やユーザの行動履歴などが容易に可視化できるという点が挙げられます。

自前で実装しようとすると送信されたデータを収集して可視化する処理が別途必要となるため、なかなか大変です。

GoogleAnalyticsを使えば、テンプレートを使うだけで簡単に可視化できます。

また、異なるテンプレートを使えば複数のパターンで確認できます。

今回はアナリティクス用に作成したサンプルにGoogleAnalyticsを組み込んで解析してみようと思います。

Webページへの組み込みが一般的のようですが、アプリへの組み込みも可能です。

◎サンプルアプリ

先にサンプルアプリの構成を紹介します。Webブラウザをイメージして作成しています。

【ホームページ】

アプリ起動時に表示される初めの画面です。

検索バーと検索エンジン変更ボタン、設定ボタンがあります。

gf006-03

【設定画面】

各種設定を変更する画面です。リストで項目を表示しています。

今回はアカウントと検索エンジンのみ画面遷移を実施します。他の項目はアナリティクスのイベントを送るだけです。

gf006-04
gf006-05

【検索エンジン画面】

目的の画面その1です。この画面に遷移するまでの経路を解析します。このページに機能はありません。

gf006-06

【アカウント画面】

目的の画面その2です。この画面に遷移しているユーザ数を解析します。このページに機能はありません。

gf006-07

◎解析したい内容

サンプルアプリを使って3つの内容を解析してみようと思います。

どの項目がタップされているか

設定画面でどの項目がたくさんタップされているかを解析します。

解析結果から項目の検討や、表示方法を検討します。

どの経路で目的の画面に遷移しているか

検索エンジン画面に遷移する経路が2通りあります。

各経路について、どのくらいのユーザが使用しているかを解析します。

解析結果から画面遷移の改善を検討します。

アカウント画面に遷移しているか

アカウント画面にどのくらいのユーザが遷移しているかを解析します。

ほかの項目と内容が似ていますが、 違った目線でも確認できるという例になるかと思います。

解析結果から画面遷移の改善を検討します。

導入

それでは、アプリにGoogleAnalyticsを導入していきます。

Google Flutterでアナリティクス機能を使用するには、firebase_analyticsというパッケージを使用します。

Firebaseとは

FirebaseはGoogleが提供している、モバイル・Webアプリケーション向けのプラットフォームです。

アナリティクスの機能も有しています。

◎Firebase設定ファイル取得

flutterアプリとFirebaseを接続するために、Firebase設定ファイルを取得、配置する必要があります。

Googleアカウントを使ってFirebaseのコンソールにアクセスし、flutterプロジェクトと紐づけます。

コンソールはこちらからアクセスできます。

Firebaseプロジェクトを作成

表示された内容に従って入力していきます。

gf006-08

Googleアナリティクスを有効にするかどうかを聞かれますので、有効にしてください。

設定ファイルを取得

Firebaseプロジェクトを作成すると、設定ファイルをダウンロードできるようになります。こちらを指定の場所に配置します。

今回は取得したgoogle-services.jsonを「プロジェクトフォルダ/android/app」に配置します。

gradleファイル修正

今まであまり説明しなかったのですが、ここでgradleファイルについて簡単に触れておきます。

gradleはjavaのビルド自動化ツールです。

ビルドの依存関係を管理したり、環境に応じてビルド設定を切り分けたりするそうです。

android studioでflutterプロジェクトを触っていると主に以下2つのgradleファイルを触るかと思います。

  • プロジェクト直下のbuild.gradleファイル
  • android下のbuild.gradleファイル

プロジェクト直下のファイルはプロジェクト共通の設定を記載、android下のファイルはandroid固有の設定を記載しているようです。

今回は以下のように修正します。

  • android/app/build.gradle
1.apply plugin: ‘com.google.gms.google-services’
  • android/build.gradle
1.#dependenciesに以下を追加する。バージョンは適宜修正
2.classpath ‘com.google.gms:google-services:4.3.10’

パッケージ追加

次に、firebase_analyticsのパッケージを追加します。

今回pubspec.yamlへ追加したパッケージおよびバージョンは以下の通りです。

1.dependencies:
2. firebase_analytics: ^9.0.0

また、追加したパッケージが参照する別のパッケージのバージョンについて不具合があったため、以下のように修正しています。

こちらは導入するバージョンによっては不要になります。

1. dependency_overrides:
2.  firebase_messaging_platform_interface: 3.1.6
3.  firebase_crashlytics_platform_interface: 3.1.13
4.  cloud_firestore_platform_interface: 5.4.13
5.  firebase_auth_platform_interface: 6.1.11
6.  firebase_storage_platform_interface: 4.0.14
7.  cloud_functions_platform_interface: 5.0.21
8.  firebase_analytics_platform_interface: 3.0.5
9.  firebase_remote_config_platform_interface: 1.0.5
10.  firebase_dynamic_links_platform_interface: 0.2.0+5
11.  firebase_performance_platform_interface: 0.1.0+5
12.  firebase_app_installations_platform_interface: 0.1.0+6

アナリティクス用コード

準備ができましたので、いよいよアプリにアナリティクス用のコードを実装していきます。

今回は以下の2種類を紹介します。

イベント送信

任意のイベント、パラメータを送信できます。

GoogleAnalyticsで準備されているイベントや、自分で作ったイベントを使用できます。

下記コードを実行することで、GoogleAnalyticsへイベントを送信できます。

1. // アナリティクス用の変数準備
2. FirebaseAnalytics analytics = FirebaseAnalytics.instance;
3.
4. (中略)
5.
6. // イベント送信したいところで以下を記載
7. analytics.logEvent(name:“イベント名”, parameters:<String,Object>{“キー”:{“パラメータ”});

今回はボタンを押した際にそれぞれのボタン名のイベントを送信するようにします。

パラメータは不要なので省略しています。

observer

observerは画面遷移を監視する仕組みで下記関数による画面遷移を監視します。

  • Navigator.pushNamed
  • Navigator.push
  • Navigator.pushReplacement
  • Navigator.pop

上記による画面遷移時にscreen_viewというイベントを自動で送信します。

pushNamed等で画面名を設定する場合は、firebase_screenというパラメータに設定されます。

下記コードでは、4行目、5行目でアナリティクス用のインスタンスとそれに紐づくobserverを準備しています。

14行目でNavigatorの遷移を監視するためのobserverにアナリティクス用のobserverを設定します。

これで上記の遷移を実施した際に自動でイベントを送信するようになります。

1. class MyApp extends StatelessWidget {
2.  const MyApp({Key? key}) : super(key: key);
3. 
4.  static FirebaseAnalytics analytics = FirebaseAnalytics.instance;
5.  static FirebaseAnalyticsObserver observer = FirebaseAnalyticsObserver(analytics: analytics);
6. 
7.  @override
8.  Widget build(BuildContext context) {
9.   return MaterialApp(
10.    title: ‘Firebase Analytics Demo’,
11.    theme: ThemeData(
12.     primarySwatch: Colors.blue,
13.    ),
14.    navigatorObservers: [observer],
15.    initialRoute: MyHomePage,
16.    routes : {
17.     ”MyHomePage”, (BuildContext context) =>
18.      MyHomePage(
19.       title: ‘Firebase Analytics Demo’,
20.       analytics: analytics,
21.       observer: observer,
22.      ),
23.    }
24.   );
25.  }
26. }

開発していく中で、実際にイベントが送信されているかをリアルタイムで確認したいことがあると思います。

Googleアナリティクスには「設定」タブの中に「DebugView」という機能があります。

DebugViewでデバイスを認識させるには、下記コマンドを実行します。

1. #リアルタイムの確認を有効にする場合
2. adb shell setprop debug.firebase.analytics.app パッケージ名
3. 
4. #リアルタイムの確認を無効にする場合
5.

 adb shell setprop debug.firebase.analytics.app .none.

以下実際の画面です。タイムライン上に通知されたイベントが並んでいる様子を確認できます

結果の確認

結果の確認はFirebaseコンソールまたはGoogleAnalyticsのページで確認できます。

今回はGoogleAnalyticsのページで確認してみます。

無料で使用する際は結果の反映に1日程度かかるため、気長に待ちましょう。

どの項目がタップされているか

まずはGoogleAnalyticsのページにアクセスします。

結果を解析するために、「探索」タブをクリックし、自由形式でページを作成します。

自由形式のページでは、その名の通り確認したいパラメータを自由に設定できます。

画面の設定は以下のようにしてみました。

表の列要素に「ページタイトルとスクリーン名」を、表の行要素に「イベント名」を配置しました。

中身のデータには「イベント数」と「ユーザ数」を表示することで、「どの画面」で「どのイベント」が「どのくらい送信されているか」が分かります。

結果は以下のようになりました。

「設定画面からアカウント画面へ移動」、「設定画面から検索エンジン画面へ移動」などが多く送信されていることが分かります。

「検索エンジン」の項目は設定画面の下部にあり、スクロールが煩わしいため、上部に移動させるとより良くなると考えられます。

反対に「設定画面から言語画面へ移動」はイベント数が少なく、ユーザの関心はなさそうです。

そのため「言語」の項目は設定画面の下の方に移動させても良いと考えられます。

どの経路で目的の画面に遷移しているか

次は「目標到達プロセスデータ探索」のページを作成します。

目標到達プロセスデータ探索では、目標となる画面に到達するまでにどのような遷移、操作を実施したか解析できます。

今回は「検索エンジン」画面までの経路を解析します。

目標到達プロセスデータ探索のページでは、目標までのプロセスをステップとして設定します。

例として、設定画面からの遷移を確認する場合のステップを紹介します。

確認するイベントはscreen_viewです。

これはobserverの項で解説したように、画面遷移時に送信されるイベントのことでした。

画面名はfirebase_screenというパラメータで設定されているため、このパラメータがNavigator.pushNamedで設定している名前と一致するかを確認します。

次にステップの繋がりについて解説します。

直接的ステップと間接的ステップがあります。

間接的ステップは設定したステップの間に別のイベントが割り込むことを許容するものです。

直接的ステップは設定したステップの間に別のイベントが割り込むことを許容しないものです。

今回のケースでは直接的ステップを使用しなくても確認可能です。

下記のように設定することで、ホームページからプロフィール画面へ遷移したユーザの数を確認できます。

結果は以下のようになりました。

ホームページから遷移した
設定画面から遷移した

こちらは「設定画面」からの遷移の方が多いことが分かります。

ホームページのアイコンは、ボタンであることが分かりにくいデザインと考えられます。

ボタンであることをわかりやすくする、ホームページからの遷移を消してしまうなどが検討できそうです。

アカウント画面に遷移しているか

最後に、「経路データ探索」のページを作成します。

経路データ探索では、より簡単かつ視覚的に画面遷移したユーザの数を確認することができます。

結果は以下のようになりました。

「アカウント画面」に遷移したユーザが多いことが分かりました。

「アカウント」の項目はリストの下部にあるため、上部に持ってくることでスクロールの煩わしさは改善されそうです。

また、ホームページにアカウント画面への遷移ボタンの追加を検討してもよさそうです。

終わりに

今回はGoogleAnalyticsをGoogle Flutterで使ってみました。

アプリへの組み込み方や、簡単に視覚化できるありがたみが伝わりましたら幸いです。

また、改善例をいくつか挙げてみましたが、一度の改善で終わりではありません。

アプリに反映させた後、再びイベントを取得して改善されたかを確認するサイクルが重要です。

次回はTTS(Text To Speech)を使ってみた内容をお届けする予定です。

■関連サービス

IoTシステム開発

デバイスからの接続、クラウド、
アプリケーションに至るまで、豊富な実績で支援

車載システム画像文字つき

2003年より培ってきた豊富な実績を活かし、
車載ECUシステムの開発・評価を支援

pagetop