Google I/O 2018 Day 2
5 月上旬に行われた Google I/O 2018 に参加してきた。 この記事は Google I/O 2018 の 2 日目の記事である。
Code beautiful UI with Flutter and Material Design
Material Theming と flutter の話。
Flutter はマテリアルデザインのファーストクラスプラットフォームとなっているそうで、
import 'package:flutter/material.dart';
をいれるだけで、Material Theming に関するあれこれが使えるようになる。
MaterialApp
などのマテリアルデザインができるクラスがあって、
それに手を加えていけばマテリアルデザインにアプリが作れる。
デモでもやっていたがコードを変更するたびに、VM 上のアプリがホットリロードされるので イテラティブな開発が非常にやりやすくなっている。
Codelab で flutter のコースがいくつかあるので、flutter 触りたい人はそこから始めるのがおすすめ。
Microservices in the Cloud with Kubernetes and Istio
Kubernetes + Istio によるマイクロサービスとサービスメッシュの話。
Microservice が 2000 を超えるようなことも多々ある状況だと 管理が大変になる。そういう場合に使うのが Istio で、 これはサービスメッシュというインフラストラクチャとサービスデプロイメントを統一したレイヤを提供してくれる。 Istio を使うとコードを変更することなくマイクロサービスのルーティングを変更したりするなど、 オペレータがマイクロサービスを扱うのに便利なことができる。
デモではistioctl
コマンドでルーティングルールを記述した yaml を元にマイクロサービスに色々な変更を加えていた。
GUI も提供されていて、マイクロサービスの状況が簡単にわかるようになっている。
Android Jetpack: what's new in Architecture Components
Android Jetpack の Architecture Component の話。
新しく追加されるのは Navigation, WorkManager, Paging。
Paging ライブラリは RecyclerView 向けの遅延読み込みリストを提供するもので、 データベースやネットワークなどをデータソースにするのが主な使い方になる。 RxJava もサポートしている。
WorkManager はこれまで複数あったグラウンドジョブのライブラリをまとめたインターフェースとなるもので、 タスクのチェーンや制約条件の指定などをつかって柔軟にバックグラウンドジョブを登録することができるようになる。 制約条件にネットワークにコネクションがはられた場合にひとつだけジョブを開始するというような設定もできる。
Navigation は画面遷移の設計を簡単にするもので、GUI 上から簡単に画面遷移を設計することができる。 また DeepLink を貼って、本来複数回の画面遷移後に表示される画面にジャンプした場合のバックスタックも自動的に作ってくれる。 なお Navigation での画面遷移は Fragment を使っているので、Acitivity は単なるエントリーポイントとして使って Fragment で画面遷移しようという意図が感じられる。
プロジェクトの目標としては Architecutre Component がデフォルトになるようにしたいらしい。
TensorFlow for JavaScript
TensorFlow が JavaScript で使えるようになるというだけだが、 それが嬉しい点としてブラウザで動かせるとカメラとかセンサとか機械学習に役立つものが使えるから、というが個人的に非常に腑に落ちた。 ブラウザというとPCから使うものというイメージを自分は持っていたが、最近ではスマホ上のものの方が多いもんな。
普通の TensorFlow からモデルをインポートする使い方もできるし、node.js で動かすこともできる。 パフォーマンスとしては普通の TensorFlow と遜色ないレベルにまでなっているそうだ。
Introducing AIY: Do-it-yourself Artificial Intelligence
AIY の紹介。AIY は ダンボールと Rasberry Pi に加えて色々部品がついて、自分で組み立てる IoT グッズ。 AI と付いている通り、TensorFlow が入っていて、現在は画像認識ができる Image Kit と、音声認識ができる Voice Kit がラインナップされている。
Google I/O が終わった後にサンフランシスコの Target までいって買おうとしたが売り切れだった。 展示はしていたので、販売自体はしている様子。 秋月電子でも扱っているので、一応日本でも買うことはできるようだ。
Android Jetpack: what’s new in Android Support Library
Support Library が Android Jetpack に含まれたことによる変化の話。
Support Library でバージョンがわかりづらくなっていたのを整理して、1.0.0 に巻き戻した上でこれからは Semantic Versioning に従ってバージョニングする。
後ライブラリとしては androix という名前空間になるので、これまでは support.*
だったのが androidx.*
になる。
androidx へのマイグレーションは Android Studio 上から行える用になっているが、これはまだバギーでバックアップを取るのが望ましいようだ。 また AAR/JAR のバイナリをマイグレーションする Jetifier というツールもある。
ML Kit: Machine Learning SDK for mobile developers
ML Kit の紹介の話。
ML Kit は iOS/Android どちらでも使える SDK でモバイルフレンドリー、つまりネットワークのオン・オフにかかわらず使えるようになっている。 ネットワークがオフ時にはオンデバイスで推論して、オンの場合には Google Cloud AI の推論 API が使える。 Firebase は必須。
使える API はテキスト認識、バーコード認識などモバイルで使えそうな基本 API がある他、カスタムモデルもサポートしていて好きな推論をすることができるようになっている。
ML Kit も Codelab でコースがありすぐに試すことができる。やってみると簡単に推論ができるのがわかる。 ML Kit の API 呼び出しは、機能別に月 1,000 回までは無料なので、codelab はお金をかけずにできるはずだ。
Community Groups - Northeast Asia and Oceania
北東アジアの開発者向けのミートアップにもちょっと行ってみた。 写真撮影をしていたので入ってみたが、なんか全然関係ないところの撮影だったかも。 一応ちょっと名刺とか今作ってるサービスのシールとか配ってきた。
Codelabs
Codelabs の待機列が少なくなってきていたので、自分も並ぶことにした。 このとき手をつけたのは、Flutter 2 コースと Slices 1 コース。 その場で Googler に質問できるのは思っていたより良かった。 結構時間かかるのもあったが、あまり Codelab の終了時間まで少しだったので短いものばかり選んでしまった。 もうちょっと早めに始めたほうが良かったかとちょっと後悔。
After Party
二日目の After Party では Amphitheatre でライブがあった。 サイリウムのような、 LED が入った棒をもらったので振ってきた。 これ自宅まで持って帰ってきてしまって処分に困っている。
その他
この日に Google Home mini と Android Things Starter Kit をもらってきた。
Google Home mini は現在部屋に設置して使っているが、このブログを書いている時点でまだ Android Things の方に触れてないという体たらく。さっさと 3 日目のも書いたら手を着けたい。