LIFULL Creators Blog

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

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

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

こんにちは。Android開発グループの衛藤です。
前回の記事では、DAY ONEをお送りしました。
Google I/Oも2日目となり、雰囲気にも大分慣れてきました。

今日も快晴!日向は焦げそう、日陰は凍えそうな一日でした!

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

さて、本日参加したセッションをまとめます。

Building apps for the Google Assistant

f:id:LIFULL-etotake:20170518233929j:plain:w500
Google Assistantを使用してアプリを作るためのセッションです。

f:id:LIFULL-etotake:20170518233934j:plain:w500
Google I/Oデモ用のアプリが準備されており、写真のように対話形式でセッション情報の取得や座席の予約を行うアプリでした。

The alternative to good design is bad design, not no design at all.
「良いデザインの反対は悪いデザイン、デザインがないことではない」
音声なのでデザインがない、ということでしょうか。

Demoの内容

Assistant Appを開発するために、以下のような項目を準備します。

  • Might say things like…(言いそうなこと)
    I found / so you can keep up to date on / … more

  • Would never say…(言わないこと)
    I did not receive a response / that was an invalid / … more

  • Instead of…(以下の代わりに) Likely to say…(こう言いそう)
    allows -> lets / require -> need / unable to -> can’t /… more

あとは、
Actions on GoogleのコンソールでProject作成
API.aiで自然言語を取り扱うようにする
Webhook連携(デモではNode.js)
シミュレータでテスト
モバイルデバイスにTransaction APIを実装

実際は以下の写真のように、話すセンテンスでTriggerやApp Name、Actionを指示しているようです。
f:id:LIFULL-etotake:20170518233931j:plain

API.aiでは、API呼び出し用のfunction名のようなものを定義し、そこにユーザー入力用のセンテンスを羅列していきます。
そして、Node.js等のコードからそのfunctionを呼び出すような仕組みになっていました。
コンソールが使いやすそうなので比較的わかりやすく進められそうですね。

楽しそうなので、Assistantは是非帰ってから試してみたいと思います。
アプリについて、Assistant Directoryというサービスで対応されたアプリを探すことが出来るそうです。(Playストアのイメージでしょうか・・・)

Best Practices to slim down your app size

アプリのサイズは実際には次のような影響があるとのこと。

  • Downloadサイズが100MBを超えると20%のユーザーがキャンセルする
  • 100MBを超えるアプリは8倍アンインストールされる
    やはりアプリのサイズは小さい方がよさそうですね。
    どのようにしてAPKのサイズを小さくするかのTIPSが紹介されました。

APK Analyserを使い、ボトルネックを知る

AndroidStudioにあるAPK Analyserでapkを解析することで、容量を占めている部分がどこなのかを知ることが出来ます。
デモの例では、resディレクトリが60%を占めていることが分かる、というものでした。

Proguardをかける

Proguardをかけることで、意味のないクラス名やメソッド名にリネームされる他、使用されていないメソッドは自動的に消去されます。
これだけでもかなりの削減につながります。

What’s new in Android Support Library

support libraryの25.3.0 ~ 26.0.0 beta-1の最新情報。
ピックアップしてお伝えします。

最小サポートレベルが14に

gingerbreadとhoneycombがドロップされました。
シェアもかなり少なくなっているようです。

Google Maven Repository

サポートライブラリがGoogle Maven Repositoryからのダウンロードになりました。
今後は以下のように指定するようになります。

repositories {
  maven {
    url: “https://maven.google.com”
  }
}

Downloadable Fonts

APKバンドルから、ダウンロード出来るようになりました。
Cachingもされるようで、一度ダウンロードするとユニバーサルにキャッシュされるので、効率がよくなります。
res/font フォルダーにフォントの属性を書きます。
関連で、EmojiSupportLibraryにより絵文字を表示することが出来るようにもなりました。
f:id:LIFULL-etotake:20170518235038j:plain:w500

AutoSizing TextView

サイズに併せて自動でテキストのサイズが変わるものです。
結構使えるかも!?

Dynamic Animation

Physics Based Animationで、バネの動きなどを簡単に実装することが出来ます。

AnimatedVectorDrawableCompat

VectorDrawableから別のVectorDrawbaleに、アニメーションしながら変形することが可能です。

Wear

