読者です 読者をやめる 読者になる 読者になる

LIFULL Creators Blog

「株式会社LIFULL(ライフル)」の社員によるブログです。

Google I/O 2017 旅日記 〜DAY THREE〜

f:id:LIFULL-etotake:20170519203143j:plain

こんにちは。Android開発グループの衛藤です。
前回の記事では、DAY TWOをお送りしました。
本日Google I/O 2017最終日!
最後まで楽しんできます!

なお、「今日は非常に暑いので、いくつかのセッション場所を変えるよ!」というアナウンスが来ていました。
確かに暑い・・・でも湿気が少なくカラッとしていて気持ちが良い暑さですね。
コーラとスプライトが進みます。

Rewarding for engagement with Firebase

www.youtube.com

Firebaseを利用して、いかにユーザーを獲得し定着させるかについてのセッションです。
ここでは、ゲームを例として新しいユーザーを獲得し、かつ報酬を与える仕組みについて解説されました。
使用したFirebaseの機能は、

  • Dynamic Links
  • RemoteConfig
  • RealtimeDatabase
  • Cloud Functions
  • Authentication
  • Notification

細かく解説されていたのが、Dynamic Linksの短縮についてです。
Dynamic Linksを使用すると、プラットフォームを問わず同じリンクを定義出来るため、友人の招待などに有効な手段ですが、 そのままだと非常にリンクが長くなってしまいます。
そこで、Cloud Functionsを使用し、元々のDynamic Linksから短いURLを生成→Databaseに保存する
という処理を行っていました。

f:id:LIFULL-etotake:20170519203615j:plain:w500
このように、見た目も非常にスッキリし受け取った側も驚かずにすみそうですね。

招待した後は、RealtimeDatabaseを使用し報酬を受け取れる通知、受け取ったかどうかの管理をDatabaseで行うというものです。
このI/O通して言えることですが、ほとんど自前のサーバは立てずに全てGCPを使って様々なサービスが作れそうです。

Machine Learning API

www.youtube.com

GCPのMachine Learning系のAPIの使い方を紹介しています。
たくさんのAPIが使用可能であり、紹介されたのは以下5つでした。

Vision API

Vision APIは画像処理系のAPIです。3:45あたりから。
Web Annotationと言うものがあり、画像が何かというものに加え、webから情報を取ってきてリンクも取得できるようです。
サンプルではWikipediaの説明リンクが含まれていました。
かなり便利です。

Speech API

音声系のAPIです。12:58あたりから。
音声からテキストを生成するAPIのようです。
デモを見る限りだと、まだ正確ではないのでしょうか?
しかしながらこれまでの発展から考えると飛躍的に向上すると期待しています。

Natural Language API

自然言語処理系のAPIです。16:50あたりから。
この中で特に気になったのが、センテンスからscoreが出るというものです。
例えば、25:30からのデモでありますが、
「I really liked the sushi but the service was terrible」(寿司は良かったが、サービスがひどかった)
これを解析すると、sushiは0.8スコアに対し、サービスは-0.9スコア という結果が出ています。
人々の評価から対象物の定量的な評価を出すことができそうです。

Translation API

翻訳APIです。26:55あたりから。
第1世代からかなり精度が上がったらしいです。
対外国人向けのサービス等に取り入れられる実践レベルになっているのではないでしょうか。

Video Intelligence API

動画系のAPIです。30:44あたりから。
動画の中で、どの物体(犬とか)が何秒目に出てくるかを判定することが出来ています。
デモの中の、「baseball」や「Android」で検索した場合の挙動が非常にわかりやすくて便利です。
何か新しいサービスが作れそうですね。

なお、これらはほぼ全て、間にCloud Functionsが入っており、そこからMachine Learning API→Cloud Databaseにレスポンス保存、という仕組みになっていました。

Introduction to Kotlin

www.youtube.com

Keynoteでも正式にKotlinサポートすると発表されていましたが、Kotlin入門のための、Jet Brains社によるライブコーディングによる解説です。
おそらく、YouTubeのコーディングを見たほうが早いと思いますが、楽しそうな言語ですね。

No Getter No SetterやNull Safety、Extension Propertyなど、Javaと違い柔軟な印象を持ちました。
14:00前後の話が面白かったです。

Kotlinについては、自分で実際に書いてみたほうが良いと思うので今後試してみようと思っています。
今後さらに広まっていくかと思われるため、早めに習得しておくのが良いかもしれません。

Notifications UX: What’s New for Android O

www.youtube.com

Android Oで、通知周りがガラッと変わります。
Googleのチームにて、通知についてユーザーに聞き込みを行いながら調査を進めてきたとのことです。
具体的には、

  • ほとんど通知は重要ではない
  • 通知を設定できるのは分かっているけど、どこか分からない
  • 通知は必要だが、全部ではない

実際のユーザーの声としては
「通知が来すぎるのでアプリを削除した」
など、生々しい調査の結果となっていました。
しかしながら、

  • 人からの通知(メッセージなど)は非常に重要
    というユーザーの声もあり、セッションでは”People are the VIP notifications”と表現されています。
    また、リマインダーとして送られる通知は便利だが、「タイミングが違う、だから忘れてしまう」という声もあるようです。

このような結果から、Android Oでは通知が以下のように変わります。

通知チャネルの設定(アプリごと)

実装時に通知のチャネルを指定する必要があります。
そのチャネルに従って、ユーザーが実際に通知を受け取るものと受け取らないものを判定出来るようになるようです。
設定は、アプリ独自のものもこれまで通り使えますが、新しい機能として
「アイコンを長押しすると設定できる」
というものが追加になりました。

