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

Mercari Engineering Blog

We're the engineers behind Mercari. Check out our blog to see the tech that powers our marketplace.

Google I/O 2016 現地レポート+モバイル系エンジニアが今すぐ試すべき注目技術まとめ

Android

f:id:tomoima525:20160517105733j:plain:w400

こんにちは、Androidチームの @tomoaki_imaiです!今回はシリコンバレーにて5/18 - 5/20の3日間開催された、Google I/O 2016についてレポートします。またGoogle I/Oにて発表された内容から、モバイル系エンジニアがすぐ試すべき注目技術についてもまとめましたので、御覧ください。

目次

Google I/Oとは

f:id:tomoima525:20160518133142j:plain:w400
Google I/OはGoogleが主催する、一番大きな技術カンファレンスです。Googleがその年にリリースする最新技術の発表があり、とても注目度が高いイベントです。また、期間中にはセッションやブース展示を通じてGoogleのエンジニアと直接交流し、様々な情報交換が出来ます。
近年はサンフランシスコで開催されていたこのカンファレンスですが、今年はGoogle本社があるマウンテンビューにて開催されました。それに伴って例年よりも参加者が多く、今年は7000人以上が来場したそうです。

Google I/Oの構成

Google I/Oがどのような構成のカンファレンスなのかを現地の写真を交えつつ説明したいと思います。Google I/Oは (1)キーノート(2)セッション(3)展示ブース(4)CodeLab(5)After Hourの5つで構成されています。

(1)キーノート

f:id:tomoima525:20160518100455j:plain:w400
Googleが推進したい技術についてCEOであるサンダーピチャイ氏や各チームのリーダーが発表を行うセッションです。大きなアナウンスメントはここで行われます。
今年のキーノートでは、新技術のアナウンスメントとして、

  • よりスマートな検索支援を行う Google Assistant
  • スマートホームプロダクト Google Home
  • 新しいコミュニケーションツール Allo(AI支援機能を持つチャットアプリ)、Duo(プレビュー付きビデオ電話)
  • モバイル向けVRプラットフォーム Daydream

がありました。また、開発者向けの発表としては

  • Android N 続報
  • 腕時計型OS Android wear 2.0
  • Anroid開発環境 Android Studio 2.2
  • クラウドデータベースのFirebaseが分析、ノーテフィケーション、テスト機能を追加。分析等一部の機能は無制限で無料に
  • ネイティブアプリをユーザーがインストールしなくても同等の機能が使えるAndroid Instant Apps

といったものがありました。
キーノートについては、動画がYouTubeにあがっています。ですが、これは2時間あって大変長いため、Engadgetが公開している12分の動画がさっと概要を押さえるにあたっておすすめです。

(2)セッション

3日間の開催期間中のメインを占めるのがGoogle社員によるセッションです。カウントしてみたところ、3日間で合計232セッションがありました。セッション内容はAndroidの開発TipsやWeb技術の最新動向など多岐に渡ります。
今年のセッションで頻繁に目にした印象があったのは、Firebaseでした(カウントしたところ28セッションがありました)。Firebaseは大幅な刷新があり、モバイルアプリ開発における多くの重要な機能を網羅したサービスとなったことから、Googleとしても認知度を上げたいのかもしれません。

なお、これらのセッション内容はYouTubeのGoogle Developerチャンネルで公開済または公開予定です。

ところで、今年は参加者が多いためかセッションに長蛇の行列が必ず出来ました。それは困ったものだったのですが、一方で列に並んだエンジニアと待ち時間で仲良くなる機会があり、それは良かったのかなと思います。

f:id:tomoima525:20160518152606j:plain:w400
40分前には並ばないとセッションに入れませんでした

(3)展示ブース

セッション以外にも各分野の展示ブースがあり、Googleエンジニアによるデモや解説を聞くことができます。自分はセッション入れなかった時には色々なブースを回って日頃抱えていた技術的な課題を相談したり、導入方法等について話を聞いたりしました。

f:id:tomoima525:20160520143847j:plain:w400

個人的に面白かったのは、Android Experimentと呼ばれるブースです。Androidを使った実験的な技術を展示していて、こういう新しいことにも積極的に取り組み展示しているのが面白いなと思いました。

f:id:tomoima525:20160520143810j:plain:w400
Androidで撮った写真を加工・プロットして描画する実験

(4)CodeLab

f:id:tomoima525:20160523092432j:plain:w400
CodeLabは最新の技術をTutorial形式で学ぶことができる場所です。CodeLab自体は公開されているのですが、ここで行うメリットとして、

  • 最新の開発環境、端末が揃っている
  • 疑問点があればGoogleのエンジニアに直接相談できる

といったことが挙げられます。ちなみに、Google I/Oで発表されたConstraintLayoutという新しいレイアウトについて、当日チュートリアルが公開されていました。それを実際に動かしてみた内容を元に書いた技術記事を公開しています。

qiita.com

(5)After Hour

カンファレンスの1日目と2日目の夜は、パーティーが開催されました。
今年はコンサート会場での開催ということもあり、1日目の夜は著名なミュージシャンやDJを呼んで盛大なコンサートがありました。参加者は皆リラックスしたムードで交流を楽しんでいました。

