Google I/O 2016に参加してきました(全体まとめ編)

こんにちは。スマートデバイス開発チームの韮澤です。
ただいまアメリカのカリフォルニア州マウンテンビューというところにおります。

日本時間5/19(木)〜5/21(土)に、年に1度のGoogleのカンファレンス、Google I/O 2016が開催され、私と、同じチームメンバーの段も参加してきました!!

本記事の執筆はカンファレンス最終日の夜に行っており、ひとまずカンファレンス全体の雰囲気や参加メンバーが気になったセッション・トピックについて書いていきたいと思います。

実際に新しいツールを使ってみた等の記事は後日公開予定です!

カンファレンスの雰囲気

これまではサンフランシスコでの開催でしたが、今年はマウンテンビューのShoreline Amphitheatreという屋外円形劇場で開催されました。

入口ではドロイド君がお出迎え!

droid

コンサート等も開催される場所とのことで、周りの広場も含めるととても広大な敷地でした。

キーノート会場は巨大な円形ステージ!

amphitheatre

他のセッションは、広場の中に10個設置してあるドーム型の設備の中で行われました。

dome

ストリーム配信される会場は少し大きめ

bigdome

中はこんな感じでした。

dome_inner

人気のセッションは長蛇の列ができ、入場できない人も多くいたようです(私もいくつか入れないセッションがありました…) line

また、各所にGoogleのプロジェクト毎のテントが点在し、そこにいるプロジェクトメンバーと直接コミュニケーションを取れるようになっていました。

Android Wearや今回公開されたAndroid Studio2.2、VR、子供向けプログラミング教材など、今回大々的に発表があったものからそうでないものまで、多種多様なプロジェクトがありました。

wear

テント内では議論が活発に行われていました。

tent_inner

気になったコンテンツ

さて、ここからは参加者の私と段が気になったコンテンツをご紹介したいと思います。

Android Instant Apps

今年のAndroid関連の発表の中でもかなり注目すべき発表ではないでしょうか。

ユーザーにインストールさせることなくネイティブアプリを使ってもらえるという、これまでの常識を打ち破る機能です。
Googleによる公式ページはこちら

ネイティブアプリはスマホwebと比較して挙動が滑らかで使いやすい一方、インストールという行為がユーザーにとって障壁となることが多く、開発者としてはもどかしい思いをすることがあります。

しかしInstant Appsによって、ユーザーはインストールせずともネイティブアプリの恩恵を受けられるようになります。 これにより、ユーザーに手間を掛けさせずにネイティブアプリの快適さを提供でき、非常に良いことだと私としては感じています。

夢は広がりますが、現在は実装方法などの詳細はまだ発表されていません。現状わかっていることについて下記にまとめます。

  • 本体アプリのAPKと別途APKを作成する必要がある
    • 別アプリを作成するわけではなく、既存アプリの一部をモジュール化して小さなAPKを作成する
  • APKサイズは4MB以下推奨
  • Android 4.1+ (API Level 16)をサポート
  • Device IDは使用できない
  • 一度使用したら、通常のアプリのようにバックグラウンドには残る。ユーザーがプロセスをkillするか、GCがかかった時点でInstant Appとそこで使ったデータが削除される

既存アプリをモジュール化する、という部分については、Activity単位で必要なソースのみをモジュール化してAPKにするようです。 どの部分をInstant Appsとして切り出すか、丁寧な設計が必要になってきますね。

ドキュメント等は公開されておらず、公式リリースもまだ先のようですが、先述のInstant Appsの公式ページにearly access program登録フォームがありました。 登録者全員が参加できるわけではないですが、ここはぜひ登録して、早く試したいところですね!

Progressive Web App

GoogleはProgressive Web App(PWA)にかなり力を入れているようでおり、今回のI/Oにおけるセッションの数からそれが見て取れます。

PWAについては、Google Developersのページに丁寧に説明が書いてあります。

Service workerを用いたデータキャッシュによってオフラインでも動作するようにしたり、Facebookのようにブラウザから通知を飛ばせるようにしたりといった挙動を実装し、Webアプリではあるがスマホ上ではネイティブアプリのように動作するものです。

これを開発するために、Googleは3年前にPolymerというプラットフォームを発表しましたが、今回は更にPWA開発を加速させるため、Polymer App Toolboxを発表しました。

Polymer and Progressive Web Apps: Building on the modern web

Layout、Routing、Localization, Storageをサポートし、CLIも用意されました。

