Google I/O 2019 に参加しました

こんにちは、技術部品質向上グループの加藤です。 普段は主にモバイルアプリのテスト周りに関わっています。 今回は先日開催された Google I/O 2019 に参加したので、現場の環境や気になったセッションを初参加の目線で書いていきます。

Google I/O 2019

毎年5月ごろに Google が開催するカンファレンスです。 Google が展開するプロダクトやサービスに関する情報が多く発表され、カンファレンス冒頭にある Keynote は毎年非常に注目を集めています。 カンファレンス中は広い会場で多くの発表が行われていますが、発表のセッション以外にも多くの企画があります。

Office Hour & Sandbox

カンファレンス中にはセッションが行われる施設とは別にいくつもの施設が併設されています。 そのなかでも今回は Office Hour と Sandbox について触れたいと思います。

Office Hour では時間帯ごとにテーマが定められ、枠を予約することでテーマに沿った内容についてそれに関わる Google 社員と直接会話することができます。 テーマは非常に多岐に渡り、Kotlin for Android のような一般的なものから、R8 / shrinking app code のような少しニッチな部分まで数多くのテーマが存在しています。 もちろんコミュニケーションには英語が必要とされますが、社員の方も熱心に耳を傾けてくれるため英語に自信がない自分でも内容を十分に伝え合う程度には会話をすることが可能でした。

Sandbox ではテーマごとにテントが設置されており、その中でカジュアルに Google 社員と会話をすることが可能です。 Office Hour と違い予約制ではないため、常に人に溢れているような環境ですが想像以上にしっかりと会話をすることができ、Office Hour と合わせて直接コミュニケーションを取ることができる場となっています。 ちなみに人が溢れているおり必然的に場がかなり騒がしくなっているので、強い気持ちでコミュニケーションをとる必要がありました。

I/O 参加前に社内で Android や Firebase 関連の質問と要望を取り纏めていましたが、Office Hour 及び Sandbox で全ての内容を Google 社員と直接議論することができました。 特に要望に関しては実際のユースケースを合わせて会話をすることで、一方的に要望を伝えるだけでなく、現状取り組めるアプローチ等の提案もあり非常に価値がありました。

セッション紹介

ここからは I/O のセッションで興味が惹かれたものを少し紹介します。

※筆者は Android アプリの開発に関わっているので、内容は Android のものばかりなってしまっています。

New Tools to Optimize Your App's Size and Boost Installs on Google Play

https://www.youtube.com/watch?v=rEuwVWpYBOY

タイトルの通り、アプリサイズを最適化(サイズダウン)することでアプリインストールを促進させるという内容です。 Play Store 上でのいくつかの変更と合わせてアプリインストールへ如何につなげるか、具体的にどの程度の効果が見込めるのかという話でした。 いくつか Play Store の変更点がありましたが、私が注目した点としては以下の2点です。

  • Play Store 上で表示されるアプリ評価で評価者のアプリ利用年数に応じて重み付けが始まる
  • Play Console 上にアプリサイズの項目が追加

1点目については昔から長くリリースを続けているアプリであればあるほど、開発側にとってメリットとなるように受け取ることができます。 利用年数に対しての重み付けの具体的なロジックは好評されていませんが、弊社のモバイルアプリに関しては評価を上げることとなりました。 新しいロジックによる評価への切り替えは 2019年8月 から始まるようです。

2点については情報が多いのですが、まとめると Play Console 上でアプリサイズについての情報をいくつか確認できるようになるようです。 設定した類似アプリのアプリサイズの中央値との比較や、端末の空き容量が 1GB 未満の端末の利用者やその環境でアンインストールを行った利用者を確認できるようになるとのことです。 App Bundle も合わせて、Google のアプリサイズ減少への強い意向が感じられる機能です。

他にもアプリサイズが大きくなってしまうゲームアプリ向けに対しての施策や、デバイス間でのファイル共有の話題がでました。

Customizable Delivery with the App Bundle and Easy Sharing of Test Builds

https://www.youtube.com/watch?v=flhib2krW7U

昨年の Google I/O で発表された App Bundle ですが、次のレベルとしてコンテンツ配信についての新たな仕組みが紹介されました。 In-app updates はそのうちの1つですが、緊急の強制アップデートとユーザが選択可能なアップデートの2種類の仕組みが提供されるとのことでした。

また新たな仕組みに合わせてそれらをテストするツールについてもアップデートがありました。 従来 App Bundle や Dynamic Feature を検証する際には、Play Console 上にアプリをアップロードする必要があり、なおかつアップロードされたテスト版のアプリの利用側にも登録が必要であるなど制約が存在していました。 これらの問題に対して Internal App Sharing の発表がありました。

