Google I/O 2018に参加して報告会を行いました

f:id:vasilyjp:20180611164236j:plain

こんにちは!スタートトゥデイテクノロジーズ新事業創造部の堀江(@Horie1024)です。 2018年5月8日〜5月10日にかけて、カリフォルニア州マウンテンビューにあるショアライン・アンフィシアターで行われたGoogle I/O 2018(以下I/O)に新事業創造部の堀江、権守、茨木、そして代表取締役CIOの金山の4名で参加してきました。

また、帰国後の5月29日にDMM.comグループさん主催のGoogle I/O 2018 参加報告会で堀江、権守、茨木が登壇しI/Oで得た知見を発表しました。

本記事では、 参加報告会での発表内容の紹介とI/Oで印象に残ったセッションの紹介、そして参加した感想をお伝えしたいと思います。

Google I/O 2018参加報告会での発表

堀江、権守、茨木が発表した内容について紹介します。

堀江「Paging Library Overview」

「Paging Library Overview」というタイトルで今回のI/Oで1.0がリリースされたPaging Libraryについて発表しました。

f:id:vasilyjp:20180611164304j:plain

JetpackのArchitecture Componentsに含まれるPaging Libraryは、無限にスクロールするようなListの実装を非常に簡単にしてくれます。スクロール位置に応じたデータの追加ロードやPlaceHolder、Roomを利用したデータのキャッシュとDiffUtilによる差分更新など実装のしやすさとパフォーマンスにフォーカスされていてぜひ業務で使ってみたいと感じています。 デフォルトではRoomを使用する前提となっていますが、DataSourceを継承したクラスを自作することで様々なケースに柔軟に対応することが可能です。

こちらはPaging Libraryについてのセッションの動画です。ネットワークからのデータの取得からUIへの反映までアニメーションを交えて説明されていてわかりやすいです。PageKeyedDataSource、ItemKeyedDataSource、PositionalDataSourceの各種DataSource型についても解説されています。

Paging Libraryについてより理解を深めたい場合、CodelabAndroid Developersのドキュメントが参考になります。

権守「新しくなったMaterial Designを触ってみた」

I/Oで発表されたMaterial Theme Editorの使い方を中心に、新しくなったMaterial Designを実装していく上での具体的な手順について発表しました。

f:id:vasilyjp:20180611164323j:plain

Material ThemeはMaterial Designで利用するためのパーツ(ボタンやカードなど)のカタログのようなものです。Material Theme Editorを使うとTheme上のパーツの色やフォントなどを簡単に変えることができ、プロダクトに合ったThemeを作ることができます。プロダクトのデザインデータを作成する際にはThemeからパーツを選ぶ形で行うことになります。 Material Componentsの実装状況もあり、Material Themeから作ったデザイン全てをAndroid上にスムーズに実装できるとはまだ言えない状況だと思います。ですが、今後の発展次第ではデザイン実装が容易になることも期待できるものだと感じました。

茨木「フロントエンドの動向 From Google I/O 2018」

f:id:vasilyjp:20180611164341j:plain

I/Oでフロントエンドに関するセッションを中心に聴講しました。また、CodelabsでWebAssemblyやPWAに関するコースを体験しました。報告会では、PWA・WebAssembly・JavaScriptの3点にフォーカスして発表しました。

PWA

PWAに関してはログイン・決済APIや実際の運用例が紹介されていました。スターバックスの例が紹介されていましたが、ネイティブアプリに近いUXが印象的でした。

WebAssembly

WebAssemblyに関してはコンパイル用ツールチェインであるemscriptenや、実際にWebAssemblyを使っているサービスの実例が紹介されました。サービスの実例で特に印象的だったのがAutoCADでした。ヘビーな計算やグラフィックスを伴うCADアプリケーションがブラウザで動作しているのが衝撃的でした。

JavaScript

JavaScriptに関しては色々な発表がありましたが、特に印象的だったのがTensorFlow.jsのNode.js対応でした。GPUに対応していてパフォーマンスもPythonに匹敵するので、今後の機械学習ではJavaScriptも多く使われるようになるかもしれません。

Google I/O 2018で印象に残ったセッションの紹介

I/Oでは3日間に渡り様々なセッションが行われます。その中から堀江、権守、茨木が聴いて印象に残ったセッションをいくつか紹介します。

f:id:vasilyjp:20180611164400j:plain

ML Kit: Machine Learning SDK for mobile developers

