Google I/O報告会に行ってきた(メモ)

5月24日に行われたGoogle I/O報告会に行ってきました。久しぶりの大きな勉強会&長丁場なので最後までいられるか心配してたんだけど、なかなか濃い内容だったので5時間あっという間だった。

発表者の方が言ってたように今回のGoogle I/Oでは特に大きな発表はなく(Google App Engine発表、というようなインパクトのあるものはなかったという程度に)、これまでの技術をより安定&洗練するためのテクニカルなところの成果発表といった感じでした。とはいえ、Googleの技術を使って開発等してる方にはなかなか充実したものだったんじゃないかと思います。(最近全然Google関連の技術に触れてないんだけど・・。)

印象に残ったのはサンフランシスコではGoogle Glassやその他サービスを作った技術者の人と話が出来たり、コードの不具合を見てもらったり出来たらしいってこと。なかなかそういう機会ってないと思うので羨ましいっすねー。来年こそはと思ったけど今日受けたTOEICの出来栄えがなかなかアレな感じなのでいつになることやらー。

技術的な所では、AndroidのVollayライブラリというやつで、ネットワークに接続して画像取ってきたりするのが便利になるらしい。(キャッシュとか、HttpClientどれつかうとかで悩まなくなるらしい)あとは、Google App Engineで使ってたDatastoreサービスが、外から(App Engine以外から)HTTP、JSONで使えるようになるらしい。これは、結構いいかも。EC2でフロントつくって裏はDatastoreとか。

ということで、今回のGoogle I/O報告会の資料などのリンクをメモっときます。

以下は自分用メモです。誤字脱字、勘違い、理解不足のため途中で諦めたような記述等多々ありますのでお気をつけください・・。

Androidセッション
Development Tool
 Android Studioが発表された
 IntelliJ IDAベースになった
 Gradle OSSのビルドシステム
 環境に応じてパッケージ名を切り替えたりできる?

Google Play
 PlayやAndroid Studioからリソースを翻訳してくれるサービス
 α版ベータ版の段階的リリース
 ユーザ数を増やすセッションとかもあった
Google Play Services
 Google Wallet
  物理的なものも販売できるようになる
 Location API
  位置情報の取得などを頑張ってやってたことをPlay Serviceがやってくれたりする

Application Design
 Structure in Android App
  エレベータピッチ、フィーチャーリストの間のユースケース
 
UI/UX
 4.2からDaydrem
  ドックアプリの汎用的なもの
 視覚障害者に対してどのように配慮すべきか

その他
 Google TV
  韓国では使われている、ビッグマーケット

Performance

1秒遅くなると
 PV9.4%へる
 直帰ユーザ8.3%増える
 コンバージョン3.5%減る
 とか

0−100ms 速い
100−300msのろま
300−1000ms
1s+メンタルコンテキストスイッチ

モバイルネットワーク
HSPA(3G)
 全部おわるまでに600ms

LTEでは240ms−500ms
 HTTPSだと +200ms

リダイレクトは絶対止めましょう
 3Gだと600ms−3500msかかるので

バッテリー
 通信の次に電池を消費する

LTEモジュールの状態遷移
 