こちらのドキュメントにもありますが、CLIによって、polymer initのコマンド1つでWPAテンプレートができてしまいます。

また、新たに発表したPRPL(下画像参照)の考え方を基に作られたサンプルアプリも紹介され、その実装を詳細に解説するCase studyページも用意されました。

prpl

こういった発表から、PWAの普及を本格的に進めていくという意思が感じられます。

ちなみに、Google I/OのwebアプリもPWAとなっており、GitHubでソースが公開されています。

Offline-ready

PWAの定義の一部ではありますが、PWAだけでなくアプリにとっても、オフライン環境や通信が不安定な環境でも正しく動作すること、つまりローカルキャッシュを上手に使うことが大切です。下記セッションでそれぞれアプリとPWAについてのOffline-readyな作りが解説されています。

Android application architecture: Get ready for the next billion!

Instant Loading: Building offline-first Progressive Web Apps

前者のセッションの中の話では、通信環境が十分に整っていない国での利用についてが言及されていましたが、後者では「Lie-fi」と言われているようにWifiに接続しているように見せて実はそうでなかったり低速な回線だったりといった状況について話が出ていました。地下鉄の通信環境が良くない、といった状況もあり、日本においてもかなり重要な技術ではないかと思っています。

Material motion

Material designにおける動き(Material motion)についてのセッションがありました。

Discover the expanded Material Design motion guidelines

また、新たにその解説動画をMotionのページにアップしたようです。

Material motionにおける、重要な4つのポイントについての解説でした。

  • Responsive

    • ユーザーからの操作に対し、直ちに、素早く反応すること
  • Natural

    • 現実世界のように、動きに適切なイージングを適用すること
    • 動きの導線に軽くカーブをかけること
  • Aware

    • 内部、外部、周囲にあるオブジェクトとの関係を考慮して動くこと
      • 例)リストの1要素をタップしたら他を押し出すように展開するのか、一段上の階層にpopupしてきて展開するのか
  • Intention

    • motionにはユーザーをガイドするという意図がある、ということを忘れない
    • 何か操作が完了する前に、これから何が起こりそうかを示すこと
      • スワイプできないコンテンツをスワイプしようとしたときに、わざと抵抗を加えることにより、ユーザーは動作を最後までせずとも操作不可能であることを認識できる

つらつらと書きしましたが、動画を実際に見ていただくのが良いかと思います!

エンジニアもこういった動きの基礎をしっかりと理解し、デザイナーとちゃんと会話ができるようにしておかなければなりませんね。

Android Studio2.2の新機能

素晴らしい新機能が数多く提供されており、その中でも下記2つの機能は開発効率アップの面で特に注目しています。

後日、詳細記事を投稿しますので、こちらは少し軽めにご紹介します。

1. Constraint Layout

iOSでのレイアウトでも使われているConstraintの概念を取り入れ、リッチなレイアウト作成時に避けられないネストの問題を解決してくれます。

複雑なレイアウト階層を考えなくて済むので、作業工数が短縮できるのと、より良いパフォーマンスの良いレイアウトが作成できます。

Layout Windowを利用すると、自動的にConstraintを入れてくれるので、さらに効率よく画面作成ができます。

2. Espresso Test Recorder

画面をタップするだけで、UIテストコードを自動的に作成してくれます。
これにより、UIテストの導入ハードルが一気に下げられ、開発現場のテスト自動化導入の後押しになるではないと考えています。

自動生成されたテストコードはローカルで実行するか、TestLabを利用して複数端末での同時確認も可能です。

Firebase

アプリ解析、クラッシュレポート、A/Bテスト、プッシュ通知などアプリ開発上欠かせない機能を統合したモバイルアプリ開発プラットフォームであり、Android及びiOSの両方対応しています。(Test Labは有料で、現時点でiOSは未対応)

コアとなるのはAnalyticsで、他のFirebase機能と連携して、より強力な機能を提供できます。例えば、特定のユーザー群に対してプッシュ通知を送る、クラッシュしたユーザーだけ向けにプッシュ通知を送るなどです。

Analytics機能自体は、無料かつ無制限で利用できるようになっています。

おわりに

いくつかのトピックをご紹介しましたが、ここでは紹介しきれないほど本当に沢山のセッション・プロダクトがあり、とてもエキサイティングな3日間でした。

セッションの動画はこちらにアップされているので、気になるセッションについて見てみると良いかと思います!字幕もついているので見やすくて理解も進みます。

後日、Android Studioの新機能についても投稿しますので、そちらもお楽しみに!

io

grassdroid