2016年5月19日木曜日

Google I/O 2016 Keynoteで注目した発表内容

(引用:https://events.google.com/io2016/)

今年も毎年恒例のGoogle I/Oが開催されました。

発表されたキーノートの中から、気になる機能をご紹介したいと思います。

Google Home

(引用:https://events.google.com/io2016/)

「Google Home」は音声により、音楽鑑賞やレストランの予約、スケジュールの確認などが行えるアイテムです。

音声による操作自体は目新しいものでは無いですが、AIである「Google Assistant」と「スピーカー」を搭載しているため、対話による操作が可能である点が特徴的だと思いました。

デモでは、「OK Google」から始まり、タクシーを呼んだり、タスクをチェックしたりする様子が紹介されました。「Chromecast」と連携できるところも便利ですね。但し、部屋ごとにデバイスを用意する必要があるため、筆者としては価格が気になるところです。

Allo&Duo

(引用:https://events.google.com/io2016/)

Android、iOSで利用可能なコミュニケーションツールです。こちらも特筆すべきは「Google Assistant」が搭載されている点です。

デモでは、受信したメッセージや画像に対して返信のサジェスチョンをしてくれる「スマートリプライ」が映されていました。サジェスチョンについても全く新しい技術というわけでは無いですが、日々精度が上がってきていると感じました。

暗号化により、セキュリティ面が強いところもオススメできる点では無いでしょうか。

Instant Apps

(引用:https://events.google.com/io2016/)

Instant Appsはアプリをインストールせずに実行できる機能です。

通常アプリを実行する場合は、インストールしてから実行する必要があります。そのため、観光地などで一時的に利用したいだけのアプリでもインストールする必要があり、アプリ導入の障壁となっていました。

Instant Appsでは、アプリのリンクをタップして「起動」、アプリを「終了」すると自動削除されます。この機能を使うことにより、アプリの使用率があがることを期待できそうです。

Firebase

今回の発表で個人的に特に気になったのがFirebaseです。Firebase自体は以前から存在するサービスですが、今回モバイルアプリ向けのAnalytics機能が無料で追加されると発表されました。

Firebaseはアプリ使用ログの収集やストレージの提供、リモートコンフィグで全ての端末に共通の設定を行うなどの多数の機能を統合して提供するものですが、今回追加されたAnalytics機能を実装してGoogle Analyticsと何が違うのか試してみました。

以下ではAndroidアプリでのFirebaseの導入手順と実装方法を紹介します。

Firebaseの導入準備

AndroidでFirebaseを使用するためには以下の手順が必要です。
  1. Androidアプリを作成する
  2. 作成したアプリをFirebaseに登録する
  3. Firebaseのサイトで設定ファイルを作成する
  4. 作成した設定ファイルをアプリに組み込む
それでは1つずつ見ていきます。

まずは適当な名前でAndroidアプリの新規プロジェクトを作成します。プロジェクトを作成したらFirebaseのサイトにアクセスし「CREATE NEW PROJECT」をクリックします。

プロジェクト追加ダイアログが表示されたら、追加するプロジェクト名と国名を入力してプロジェクトを作成します。

プロジェクトを作成したらプロジェクトの設定を行います。Firebaseのダッシュボード画面で「AndroidアプリにFirebaseを追加」を選択するとアプリ詳細設定ダイアログが表示されるので、必要な情報を入力してアプリを登録します。

以上の手順を進めると、パッケージ名の入力後にgoogle-services.jsonというファイルがダウンロードできているはずなので、そのファイルをプロジェクトのapp直下に配置します。

ここまででFirebase導入の事前準備は完了です。

Firebaseでボタンのクリックイベントをロギングする

Firebaseを使うための準備が完了したらAndroidStudioでプロジェクトのセットアップを行います。ここではAndroidStudio 2.1.1にて作業を行いました。なおこれ以降のサンプルコードは必要な部分のみ抜粋しています。

まずはプロジェクト直下のbuild.gradleに以下の記述を追加します。
buildscript {
    // 略

    dependencies {
        classpath 'com.android.tools.build:gradle:2.1.0'
        classpath 'com.google.gms:google-services:3.0.0' // 追加

    }
}
次にモジュール(app)直下のbuild.gradleに以下の記述を追加します。apply pluginは最後に追加するよう指定されているので指定通り最終行に追加します。
dependencies {
    // 略
    compile 'com.google.firebase:firebase-core:9.0.0' // 追加
}

apply plugin: 'com.google.gms.google-services' // 最後に追加
以下のコードが実際にFirebaseにログを追加する部分になります。今回はretrolambdaというライブラリでラムダを使えるようにしていますが、Android Nからは標準でラムダが使用できるようになるのが嬉しい限りです。
    Button mButton1;
    Button mButton2;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // 中略

        mButton1.setOnClickListener(v -> {
            Bundle bundle = new Bundle();
            bundle.putString(FirebaseAnalytics.Param.ITEM_ID, String.valueOf(v.getId()));
            bundle.putString(FirebaseAnalytics.Param.ITEM_NAME, (String) ((Button) v).getText());
            FirebaseAnalytics.getInstance(getApplicationContext()).logEvent(FirebaseAnalytics.Event.SELECT_CONTENT, bundle);
            Toast.makeText(getApplicationContext(), "Button1 clicked", Toast.LENGTH_SHORT).show();
        });

        mButton2.setOnClickListener(v -> {
            Bundle bundle = new Bundle();
            bundle.putString(FirebaseAnalytics.Param.ITEM_ID, String.valueOf(v.getId()));
            bundle.putString(FirebaseAnalytics.Param.ITEM_NAME, (String) ((Button) v).getText());
            FirebaseAnalytics.getInstance(getApplicationContext()).logEvent(FirebaseAnalytics.Event.SELECT_CONTENT, bundle);
            Toast.makeText(getApplicationContext(), "Button2 clicked", Toast.LENGTH_SHORT).show();
        });
    }
レイアウトはボタンを2つ配置しただけの非常に単純なものです。



    

各ボタンが押された時にFirebaseAnalyticsのインスタンスを取得しFirebaseにログを追加します。ログの追加時はBundleに様々な値を追加して、それを引数にFirebaseAnalyticsのログ追加メソッド(logEvent)を実行します。このログ追加メソッドを実行する際にFirebaseAnalytics.Eventでイベント種別を指定することで、目的のイベントの発生をログに追加することができます。

Firebaseでは標準でも様々な種類のイベントが指定できます。一例を上げるとチュートリアルの開始/終了、ログイン、検索など特定の条件を取得できるのがおもしろいですね。さらに詳しく知りたい方は以下の公式リファレンスでイベントの一覧を確認してみてください。
FirebaseAnalytics.Event

またFirebaseではイベントだけではなく、ログのパラメータとして様々なデータを保存できるようです。こちらも標準で様々な値が定義されているので、公式ページを参照すると必要な値が見つかるかもしれません。
FirebaseAnalytics.Param

上記のとおりFirebaseAnalyticsのlogEventを実行するとログがキューイングされ、任意のタイミングでFirebaseのサーバに送信されます。しかし実際にサーバにログが送信されるまではタイムラグがあるようで、ログを追加してもFirebase側の画面に即座に反映されるわけではありません。

そこでデバッグ用のコマンドとして以下のコマンドが用意されています。
adb shell setprop log.tag.FA VERBOSE
adb shell setprop log.tag.FA-SVC VERBOSE
adb logcat -v time -s FA FA-SVC
上記コマンド実行後、ログ保存の操作を行った時に「Upload scheduled in approximately ms: 295248」のような値がターミナルに表示されればログが追加されるようです。

Analyticsとの違い

Google Analyticsでは画面遷移やボタンタップなどの基本的なイベントは簡単に取得できますが、より複雑なログを取得する際にはカスタムディメンションを作成して適切に設定するなど、比較的高度な操作を行う必要がありました。

一方、Firebaseではログイン時やチュートリアル開始/終了時などのイベントが標準で提供されており、複雑な操作のログ取得が簡単に行えるようになっています。今のところ両者の住み分けについては特に言及されていませんが、ログに関して言えばFirebaseの方がGoogle Analyticsよりも高度な操作が可能という印象を受けました。

個人的にはFirebaseはかなり便利そうな気がしていますが、今後の両者の関係について引き続き注目していきたいと思います。

<追記>
5/19に発表されたAndroidStudio2.2でFirebaseプラグインが追加されました。プラグインを使うと今回紹介したAnalyticsの他にもNotificationsやAdMobなどの他のFirebaseの機能を数クリックでアプリに追加できるようになるみたいですね。
Android Studio 2.2 Preview 1 Available

まとめ

今回は新しい技術の発表というより、自社サービスの紹介の色が強かったように思えました。

事前の噂では「Projecto Tango」や「Project Ara」などのプロジェクト名が散見されていただけに期待が大きかったのですが、それらについてはほとんど言及がなく少々残念でした。ともあれ今後の続報に期待して引き続きGoogleの新技術を追いかけたいと思います。

余談:コードネームについて

Android Nのコードネームですが、現在特設サイト#NameAndroidNで募集中となっています。

名付け親になれるかもしれないと思い、私もさっそく「Neriame」を投稿しておきました。せっかくの機会なので投稿してみてはいかがでしょうか。

140 180 Android , Android N , Google I/O

記載されている会社名、および商品名等は、各社の商標または登録商標です。

0 コメント:

コメントを投稿

Related Posts Plugin for WordPress, Blogger...