f:id:tomoima525:20160518193644j:plain:w400
コンサート会場でのライブは大盛り上がり

f:id:tomoima525:20160519202400j:plain:w400
2日目の夜はそこかしこでライブ演奏がありました

(ちょっと脱線)期間中の滞在先/移動

滞在先

期間中、私はAirbnbで探したマウンテンビュー駅近くのシェアハウスに滞在しました。6人部屋のドミトリですが、一泊$40で付近の平均が$150前後と考えると格安でした。 また、このシェアハウスはスタートアップのコワーキングスペースも兼ねていて、くっちゃくちゃの格好したエンジニアたちがリビングで夜通しプログラミングしている様子はシリコンバレーっぽいなーと思いました。 一般的にはホテルを取るケースが多いかと思いますが、こういったところでの出会いも良いのでおすすめです。

f:id:tomoima525:20160519205807j:plain:w400
変な照明のリビング

移動

会場から宿の移動はGoogleの提供する無料シャトルバスかUber/Lyftを利用しました。UberとLyftはGoogleと提携し、期間中は$10offになるクーポンが発行されて、実質無料で移動ができました。 個人的には相乗りがおすすめです。値段も割安になるだけでなく、以下のように印象的な出会いや出来事がたまにたまに発生するからです。

せっかくシリコンバレーに来たのであればぜひ利用してもらいたいシステムです。

モバイル系エンジニアが今すぐ試すべき注目技術

今回の発表でモバイル系エンジニア(特にAndroidエンジニア)が目を通して試しておいた方がよいと感じた技術について紹介します。

Firebase(Android, iOS, web)

まずは今回大きく取り上げられたFirebase。従来のクラウド型データベース機能に、分析、認証、自動テスト、通知機能、ABテストが追加されました。
特に分析機能については、Googleのエンジニアに話を聞いた所によると、GA(Google Analytics)よりもモバイルに特化していて、かつアクセス数の制限がないという点でGAに置き換わるサービスとなるようです。 個人的には認証機能のFirebase Auth+UIに注目しています。

  • Google+、Facebookなどの6つの主要なアカウントでのサインアップ機能が数行のコードで実装できる
  • サインアップスクリーンUIをAndroid,iOS, web向けに提供。オープンソースでカスタマイズできる

ということで、複雑だった認証の仕組みを各プラットフォームで共通化・簡素化できることが期待できます。詳細はこのセッションの動画の最後にて説明があります。

www.youtube.com

画像圧縮(Android, iOS)

画像表示は多くのアプリでパフォーマンスに影響を与える要素となります。
画像の扱いに関する指針がセッションで公開されていました。Androidに関して言えば可能であればvectorDrawableを使うこと、使えないのであればWebP, α値を省いたpngを利用すること、ということが示されました。

f:id:tomoima525:20160518143822j:plain:w400
一枚でわかる画像圧縮の設計指針

それを実現するために、Android StudioではMaterial IconをVectorで生成する機能やvectorDrawbleのSupport Libraryが追加されました。 動画で詳細を御覧ください。

www.youtube.com

Android Tools (Android)

Android Studio 2.2では開発を効率化できる多数の機能が追加されています。主要なものを上げると、

  • Apk Analyzer
    Apk内部のリソースファイルやdex内のメソッドを参照できる機能
  • ConstraintLayoutを使ったGUIベースのレイアウトデザイン
  • Espresso Test recording
    レコードした結果を自動でEspressoで動くコードが生成できる機能
  • さらに改善されたInstant Run
    Instant RunにはHot(コード変更)、Warm (リソース変更)、Cold (継承関係変更)の3種類があります。New AAPTではR.javaの再生成をなるべくしないようになり、Hot(数秒での反映)での反映がしやすくなった

などがありました。ライブデモがあるので、この動画は必見です。

www.youtube.com

まとめ

このような大きなカンファレンスに参加したのは初めてだったのですが、以下の点で大変有意義な3日間でした。

世界各国のエンジニアと交流できる

カンファレンス中は色々な国のエンジニアと話す機会がありました。お祭りのような雰囲気だから普通のmeetupよりも話しやすい印象でした。どういうセッションが良かったとか、あの技術はどうなのか?とか、ここでしかできない交流がありました。

最新の技術に真剣に向き合える

実際のところ、今回のカンファレンスの内容は動画で公開される予定です。しかし、集中してセッションを聞いて、実際に動かしてみて、時には疑問点を質問して、内容を消化するといったことは現地にいるからこそ出来るものだと強く感じました。 特に今回のカンファレンスにおいて、私はある課題についてより優れた解決方法を見つける目的を持っていて、それに関してよい知見が得られたことが大きな収穫だった と感じています。

カンファレンス中の4日間、業務の対応をしてくれたチームに感謝しつつ、ここで得た知見をサービスに活かして行く所存です。なお、メルカリではエンジニアを募集中です。新しい技術を使って世界と勝負したい方、連絡待ってます!

www.mercari.com