Internal App Sharing では、version code の制限と配信対象者の登録が必要なくなり、インストールリンクを踏むだけでテスト番のアプリを利用することが可能となりました。 各インストールリンクごとに利用者の制限はあるようですが、これにより App Bundle を利用したアプリの検証の難易度が下がることとなりそうです。 App Bundle に関わらず幅広い用途が見込めるため、社内の多くのチームで検証が効率化されることを期待しています。

Build Testable Apps for Android

https://youtu.be/VJi2vmaQe6w

Testable な実装を目指して、テストピラミッドから実際の実装例までを包括的に説明する発表でした。 昨年の Google I/O で発表された Android Test を利用したモダンな実装例が紹介され、同日にこのセッションに合わせて Android Testing の Codelab が更新されたので、ご興味ある方はぜひお試しください。 また昨年テスト実行環境として、Nitrogen という ART や JVM、 Firebase Test Lab 等実行環境を意識することなくテストの実行を可能とする概念が発表されました(Jetpack の燃料ということで Nitrogen という命名)。 これまで完全に謎なものとなっていましたが、今回 Early Access Program が発表されました。 まだ全貌は明らかになっていませんが、いち早く応募してみなさんの目で確かめてください。

参加してみての感想

今回の Keynote 中で発表されたように すべての人に向けて 技術を提供するという目的に向けた内容が多かった印象でした。 紹介しなかったセッションでもアプリサイズの最小化や機械学習技術のアクセシビリティへの応用など発表や展示が非常に多く見受けられました。

また昨今のカンファレンスでは、セッションの発表内容がインターネット上で公開されることが多いなかで、 発表された多くの内容について直接開発者とコミュニケーションをとることで、実際の開発にどう活かせるのかという点を確認することができ、現地に赴く重要性が強く感じられました。

f:id:ksfee:20190604210755p:plain

クックパッドでは Google I/O で発表されるような最新の技術をガンガン取り込んでいく Android エンジニアを募集しています。

/* */ @import "/css/theme/report/report.css"; /* */ /* */ body{ background-image: url('https://cdn-ak.f.st-hatena.com/images/fotolife/c/cookpadtech/20140527/20140527163350.png'); background-repeat: repeat-x; background-color:transparent; background-attachment: scroll; background-position: left top;} /* */ body{ border-top: 3px solid orange; color: #3c3c3c; font-family: 'Helvetica Neue', Helvetica, 'ヒラギノ角ゴ Pro W3', 'Hiragino Kaku Gothic Pro', Meiryo, Osaka, 'MS Pゴシック', sans-serif; line-height: 1.8; font-size: 16px; } a { text-decoration: underline; color: #693e1c; } a:hover { color: #80400e; text-decoration: underline; } .entry-title a{ color: rgb(176, 108, 28); cursor: auto; display: inline; font-family: 'Helvetica Neue', Helvetica, 'ヒラギノ角ゴ Pro W3', 'Hiragino Kaku Gothic Pro', Meiryo, Osaka, 'MS Pゴシック', sans-serif; font-size: 30px; font-weight: bold; height: auto; line-height: 40.5px; text-decoration: underline solid rgb(176, 108, 28); width: auto; line-height: 1.35; } .date a { color: #9b8b6c; font-size: 14px; text-decoration: none; font-weight: normal; } .urllist-title-link { font-size: 14px; } /* Recent Entries */ .recent-entries a{ color: #693e1c; } .recent-entries a:visited { color: #4d2200; text-decoration: none; } .hatena-module-recent-entries li { padding-bottom: 8px; border-bottom-width: 0px; } /*Widget*/ .hatena-module-body li { list-style-type: circle; } .hatena-module-body a{ text-decoration: none; } .hatena-module-body a:hover{ text-decoration: underline; } /* Widget name */ .hatena-module-title, .hatena-module-title a{ color: #b06c1c; margin-top: 20px; margin-bottom: 7px; } /* work frame*/ #container { width: 970px; text-align: center; margin: 0 auto; background: transparent; padding: 0 30px; } #wrapper { float: left; overflow: hidden; width: 660px; } #box2 { width: 240px; float: right; font-size: 14px; word-wrap: break-word; } /*#blog-title-inner{*/ /*margin-top: 3px;*/ /*height: 125px;*/ /*background-position: left 0px;*/ /*}*/ /*.header-image-only #blog-title-inner {*/ /*background-repeat: no-repeat;*/ /*position: relative;*/ /*height: 200px;*/ /*display: none;*/ /*}*/ /*#blog-title {*/ /*margin-top: 3px;*/ /*height: 125px;*/ /*background-image: url('https://cdn-ak.f.st-hatena.com/images/fotolife/c/cookpadtech/20140527/20140527172848.png');*/ /*background-repeat: no-repeat;*/ /*background-position: left 0px;*/ /*}*/