優先度

優先については以前からありましたが、今回から長押し後の通知設定画面にて、優先順位を変更することが出来るようになっています。
動画の12:00前後からですが、わざわざ設定に行き、通知の項目を探し・・・という作業ではなく、長押しで出てくるダイアログでオフにすることが出来るようになりました。
また、そこから詳細に飛ぶことも出来、チャネル別にオンとオフを設定することも出来るようです。
かなり便利になりましたね。

通知UI・UX

UIが4つで以下4つの区分けで変わるようになります。
詳しくは20:16あたりをご覧ください。

  • Major Ongoing 音楽など、現在進行しているもの

  • People to People
    メッセージなど、人から人へ届けられるもの

  • General
    一般的なもの

  • By the way
    そこまで重要じゃないもの

f:id:LIFULL-etotake:20170519203142j:plain:w500

以前までの通知と比べて、かなり見た目でわかりやすくなっているのが分かります。

また、28:00くらいにありますが、上から引き出すときのアイコンアニメーションがリッチになっています。
話している方もすごく気に入っているようです。

スヌーズ機能

少し前に記載したとおり、「通知来ても忘れる」という問題が残っています。
今回の変更により、通知をスワイプすることでスヌーズの設定ができるようになりました。
これもなかなか使えそうです。

通知周りは毎年様々な変更があるほど重要な機能ですが、
今回の変更はかなりユーザーにとっても、アプリ提供側にとっても良いものとなりそうですね。

Applying Built-in Hacks of Conversation to Your Voice UI

www.youtube.com

音声UIに関しての概念的な話しでした。
“Cooperative Principles”(日本語で調べると協調原理というものらしいです)
はじめにHuman to Humanの話があり、その後にVUIでの使われ方の説明がありました。

人間対人間であれば、多く話しすぎなくても大体は伝わる(Maxim of quantity)が、VUIになるとそのあたりが難しそうです。

Google Assistantなど、音声によるUIが増えてきており、人間とのやりとりとなると設計を入念に行わないと、
使いづらいものが出来ていしまいそうなので注意したいと感じています。

新しく出たばかりの技術ですが、これから数年後には洗練されたアプリが増えているのでしょうか。
楽しみです。

Firebase recipes to bootstrap your app

www.youtube.com

Firebaseを使ったアプリ開発の手法についてです。
こちらもDemoアプリを使用しての説明が途中からありますが、このアプリではFirebaseの以下のサービスを組み合わせています。

  • Realtime Database
  • Auth
  • Cloud Messaging
  • Cloud Functions

また出ましたね、Cloud Functions。このI/Oのセッションで見たサンプルアプリでほぼ使われているのではないでしょうか。
非常に強力なサービスだと感じています。

サンプルアプリを通じて、以下のようなレシピの説明がされました。

  1. Link Existing Users into Firebase
  2. Avoid Duplication Business Logic
  3. Send Push Notification without a sever
  4. Improve purchase conversions

既存のユーザーをFirebaseと連携させる

Realtime Databaseでは、セキュリティの話が出ました。4:52あたりです。
セキュアなアクセスを実現する方法、それがFirebase Authと組み合わせるということです。
Realtime DatabaseのRulesにson形式でアクセス制限を記載することが出来ますが、そのときにAuthで認証されたユーザーしかアクセスできない、などの設定を行うことが出来ます。

重複ビジネスロジックを避ける

iOS / Android それぞれからRealtime Databaseへの更新は出来ますが、ほぼ同じコードを書きます。重複させる必要があるでしょうか?
Cloud Functionsにビジネスロジックを記載してしまい、Cloud FunctionsからRealtime Databaseへ更新をかければ一回でシンプルに実装出来ます。

サーバー構築せずに通知を送る

FCMで通知を送るのですが、Cloud Functionsを使えば自前のサーバーはいりません。
Realtime Databaseに更新がある場合に、Cloud FunctionsからFCMの通知実装を行うことで全てが完結します。
Realtime Databaseとも連携されているため、どのユーザに送るかの判断も簡単にできそうです。

コンバージョンの向上

ここでは、Analyticsを使用してコンバージョンの計測や、Realtime Databaseとの連携の説明がされました。
AnalyticsもCloud Functionsを使用しメトリクスを送信するような実装を行っています。

ここで述べられた技術を使用することで、サーバーの構築をせずに1つのサービスを作ることが出来るようになっています。
Cloud Functionsの出現によりFirebaseの組み合わせの自由がさらに増えたと感じています。

Google I/O 2017終了

以上で、3日間開催されたGoogle I/O 2017がすべて完了致しました。
はじめは不安な部分もありましたが、全体的に非常に楽しく過ごすことが出来ました。
今回発表された技術は、どれも気になるものばかりです。

日本に戻ったら、早速いろいろ試してみようと思います!
より技術的な内容は、Qiitaにも記載しようと思いますので是非そちらもご覧ください!

社外向け報告会

最初のエントリーでも記載致しましたが、
2017/05/26(金)に報告会を株式会社LIFULL 半蔵門オフィスで行います。
connpassにて募集しておりますので、奮ってご参加くださいませ!
https://lifull.connpass.com/event/56800/

最後に

現地からのブログ投稿は終わりです。
最後まで読んでいただきありがとうございます。

Google I/O 楽しかった!また来年も行くことが出来ますように★

f:id:LIFULL-etotake:20170519203144j:plain:w500
おわり