通信モジュールが待っている時間が無駄
データ量に依存せずに必ず発生する
ビーコンはかなり危険(Pandraの例
測定ツールもある

BestPractice

データをプリフェッチ(大量に)
通信をOFFにする
ポーリングを避ける、プッシュする
データは一気に取ってくる、通信回数を減らす

Vollayネット接続ライブラリ

 Easy Fast Network
 JSON, image, text memory disk cache、デバッグ、トレース
 
 順番が変えられない、キャッシュされない
 次互換性、Apacheのライブらい(HTTCぃねt)とかの問題
 これらを解決

グラフィックの最適化
 
 フレームワークが頑張ってる
 無駄な描画をしない

 背景色はThemeで定義
 9Patchでかぶさる部分を透明にする
 
他にも色々なチェックツール


クラウド関連

PlayGame Services & GCM

AppleでいうところのGame Center
初日はゲームに関するセッションが多かった
売りげベースでゲームが多かった

Cloud Save(端末を変えても続きからプレイできるとか)
Achievements(実績)
トロフィー的な
Leaderboard(ランキング)
 サークル内の限定的なものとか
Multiplay

Androidだけでなく、WebやiOSでも利用可能
iOS用ライブラリや解説もある

Google+のIDでサインイン
iOS版ではライブラリのアップデート毎にリリースする感じになる
Android版ではPlaystoreでやってくれる?

Cloud Save
 細かいことはできない

Multiplay
 Google Serviceを介して
 つながったらP2P
 注意
  小さいデータ。JSONとかよりもPBとかを使う
  メッセージの暗号化

GCM XMPP
 自サーバとGCMでつないだ状態になるので速い
 メッセージIDなどを埋め込まないとどれがどれだかわからなくなる
 XMPPの場合はマルチキャストメッセージが使えないので、その場合はHTTPS
 アプリ側から、GCMへメッセージを送信出来る
 Play Serviceに統合された(下位互換性を保持)

質疑応答

Q. カードレイアウトについて
 今こういうUIがいいよっていうのは、ありますか?
A. あんまりセッション見てないのでわかりませんでした
 ストラクチャーアンドロイドアプリデザインのところとか
 
Q. Android OSやAndroid端末
A. Gallaxyがでた。Nexusと同じ位置づけ

Q. Androidの新しいバージョンの発表がなかった。
 今後のAndroidのロードマップやこれを強くしていこうとしているのは、なんだと思う?
A。次に進むために周りを固めている印象。

Q. Cloud Save ゲーム以外でも使える?
A. ゲーム以外でも使えます

Q。Android Studioの本格的に利用できるのはいつころ?
A. 時期は不明。EclipseとStudioどっちつかえばいいの?
 Eclipseのほうが機能がおおいので、人によってはStudioだけではだめかも
 
Q. Valayについて質問。動的な部分のキャッシングできおつけること。キャッシュがたまったらどう制御する?
A. キャッシュクリア出来る。キャッシュサイズも調整できる。

Q. LocationAPI。ヒューズどロケーションプロバイダが追加になったけど、今後は?
A. 今後はひゅーずどの方を使いなさいということ。2.2以降のデバイスであれば、ひゅーずどに以降してくださいということ。


Chrome HTMLとか

WebM Google製のオープンなビデオフォーマット
VP9を開発中
 H.264より画質が良くてサイズが小さい
 もうChromeで使える。(βで)、8/20以降、ステーブル版にくる
 YoutubeですでにVP9ビデオが公開中

Web Components In Action
 UIコンポーネントの基盤をWebに
 カスタム要素をりようできるようになる
 Ploymerフレームワーク・ライブラリ 
  Web Componentsをさらに便利に。
  Web Componentsに対応していないブラウザでもJSで保管して使えるように

Web RTC
 ブラウザかんでP2P
 Chrome限定でスクリーンキャプチャをとれる

webp

モバイルからのアクセスが増えている
画像のサイズが上がってきているので問題になってくる
サイズはJpegより最大30%くらい減るけど
エンコーディング(圧縮)5−10倍遅い
デコード:1−3倍遅い
アメリカでは従量制が多いので、サイズを減らすのがいいのではないかという方向
将来ハードウェアサポートが期待できる

requestAutocomplete()
 決済情報を保管してくれる
 

A more awesome Web, Mobile HTML , Dart

CSS
 emとかの単位。そうたい的な単位が増えたよ
 変数が使えるようになる
  var-fontColor : red;
  color: var(fontColor);
 @supports、CSSがサポートされているときはこっちを、とか
  @mediaはデバイスごとだけど
  @support (disploya: flex) { display: flex }
 postision: sticky
 ぜんたいの中の一部を表示するとか。

Multimedia
 WebRTCでスクリーンキャプチャ
 マイクの入力が取れるようになった
 Speech Api 自分が喋った内容をテキストに落としてくれるとか

Mobile HTML
 Viewport, viewport units, Flexible box module, position:sticky
  上記でスクリーンサイズに対応
 Geolocation , Offine Events, Application Cache、Storage Apis
  ユーザがどこにいるか、ネットワークが繋がっていない時とか
 入力を手伝うための機能を使う
 Navigation timing API
  むずかしかったのでよく分からなかった

 色んなハードウェアがあるけど
  Androidインテントをブラウざから
  Fullscreen、ネイティブアプリっぽいのをつくれる

Dart
 海外では意外と期待している人が多い
 JavascriptDartの比較
  言語デザイン
  大きなアプリケーションの場合
  All in one
  エラーを無視するか、警告を出すか

 DOM操作がやりやすい
 デフォルトのライブラリがjQueryっぽい
 新しいWebの機能を取り込む

 メソッド化スケーティング
 Dartせいのプレゼンツール
 メソッド名を動詞にこだわっていない


Performance, Devtools

Workspace
 Devtoolsをエディタにしてしまおう
 Elementsパネルで修正したスタイルやソースパネルで編集した内容が、そのままローカルに保存される。
SASSサポート
 Source mapが必要
 
Portfowarding
 リモートデバッギング、USBでつながっている端末とローカルのアプリを繋げることができる

Frame chart
 Javascriptのプロファイル
 どのメソッドにどれだけ時間がかかったかタイムラインで見られる

メモリ(アロケーションラッキング
 メモリの割当てをタイムラインで見られる

Show composited layer
 GPUをりようしてパフォーマンスアップ。
 アニメーションに3D表現を使うと速くなるというテクニック、
 それを視覚的にすることができる
 
上記の多くは、Chrome Canaryでないと試せない


QA

Q. Webpをモバイルで使うときどうするか
A. JavaとObjCで使う例がある


Q. Dartのサーバーサイドのセッション
A. サーバの話は出て来なかった。

Q. WebkitがブランチBlink
A.

Q. Webpについて圧縮
A. アリゴリズムについてのセッションはなかった。

Q. AndroidChromeで加速度センサーの対応状況
A. Chromeブラウザになって使えなくなった??標準ブラウザのときは使えたっぽい。


Google Cloud Platform

Compute Engine

EC2みたいな感じ
今までは、サポートに入っているひとしか使えなかったけど、一般公開された

1分単位で課金(ここはComputeEngineが有利かな)
EC2とかは1時間単位で課金される

Debian VMを使う
Small, microインスタンスを追加。
 CPUをあまりつかってない用途のものにいい
高級パケットルーティング
 1つのプロジェクトの中に複数のネットワーク、サブネッワークをつくったり、BPM
Max10TBの永続ストレージ。VMにつなげることができる

Cloud Datastore

AppEngineのDatastoreが外からも使えるようになる
JSONかPBで使えるようになった
AppEngineのDatastoreと同じ
ダウンタイムはほぼなし
Compute Engineでアプリを使って、Datastoreはこっちを使うとか
25%値下げ

AppEngine PHP

Limited preview(申し込んで許可されたひとだけが使える)
PHP5.4
Wordpressが動く
DatasotreAPIがまだ使えない
 Cloud SQLは使える
 Cloud DatastoreのJSON APIを使える

mbstringが入っていない(対応しているExtensionが少ない印象)
ファイルシステムに書き込めない
 Cloud Storageを代わりに使う
一部関数が使えない(exec, tmpfile)
C拡張は使えない

1つのアプリで複数モジュールを管理
 スケール、デプロイ、バージョン、パフォーマンスがモジュールごとに別々に管理できる

Mobile Backend Starter
 Androidのアプリからサーバがわのコードを書かずにDatasotreを使える
 コードがGithubに公開されているのでそれをもってきて使う

Big Query

AnalyticsとAdsenceをデータソースとして使えるようになる
 (Analyticsはプレミアムアカウントだけ)
Google Apps Scriptから使えるので、スプレッドシートに大量のデータをいれて
アクセス解析するとか

Google Cloud Storage

バージョン管理ができるようになった
可用性の落ちるストレージが安く提供されるようになる
 もとのデータソースをフィルタした結果を置いておくとか
ファイルを書き換えた時とかに通知するとか

gsutilコマンドを使ってcpコマンドみたいなことができる
S3のデータも同じように扱える
大きなファイルをアップロードしたいときとかに、
分割したファイルをマルチスレッドでアップロードできる
 (Cloud compsiteとかと関連)

Drive API

去年I/Oからの差分
Widgets(UI系の機能)
 Google Picker、Embeddable Sharing Dialogを出せる
ダウンロード先にGoogle Driveを選択できる

Apps Admin SDK

Directory API
 Provisionning API系を置き換えるもの
 ユーザの情報をかき集めるのが大変だった
Reports API

既存のAPIが色々Deprecatedされたので注意

Google Apps Script

Form + GAS
FormをGASで作れるようになった
Formのデザインを拡張できるようになった
Docsにもスクリプトを置けるようになった
 ヘッダ、フッタ、リストアイテムとかをいじれるようになった
 他人のカーソル位置とかも取れるようになる(予定
 ダイアログとかも出せるようになった
 サイドバー機能。ドキュメント書きながらなんかするなど。

トリガーの充実

GAS+Drive SDK
 GASだけでDriveの中身をいじれるようになった
 ディレクトリ以下のファイルの一覧を取得とか
 フォルダやファイルの検索が簡単
 
QA

Q. Google StorageにあるファイルをWebに公開できる?
A. できる。権限設定も細かくできる。

Q. DriveとStorageの住み分け
A. TB単位のデータをいれるのはStorageとか

Q. アジアにデータセンターはできる?
A. とくに発表はなかった


Q. Rubyを使えるようにな情報は?
A. 情報はきいてない。

Youtube

Youtubeを動画フラットフォームとして使って貰いたい
ライブ配信とかあった
デベロッパーからも使って貰いたい、
YoutubeLiveが個人でも使えるようになった
 パートナーシップをむず部
 チャンネル1000人以上いること
 著作権違反がないこと
Live API
 アプリからイベントを作成したりできるようになる

APIがv3になった
 結構大きな変更
TopicksAPI
 Freebaseと連携
 キーワードから動画を検索とかが簡単になった

Androiアプリの中からYoutubeを動かせるようになった
 いままでは、WebViewとかインテントで飛ばすとか
VP9を今年中に対応


Google+

Sign in
「G+ Sign in」ボタン
設置の仕方(Android , iOS、PC)

何が嬉しい?
 Google にログインするので、、
 アプリをパーソナライズ
 Googleのサービスの内外で友人が登場する
  Gogle Search ,Restful APIによる外部サイト連携

Goolgeの書くサービスのいち口をSign inにする?

Go

v1.1がでた
速くなった
 コンパイラ、リンカ、GC

GEO

Maps関連
パーソナライズ強化
素早く表示・WebGL実装
地図そのものがインターフェース
あにめーしょんとかスムーズ

Google Maps API

実装系の話

デザインが大きく変わった、機能はあんまりかわってない
8/14から新デザイン v=3.ex
11/14 v=3

Google maps Tracks API
 車両などの追跡用API
 位置の記録とGeoFenceが主な機能
  どっかのエリアに入ったら通知したりできる
 通常のユーザ(無償版)も利用できるように

QA

Q. Anroidでアカウントマネージャを使ってましたが、今後はSign inボタンになる?
A. Android向けの話だと、Sign inボタン使わなくても、
 Google Gamesの中に認証用のAPIが入っているので、それを使えうとSign inボタンはつかわなくてもできると思う


Q. Map v3の件。カスタムのピンを作っているが、デザインはどうなる?
A. フロントとシャドウとプロパティがあるけど、シャドウは今後無視されるようになる。

Q. G+、ポストができない?Developerサイトを見るとReadonlyだったけど?(APIを使ってポストする?
A. Sign inの後に認可画面がでるので、そこでちゃんと権限をしていしていたらできる

Q. Go言語。v1.1。ロックをかけるのはプログラマの責任?言語がやってくれるようになった?
A. 管理は自分でやる。コンパイル時に検出してくれる。べーすこんでぃしょん?

Chrome Packaged Apps

Chrome app v2
 ブラウザをプラットフォームとしてNativeアプリっぽいものを動かす

見た目が違う。ブラウザとは別のウィンドウで立ち上がる
定例屋のAPIをサポート、
 Socket API、USB、Blouetoothをさわれたり

YoutubeからDLNAをつかってテレビにつなげる?
今回からウェブストアで公開できるようになった

ネイティブアプリみたいなものがChromeさえインストールされてたら動く。

モバイルはどうするか
Cordova + plug-in
 (Fongapのオープンソース版?)

M29ターゲットでConsumer deploy可能に
for Android, iPhone