Google I/O 2015 keynote

https://www.youtube.com/watch?v=7V-fIGMDsmE
関連する他セッションや記事があれば追記しています。

## まとめ記事
* [GIZMODO - IoT用OS「Brillo」から16台のGoPro芸まで発表「Google I/O 2015」](http://www.gizmodo.jp/2015/05/google_io_2015.html)
* [GIGAZINE - 「Android M」の詳細やIoT向けの新OSなどが次々と登場した「Google I/O 2015」まとめ](http://gigazine.net/news/20150529-google-io-2015/)
* [すまほん!! - Google I/O 2015 の最新情報](http://smhn.info/tag/google-io-2015)
* [ITmedia - Google I/O 2015の基調講演まとめ　「Android Pay」やGoProのVRカメラなど盛りだくさん](http://www.itmedia.co.jp/news/articles/1505/29/news059.html)

## Chromecast
* iOSをサポート
* https://itunes.apple.com/jp/app/chromecast/id680819774

## [Android M Preview](http://developer.android.com/preview/index.html)
* [Program Overview](http://developer.android.com/preview/overview.html)より抜粋。
 * final SDKリリースは2015 Q3に行われる。
 * Nexus 5/6/9/Playerがシステムイメージ配布対象。
 * ```android:targetSdkVersion```は“MNC”
* 記事
 * [TechBooster - Google I/O 2015 Android M Developer Previewが登場](http://android-developers.blogspot.jp/2015/05/android-m-developer-preview-tools.html)
 * [Android Developers Blog - Android M Developer Preview & Tools](http://android-developers.blogspot.jp/2015/05/android-m-developer-preview-tools.html)
 * [TechCrunch - Google I/O：Android M（5.x）のプレビュー公開―指紋スキャナー、Google Pay、アクセス許可、バッテリー改善など新機能多数](http://jp.techcrunch.com/2015/05/29/20150528google-announces-android-m-with-fingerprint-scanner-support-android-pay-improved-permissions-battery-and-performance-tweaks/)

### [App Permissions](http://developer.android.com/preview/features/runtime-permissions.html)
* アプリの権限を細かくON/OFFできるように(おそらくAppOpsの名称変更)
* オンデマンド要求で、必要時のみPermission発行可能。許可済みPermissionもあとでOFFにできる。
* 一部のPermissionが適用対象となる。
 * カレンダー/カメラ/連絡先/位置情報/マイク/電話/センサー/SMS
* 拒否時の動作はアプリクラッシュ要因にならないよう、空データ取得などの動作で置き換わる。

### Web Experience([Chrome Custom Tabs](https://developer.chrome.com/multidevice/android/customtabs))
* アプリからChromeを起動したとき、UIがカスタマイズされた状態のChromeタブとして起動できる、WebViewとは異なり、認証やオートフィル機能が使える。
* PinterstからChromeを起動すると、ChromeにPinタブが表示されて画像クリッピングが楽に行える。

### [App Links](http://developer.android.com/preview/features/app-linking.html)
* HTTPスキームのURLで、任意アプリをピンポイント起動しやすくなった。
* たとえば、URLがTwitterであればTwitterクライアントを起動できるようになった。これまでのIntentの共有だと連携先アプリの問い合わせが都度発生していた。
* Androidアプリ側での変更点としては、AndroidManifest内でintent-filterの属性として```android:autoVerify = "true"```を指定しておくだけ。アプリリンクの検証を行ったあと起動できる。

### Mobile Payments([Android Pay](http://officialandroid.blogspot.jp/2015/05/pay-your-way-with-android.html))
* クレジットカードのかわりに使える決済機能。
* Android Payとクレジットカードは併用できる。Android Payを使用する場合、クレジットカードの番号を店に通知することなく決済が可能。

### Fingerprint Support
* 指紋認証を標準サポート。
 * Android Payの決済に利用できる。
 * スクリーンロック解除に利用できる。
 * 指紋認証API(```FingerprintManager```)でアプリに組み込むことが可能。
     * ```KeyguardManager#createConfirmDeviceCredentialIntent()```
     * サンプルアプリが公開されている。
         * [FingerprintDialog](https://github.com/googlesamples/android-FingerprintDialog)
         * [ConfirmCredential](https://github.com/googlesamples/android-ConfirmCredential)
* 記事
 * [Engadget - Android Mは(うわさ通り)OS標準での指紋認証機能に対応。開発者向けにAPIも用意](http://japanese.engadget.com/2015/05/28/android-m-os-api/)

### Power and Charging
* Power improvements
 * バッテリー持ちが2倍に。
 * Doze
     * 充電せずに放置されている端末の起動タイミングを制御する。
 * App standby
     * 使用されていないアプリのネットワークアクセス頻度を減らす。
* USB Type Cに対応。
* 高速バッテリーチャージを実現。

### M Preview APIs
* API変更は数百程度
* 以下、"What’s New in Android"より補足
    * https://medium.com/google-developers
    * https://code.google.com/p/android-developer-preview/
    * https://www.youtube.com/user/GoogleDevelopers

#### Android Backup
* アプリデータのバックアップを標準サポート

#### AssistantSupport
* アプリ表示中、Google Nowなどのアシスタント(ホームボタン長押し)にアプリ内の情報を引き渡す
 * ```Activity.onProvideAssistData()```
 * ```Application.OnProvideAssistDataListener```

#### Data Binding
* レイアウトリソース内にモデルクラス/フィールドを書いておくと、Javaコード内でViewにデータをセットすることなく反映可能。

#### UI Features
* Android Design Support Library
 * Coodinator Layout
 * Snackbar
 * TabLayout
 * NavigationView
 * TextInputLayout
 * FAB
* Other UI Changes
 * RecyclerView ItemTouchHelper
     * Swipe-to-dismiss
     * Drag and drop
 * WebView
     * ```PostMessage```
     * ```WebViewClient```
     * ```WebSettings.setOffscreenPreRaster()```

#### Notifications
* Icons in Notifications
 * ```Icon.createWithBitmap()``` or ```Icon.createWithResource()```でビットマップアイコンを作成し、```Notifications.Builder#setSmallIcon()```で設定

#### Texts
* Text Selection
 * Easier selection
 * Floating pallette with action items
     * Default for TextView
     * Other views
* Text Processing
 * ```<action android:name="android.intent.action.PROCESS_TEXT">```
* Higher Quality Text Formatting
 * ```TextView.setBreakStrategy(int);```
 * ```TextView.setHypernationFreaquency(int);```
 * ```TextView.setIndents(int[] left, int[] right);```

#### Direct Share
* ```ChooserTargetService```で特定のアプリ、特定の連絡先ユーザーに対してのみデータ共有

#### Stylus Support
* Bluetooth stylus supportするにはBluetoothボタンを押したことを通知したい
* New stylus API in M
 * Button Support
     * ```ACTION_BUTTON_PRESS```
     * ```ACTION_BUTTON_RELEASE```
     * ```ACTION_STYLUS_PRIMARY```
     * ```ACTION_STYLUS_SECNDARY```
 * Gesture support
    * ```ScaleGestureDetector.setStylusScaleEnabled()```
    * ```OnGestureListener.onStylusButtonPress```

#### RenderScript Compute
* BLAS intrinsics
* Allocation-less launches
* ScriptGroup

#### Camera
* New Touch mode
 * ```CameraManager.setTouchMode(String cameraId, boolean enabled);```
 * ```CameraManager.TouchCallback#onTouchModeUnavailable(String cameraId)```
 * ```CameraManager.TouchCallback#onTouchModeChanged(String cameraId, boolean enabled)```

#### Alpha Optimization
* 透明なビューを```setLayerType()```で指定

#### MIDI
* android.media.midi
 * ```MidiDeviceManager```
     * MidiInputPort/MidiOutputPort
 * ```MidiDeviceService```

#### ART
* Runtime Stats
 * ```Debug.getRuntimeStats(String)```

## Wearable
### Android Wear
* Watch face 1500+
* アプリ数4000+
* Always on apps
 * スクリーン表示用アプリ
 * スリープしても完全に画面オフにならず、省電力モードで画面表示される。
 * スリープ復帰で元のアプリ画面をフォアグラウンド表示する。
* 手首のジェスチャー操作でページ送り
* 絵文字対応

## IoT
* [Engadget - Google、IoTプラットフォームProject Brillo発表。Android派生の超軽量OS](http://japanese.engadget.com/2015/05/28/google-iot-project-brillo-android-os/)

### [Project Brillo](https://developers.google.com/brillo/)
* Androidよりも小型のデバイス向け
 * 最低限のKernel/HALで構成されるOS
* 2015 Q3リリース予定
* [ITmedia - Google、I/OでIoT向けAndroid（コードネーム：Brillo）を発表か──The Information報道](http://www.itmedia.co.jp/news/articles/1505/22/news059.html)

### Weave
* Android/Brilio/クラウドを連携するためのProtocol
* 2015 Q4リリース予定

## 検索技術
### Deep Neural Network
* 音声認識の誤認率は2年で23%(2013)->8%(2015)に減少

### Google Now
* 道路の混雑状況に応じて、帰宅時間を案内

### Now on Tap
* Google Now強化、Android Mから提供される。
 * 音楽プレイヤーで聴いている曲のアーティスト名(本名)をGoogle Nowで聞ける。
 * ハングアウトなど、アプリ内に含まれるテキストを読み込んでGoogle Nowに質問できる。
* 記事
 * [GIZMODO - Google、Android Mの新機能「Now on Tap」発表。文脈に沿う情報をワンタップで表示](http://japanese.engadget.com/2015/05/29/google-android-m-now-on-tap/)
 * [GIGAZINE - ボタンを長押しするだけでスマホが必要な情報を自動で検索してくれる「Now on tap」が動作する様子はこんな感じ](http://gigazine.net/news/20150529-google-now-on-tap/)
 * [ITmedia - Google Nowの気が利き過ぎる新機能「Now on tap」　機械学習でニーズを先取り](http://www.itmedia.co.jp/news/articles/1505/29/news080.html)

## 写真
### [Google Photos](https://www.google.com/photos/about/)
* ほしい写真へのアクセス性を向上
 * 保存した写真のプレビュー単位を、月単位/年単位で切り替え
 * 自動カテゴリ、顔認識で所有者の娘の写真を抽出して、0歳の写真までさかのぼるデモ
 * 「snow storm」で雪の写真を検索
* スペック
 * 写真・動画のストレージは無料、容量無制限
 * 写真: 16Mピクセル
 * 動画: 1080p
* 発表当日(2015/5/29)から使える
 * Web/Android/iOS
* 記事
 * [日本経済新聞 - グーグル、無料画像管理サービス「Google Photos」](http://www.nikkei.com/article/DGXMZO87436350Z20C15A5000000/)
 * [Engadget - 「Google Photos」発表。1600万画素までの写真を無制限に保存。Android / iOS / WEBで本日提供開始](http://japanese.engadget.com/2015/05/28/google-photos-1600-web/)
 * [TechCruch - Google Photosの「無料無限ストレージ」は、Appleの高価なiCloudを打ちのめすかもしれない](http://jp.techcrunch.com/2015/05/29/20150528free-dollars-and-fifty-free-cents/)
 * [ガジェット速報 - 最新フォトストレージサービス「Google Photos」発表…条件付きで容量無制限に](http://ggsoku.com/2015/05/google-photos/)

## 途上国向けサポート
### [Android One](http://www.android.com/one/)
* Smartphone Sales(2016): 1.2 billion
* インド/東南アジア/トルコで開始

### Chromebook
* Students: 10 million

### 低速通信対応
* 低速通信、PCスペックを検知して、通信データ削減によりChrome検索速度を向上
 * ページ読み込み: 4x
 * データ削減: 80% bytes削減
 * メモリ使用量: 80MB

### オフライン利用対応
* Chrome for AndroidのOffline対応
* YoutubeのOffline対応
* Google MapのOffline対応
 * オフライン状態(機内モード環境)でもマップ検索、音声案内できるようになった

## Developer Support
### [Android Studio](https://developer.android.com/sdk/index.html)
* Android Studio 1.3 Previewリリース
 * Gradleビルド速度向上(Android Studio 1.3 + Gradle 2.4)
     * Build Variantsが増えてもビルド時間が大きく増加しない
 * NDK(C/C++)サポート
     * CLionをベースにしている

### [Polymer](https://www.polymer-project.org/)
* Polymer 1.0リリース
 * iOS向けにもcocoapodsライブラリ公開

### [Cloud Test Lab](https://developers.google.com/cloud-test-lab/)
* Firebase買収
* 世界で売れているTop20の端末を用いて、クラウドテストが行える

### App Indexing
* iOSにも対応
 * Google検索結果にインストールアプリのディープリンクを作成
 * Google Webmaster Central Blog
     * (英語) [Surfacing content from iOS apps in Google Search](http://googlewebmastercentral.blogspot.jp/2015/05/surfacing-content-from-ios-apps-in.html)
     * (日本語) [iOS アプリ内のコンテンツも Google 検索に表示されるようになりました](http://googlewebmastercentral-ja.blogspot.jp/2015/05/surfacing-content-from-ios-apps-in.html)

### Google Cloud Messaging
* Android/iOS/Chromeに対応
* GCM Network Manager(```JobScheduler```のようなAPI)がGoogle Play Servicesに追加される
* [Google Developers - 
Implementing GCM Client on iOS](https://developers.google.com/cloud-messaging/ios/client)

### App Install Ads
* AdMobとGoogle Analyticsを統合
* "App Install Ads"(アプリ インストール広告)についてはAdWordsにも記載されている。こちらも統合対象か?
 * https://support.google.com/adwords/answer/6032059?hl=ja
 * http://venturebeat.com/2015/05/28/google-gives-developers-new-adwords-analytics-and-admob-tools-to-monetize-their-apps-with-ads/

### Developer Console
* コンバージョン情報を取得
* A/Bテストに対応

### Google Play Developer Pages
* 自社、自分のアプリを紹介するページ
* [Google Play デベロッパー ヘルプ - デベロッパー ページの作成または更新](https://support.google.com/googleplay/android-developer/answer/6226441)

### Search in Google Play
* Google PlayのInstall数: 50 billion/年
* Active user: 1 billion users
* Google Play Personalized Store
 * 家族向けGoogle Play検索エンジン
 * Browse by Age: 子供向けにGoogle Playにカテゴリフィルタをかけられる
 * Popular Charactors: キャラクターで検索
* 記事
 * [GIGAZINE - Google Playに検索機能や年齢別フィルタリングが追加、コンバージョンやA/Bテストも利用できる開発者向けページも新設される](http://gigazine.net/news/20150529-google-play-google-io2015/)

## Education
### [Android Nanodegree](https://www.udacity.com/course/android-developer-nanodegree--nd801)
* Android教育プログラム
 * 期間: 9-12ヶ月
 * 授業料: $200
* http://blog.udacity.com/2015/05/introducing-android-developer-nanodegree.html

### [Expeditions](https://www.google.com/edu/expeditions/)
* Cardboardを授業に使う
 * VRで仮想遠足、教師のタブレット操作結果を生徒のCardboardに反映
 * User: 1 million users

## VR
### [Google Cardboard](https://www.google.com/get/cardboard/)
* 6インチスマホまで対応
* Cardboard SDK
 * Build Android and iOS
* [Cardboard SDK for Unity v0.5](https://developers.google.com/cardboard/unity/release-notes)がリリースされた

### [JUMP](https://www.google.com/get/cardboard/jump/)
* GoPro16台を円状にならべて360度カメラ
* 3Dアラインメント、GoProカメラ間のつなぎ目は補正表示
* 動画アセンブラを開発者に限定公開

## その他
* Google Car
 * [@IT - あなたの知らない自動運転技術の歴史とGoogle Carの自動運転に使用するセンサーの基礎知識](http://www.atmarkit.co.jp/ait/articles/1505/29/news024.html)
* [Project LOON](https://www.google.com/loon/)
 * 100+ days in the air
 * 10M bps connectivity
 * 500m accuracy
 * 4x coverage area
 * local partners