WearableRecyclerViewにより、丸型時計の場合は縁のカーブに沿ってリストを動かすことが出来るようになります。

What’s possible with Cloud Functions for Firebase

新しく出た、Cloud Functionsの使い道についてです。

Google Assistantと組み合わせて自前APIの部分をCloud Functionsで実現出来ます。
これで全てGoogleのManagedなサービスで完結することが出来るようになります。

他には、Githubと組み合わせて自動リリースフローに関する話も出ていました。

Introduction to Android Instant Apps

Google I/O 2016で発表されてから、未だに謎が多かったInstant Appsですが、AndroidStudio3.0 / grade 3.0で実装が可能になりました。
「必要なときに出てきて必要なくなったら消えるもの」というコンセプトの機能です。

端末にインストールしていなかった場合は、自動的にPlay Storeから対応する機能をInstant Appとしてダウンロードして使うことが出来るというものです。
その為、プロジェクトを各モジュールに分割して、APKサイズを減らす必要があります。
ユースケースによってはコンバージョンや新規ユーザー獲得に大きく貢献しそうな機能として私も着目しています。

Office Hours

Google Expertに質問や相談が出来るブースです。
GCPやGame関連など、様々なOffice Hourが準備されていますが、常に混雑しています。
私はGCPの相談を受けることが出来ました。
内容については割愛しますが、とりあえず英語でのやり取りという部分で度胸試し&勉強になりました。

Sandbox Instant Apps

f:id:LIFULL-etotake:20170518235039j:plain:w500
f:id:LIFULL-etotake:20170518235036j:plain:w500
Sandboxはいくつかドーム状の施設があり、その中でAndroid AutoやGoogle Assistant、Instant Appsなど、様々なデモを行っています。
こちらも常に混雑状態ですが、たまたまInstant Appsが空いていたので話を聞くことが出来ました。
Googleの技術者と直接話せるというのが非常に貴重な体験になりますね。

App Consulting

Google Playの担当者より、自社アプリへの相談やアドバイスを受けることが出来ます。
私がいったときは30分待ち程度で受けられたので、比較的空いていたのかもしれません。

内容については割愛致しますが、アプリを見せながら様々なアドバイスを受けることができ、非常に勉強になります。
このような機会があるのも、Google I/Oに参加するメリットですね。

Great app performance with Firebase Performance Monitoring

モバイルアプリのパフォーマンスを計測出来るツールです。AndroidとiOS対応。
様々項目が計測できるのですが、かなり細かく見れるようで以下のような計測が可能になります。

(例) ネットワークレスポンスの計測

  • レスポンスのサクセスレート
  • 国ごとの分類
  • デバイスごとの分類
  • OSごとの分類など

これにより、例えばある特定の地域でのみエラーが発生する、特定のデバイスでのみ何かが起こっているという判別が出来るとのこと。
ユースケースでは、特定の国でだけレスポンスエラーが発生しており、原因がロケール対応であった、という例が出されていました。

細かく分析できることで、普段では気づけないような部分にも着目が出来るかもしれません。
試してみる価値はありそうです。

Speeding up your Android Gradle builds

gradleのビルドが遅くて悩んでいませんか?遅いと開発効率も下がりますよね。
様々なTIPSが取り上げられていました。

一番最後に話されていましたが、「Slow build is not NORMAL」と思ってよいらしいです。
ビルドに5分も10分もかかる、そんな場合はセッションの内容を見て是非試してみてください。

こんな感じで、何もしない状態からTIPSをどんどん試していってビルド時間が大幅に現象している様子が伺えます。
最終的には、最大で12倍高速化という結果も出ていました。
f:id:LIFULL-etotake:20170518235037j:plain:w500

番外編 お土産

じゃじゃん!!
f:id:LIFULL-etotake:20170518235041j:plain:w500
Google Homeです!
この他にも、Photo Book無料や$700のGCPクレジットです。
毎年豪華ですね〜

番外編 After Hours Concert

f:id:LIFULL-etotake:20170518235040j:plain:w500
2日目の夜はLCD Soundsystemというバンドによるライブが開催されました。
Keynoteと同じ会場で、大盛り上がりとなりました!

残すところ、Google I/Oもあと1日!
明日も存分に楽しんできます!

Google I/O 2017 旅日記 〜DAY THREE〜へと続く…