ML Kitについてデモを交えながら紹介されています。Firebaseの一機能として公開されていて、ベースとなる5つの機能(Image labeling、Text recognition、Face detection、Barcode scanning、Landmark detection)を簡単に利用できます。それらで仕様を満たせない場合、カスタムモデルをアップロードすることでアプリから簡単に使用でき便利です。カスタムモデルのサイズを軽量化しつつ精度を維持する仕組みも興味深かったです。

Android Jetpack: easy background processing with WorkManager

JetpackのArchitecture Componentsの1つとして公開されたWorkManagerについてのセッションです。 複数のbackground処理を繋げたり並列で実行するなど柔軟に処理を実行でき非常に便利です。 WorkManagerがどのように動作しているかの解説もあり面白いです。

Code beautiful UI with Flutter and Material Design

Flutterで開発されたアプリ「SHRINE」に対してライブコーディングでMaterial Designを適用していくセッションです。 登壇者2人の発表が上手く、サクサクと進むライブコーディングは聴いていてとても楽しかったです。 また、Flutterでこんなに簡単にMaterial Designを適用できるのかと感動しました。

What's new with ConstraintLayout and Android Studio design tools

Motion Editorによるアニメーションの作成は必見です。

What's new in Android Runtime

アプリ実行中のログを集め、配布前にAPKを最適化することで起動を高速化するという話には驚きました。

Web performance made easy

Lighthouseを使ったWebサイトのパフォーマンス改善について実例を用いて説明していてとてもわかりやすかったです。 Lighthouseの進歩を感じられるセッションでもありました。

Best practices for text on Android

テキスト周りの細かい話も興味深かったですが、特にRecyclerView中のリンクに関するテクニックはぜひ取り入れたいと思いました。

Introducing .app domain names, and how to secure them

.appドメインはHTTPSのみのドメインで、Google I/O初日の5/8に登録の受付が開始されました。Google I/Oの参加者には.appドメインを無料で取得する権利が与えられたので実際に取得してみました。

What’s new in Chrome DevTools

Lighthouseとの連携やasync/awaitのデバッグが印象的でした。

Make your WordPress site progressive

Webの30%を占めるWordPressに対し、メジャーなテンプレートをAMP対応させていくという内容でした。 Googleらしいアプローチで、なるほどと思いました。

感想

I/Oへ参加することで非常に良い経験ができました。 セッションを聴くことを中心に3日間を過ごしましたが、Office HoursとDesign Reviewにもっと積極的に行くべきだったと感じています。 生でセッションを聴くのも大切ですが、Googlerにその場で質問できる機会は貴重ですしセッションは後から見返すことができます。 次回のI/Oに参加できる場合にはこの点を踏まえスケジュールを組もうと思います。

加えて、KeynoteでのAIに関する発表やML Kitの発表を聴いてフロントエンドエンジニアでも 機械学習やディープラーニングの基礎を理解し、その上でサービスの開発に取り入れていく必要があると考えています。

そして、英語で聴く、話す力が足りないことを身に染みて実感しました。 I/Oに限らず英語を使う機会は弊社が海外展開を進めていく中で増えていくので継続的に勉強したいと思います。

f:id:vasilyjp:20180611164432j:plain

最後に

今回のI/Oは会社の出張という形で参加しました。参加期間は業務扱いとなり、交通費なども含め会社からサポートされます。 国内外のカンファレンス参加についてサポートする体制が整っており非常にありがたく思います。 得られた知見を普段のサービス開発に生かしていこうと思います!

スタートトゥディテクノロジーズでは、一緒にサービスを作り上げてくれるエンジニアを大募集中です。 ご興味のある方は、以下のリンクからぜひご応募ください!

https://www.wantedly.com/companies/starttoday-tech/projects

おまけ

Day2の夜にコンサートが開かれるのですが完全にフェスでした。照明の使い方がすごい。

f:id:vasilyjp:20180611164504j:plain

空いた時間でサンフランシスコを観光しました。西海岸の気候は最高ですね。

f:id:vasilyjp:20180611164529j:plain

サンフランシスコにあるGitHub本社オフィスを訪ねました。事前に連絡せず行ったにも関わらずフレンドリーなお兄さんが案内してれました。

f:id:vasilyjp:20180611164550j:plain

有名なOctocatの像が。残念ながら本社のGitHubストアはクローズしたとのこと。今後はOnline Shopのみでグッズを販売するとのことです。

f:id:vasilyjp:20180611164608j:plain