2015/05/29

Google I/O 2015 概要まとめ

Keynote

参考リンク

Gizmode http://www.gizmodo.jp/2015/05/google_io_2015.html
Google I/O 2015 official https://events.google.com/io2015/

Devivce

  • “メールの検索が遅すぎる”そこからGMailプロダクトが始まった. GMap, YouTubeも同じく.
  • さらに2つのプロダクトを作成した.
    • Chrome. ブラウザが遅くセーフティではなかったからだ.
    • Android. フラグメンテーション化され, ユーザ体験も開発も困難であったからだ.
  • これらのプロダクトは世界中に供給されている.
    • GoogleSearch 1B+/ YouTube 1B+/ GMap 1B+/ Gmail 0.9B/ Android 1B+/ Chrome 1B+
  • I/O 2015では主に2つのことを話す.
    • Fitst is how we are evolving out computing platform.
      NOT jut for mobile, but beyond mobile for a multiscreen world.
    • Second is how google core to out mission of organizing the world’s information
      is really evolving the mobile experience for uses.
  • 10億台以上のデバイスを出荷してきたが, 世界のデバイス状況をビジュアライゼーションした.
  • https://github.com/YukiMatsumura/Documents/blob/master/Image/GoogleIO2015_device_ships.png
  • dot1つ1つがActivityなデバイスを表現している.
    • Blue: high end mode. galaxy S6 etc…
    • Orange: 新興マーケットでエントリーレベルのデバイス.
  • Android Device
    • 500 carrier. 4K models.
    • Android wear. 7 models
    • Android auto, 35 brands
    • Android tv, sony, sharp ship. popular in europe.
    • Chromecast 17M sold, cast button touches 1.5B, 20K cast apps.

Chromecast

  • iOS support.

Android M Preview

  • 主に不具合の改修と品質改善
  • App Permission(old AppOpt).
    • application install時に許可を求めるスタンスを変える.
    • Permissionが必要な機能を使用するタイミングで, Permissionの許可をユーザに求める(Runtime Permissions)
    • 納得できないpermissionは拒否できる.
    • Permissionを使用しているアプリの逆引き機能.
  • Chrome custom Tabs
    • WebのBig contentを使うにはWebView or Browser連携が便利である.
    • Browserはloginやsession管理を簡単にするが自アプリの制御下におけない
    • Chrome custom Tabsがこのジレンマを解消する
      • Chromeがコンテンツをfetch
      • Chromeの戻るボタンでアプリに戻ることができる.
      • 保存済みパスワード情報情報の利用?
  • App link

    • URIから直接Application内部にシームレスにジャンプする
    • 実装
      Application: Manifestに intent-filter android:autoVerify=”true”, and data shceme and host.
      Web Servers: namespace/package_name/sha256_fingerprint のJSONファイルを配置
      (Googleクローラによるverifyを待つ必要もあったはず)
  • Android Pay

    • secure, sipmle, choice.
    • 既存のクレジットカードを使用出来る. クレカ番号は店に知らされません.
    • Android Payを使用するかBanking appをつかうかはユーザ選択可能.
  • Fingerprint
    • Mでは指紋認証をネイティブサポート
    • デバイスのアンロック, Play Store purchaseに使われる.
    • クレジットカードとFingerprintを端末上で登録しておく.
    • Fingerprintでpurchaseのauthrizeが可能.
    • Fingerprint APIはアプリに公開されている
  • Doze
    • パワーマネージメントのための新機能は”Doze”と呼ばれる.
    • タブレットなどナイトテーブル上に放置(Dozing)されている場合, データの同期(通信)を抑止(deep sleep state)する.
    • バッテリー寿命は約2倍に増加
  • USB type-C support.
    • 急速充電.
    • Mobile をバッテリーチャージャ(電源供給側)とすることも出来る.
    • USBモード選択としてCharging or Power supply(他) のモード選択ができる
  • M APIs
    • 数百のAPI変更がある
    • Easy word selection and “Floating clipboard toolbar”.
    • アプリに加えて”People”へのダイレクト共有(Single click.)
  • M Preview Release
    • Nexus5, 6, 9 and player.

Wear

  • 1500を超えるwatch face.
  • always on
    • 常時点灯かつ省電力モード
    • always on modeでは数秒経つとスクリーンオフではなくより電力消費量を抑えられるBlack&White modeに移行する
      (watch faceでは秒針が消えているように見える.)
    • Android Wear: Always-On Apps https://youtu.be/7m6Z9d0fDaM
  • wrist gesture
    • 手首をひねることでリストスクロールが可能に.
  • emoji
    • フリーハンドで絵文字を描き, 絵文字候補を選択・送信可能に.
  • wear application
    • 4000+ のandroid wear向けアプリケーションがアップされている

IoT

  • (TODO: IoT話題の導入部.未記載)
  • Brillo

    • IoT OS
    • Derived Android. Minimal footprint.
    • arch: Hardware/Kernel/HAL/Connectivity(Wifi,BLE,etc.) and Device Administration(Analytics, update, crash reports, etc.).
    • Connectivity 機能をAndroidが提供する
    • Brillo developer preview release Q3 2015.
  • Weave

    • WeaveはIoTデバイス間を接続し対話するためのコミュニケーションレイヤー
    • 互いに理解し共有し合うための共通言語
    • IoTデバイス(Brillo device)同士で対話するためだけのものではない.
    • CloudやPhoneも対話の対象となる
    • weaveは標準のスキーマを持つ.
    • JSON likeなメッセージフォーマット
    • Brillo deviceは”写真を取る”, “ドアをアンロックする”といった表現をこれで表現・解釈する.
    • Support Cross Platform
    • IoTをMobileなどのデバイスで検出, セットアップしてすぐに対話できる.
    • Weave full stack release Q4 2015

Mission, Deep Neural Networks.

  • Google’s core mission
    • Organize the world’s information and make it universally accessible and useful.
  • ユーザが求めているものをより正確に理解する.
  • 機械学習により膨大なデータから質問を理解し画像データを解析し答えを導き出す.
  • このテクノロジは”Deep Neural Network”と呼ばれる
  • Deep neural networkはヒエラルキの形態をとる
  • 第一階層ではラインやエッジ、影、形を理解する
  • 第二階層では耳, 足, 手といったパーツを理解する
  • 最終階層では全体を理解する
  • 2013年の誤認識率は23%だが, 2015年は8%.

Google Now

  • Google Nowのアシストを実現する3つ
    • Understand context, Bring you answers proactively, Help you take action.
  • Context
    • 何をアシストすべきか, 状況を理解する
    • 会話の中の”それ”が何なのかを理解する
  • Answers
    • 積極的にContextに基く答えを提供する.
    • 付近のガススタンドをおすすめしたり興味のあるスポーツ試合の状況を提案する.
    • これはGoogleが世界中にある約1Bものエンティティを理解できているため実現できる.
  • Action
    • Now on Tap
      • M でリリースされる新機能
      • Contextを理解する.
      • 映画に関するメールを見ながらNowを起動するとContextを理解して映画に関する情報を回答
      • 晩御飯に誘われたなら美味しいディナーのお店をおすすめする.
      • 音楽を聞きながら「彼の本名は?」でアーティストの本名を回答
      • ホームを長タップで起動するか, “Ok Google”.
  • APIの公開はなし

Photos

Android M Developer Preview & Tools

http://android-developers.blogspot.jp/2015/05/android-m-developer-preview-tools.html

  • AndroidStudio v1.3 Preview
    • Support C/C++ Debug.
    • Support NDK
    • build speed up
    • Data binding support
    • Integrated testing support
    • Vector darawables support
    • New Annotation support
      • @WorkerThread: これでアノテートされたメソッド上でUI操作をするとWarning.
      • @Size(max = n): 上限値を超えを検知した場合にWarning
      • @Size(n): サイズが2でないことを検知した場合にWarning
      • @IntRange (from = m, to=n): m〜nのレンジに収まっていないことを検知した場合にWarning. alpha値の指定などで便利.
      • @FloatRange: @IntRangeと同様.
      • @CheckResult: 呼び出し元が戻り値の確認をしていない場合にWarning
      • @CallSuper: Super methodの呼び出しをしていない場合にWarning
      • @ColorInt: argsコードでない場合にWarning
      • @RequiresPermission: methodの実行にpermissionが必要で, それを満たしていない場合にWarning
      • QuickFixでpermissionコードをAndroidManifestに追加するか
        AndroidMがtargetであればRuntime PermissionとしてPermission Checkコードを生成できる.
  • Plymer 1.0 release.
  • Cloud Test Lab
    • アプリ自動テストのためのクラウド型テストプラットフォーム.
    • screen videoとログでレポートする
    • Firebase買収
    • Cloud Messaging
    • 70B messeges sent daily, 600K+ apps.
    • Support Android, iOS and Chrome.
    • Google Play
    • Developers pages support.

What’s New in Android

  • M Previews schedule. Prev1.MAY, Prev2.JUNE, Prev3.JULY, Final.Q3
  • App Permission
    • application install時にパーミッションを求める画面はユーザインストールの第一の障壁となる
    • Runtime permissions in M
      • application install時にパーミッションを求める必要がなくなる.
      • カメラをつかいたいユーザだけ使えばいい. そういうユーザにだけカメラの使用許可をとればいい.
    • Use controls
      • アプリが持っているパーミッション一覧画面
      • 特定のパーミッションを持っているアプリ一覧画面
    • Permission dealされたらどうするのが良いか(practice)
      • App targeting M can: can ask for any permission at any time.
      • Legacy apps will: get all permission at install time, as before
        つまりインストール時の障壁は残る.
      • User can:
      • deny any permissions upon request
      • deny any permissions at any later time - even legacy apps
        古いアプリ(not M target apps)でもpermission denyできる. その場合はダイアログで
        ちゃんと動かないかもよ通知がされる.
      • Test!
  • FingerPrint
    • FingerprintManager.authenticate()
      verify that authrized user is present your app controls all UI.
      Fingerprintのセンサーを使用して認証用UIと認証確認をアプリ側で実装する.
    • KeyguardManager.createConfirmDeviceCredentialIntent()
      Present lock screen to user startActivityForResult(), check for RESULT_OK
      アプリでUI他を実装したくない場合はこちらを使う. システム設定に従ってパターン, PIN,
      サポートされていればFingerprint認証の一連作業をシステムに委譲できる.
    • Sample code
  • Android Backup
    • targetSdk M以上でアプリデータのバックアップが標準ONである.
    • xml resourceでバックアップするスキームを定義できる(include/exclude)
      • AndroidManifest.xml <application android:fullBackupContent="@xml/backupscheme"
      • res/xml/backupscheme.xml <full-backup-content><exclude domain="[database|file]" path="...">(or <include>)
  • GCM Network Manager
    • Like JobScheduler
  • Data Binding
    • データバインド関連のボイラープレートコードを排除する.
    • layout.xmlにモデルの情報を直接していすることでデータバインドを実現する
<layout>
  <data>
    <variable name="item" type="hoge.hoge.StoreItem" />
  </data>
  <FrameLayout ...>
    <ImageView ... android:src="@{storeItem.image}" />
  </FrameLayout>
</layout>
// build.gradle
dependencies {
   classpath 'com.android.databinding:dataBinder:1.0-rc0'
}
apply plugin: 'com.android.databinding'
  • layout.xmlの中でonClickListenerのコールバックメソッド(名前は自由!)を直接指定できる.
  • この機能の良し悪しは意見を募っている状態.
    • Android Design support library
  • Material designの実装をサポートする
    • CoordinatorLayout
    • Snackbar
    • TabLayout
    • NavigationView
    • TextInputLayout
    • Toolbar with Motion
    • FAB
  • その他UI変更点
    • RecyclerView ItemTouchHelper
      • Swipe-to-dismiss
      • Drag & Drop
    • WebView
      • PostMessage
      • WebViewClient
      • WebSettings.setOffscreenPreRaster()
  • Icon in Notifications
    • Notification.Builder.setSmallIcon(Icon)サポート.
    • Icon ic = Icon.createWithBitmap(iconBitmap)
    • setSmallIconにBitmapを受け渡し可能.
    • Icon with Bitmap.
  • Text Selection
    • Floating palette with Action items. set ActionMode.TYPE_FLOATING
    • Floating Toolbar.
    • Text Selectionの上部にフローティング状態のAction(ToolBar)が表示される.
  • Direct Share
    • meta-dataにChooserTargetを構築する自前Serviceを指定.
    • 自前ServiceでChooserTargetを構築する(Peopleの追加など)
<activity ...>
  ...
  </intent-filter>
  <meta-data android:name="android.service.chooser.chooser_target_service"
      android:value=".MyService" />
</activity>
<service android:name=".MyService"
  android:permission="android.permission.BIND_CHOOSER_TARGET_SERVICE">
  <intent-filter>
    <action android:name="android.service.chooser.ChooserTargetService" />
  </intent-filter>
</service>
public class MyService extends ChooserTargetService {
  @Override
  public List<ChooserTarget> onGetChooserTargets(ComponentName name, IntentFilter filter) {
    // ...
  • New Stylus API Support in M
  • External Storage
    • permanent storageの採用
    • pathのハードコードはNG
    • No new APIs!
    • For preview testing.
    • Preview imageで試したい場合は外部USBデバイスを繋いでコマンド発行しテストする
adb root && sleep 2
adb shell setprop persist.fw.force_adoptable 1
adb reboot

What’s New in Android Development Tools

  • Top Requested Developer Features
    1. Design Tools
    2. Faster Emulator
    3. NDK Support
    4. App Testing Support
  • Vector Image
    • SVGファイルからのインポートで.xml drawableの自動生成をサポート
  • Gradle 1.3/2.4 build faster
    • 10proj x 25variants
      • 1.2->1.3 で倍以上の高速化
    • 400 variants
      • 1.2->1.3 で約10倍の高速化
  • Testing in the Android Developer Workflow
    1. Android Studio. setup projects with tests & infrastructure
    2. Android Testing Library. UI Test & Unit Test
    3. Cloud Test Lab. Testing on matrix of devices (virtual & real)
    4. Google Play Testing. Google Play App Testing & Validation.
  • Debugger
    • Debugging modeでVariableのIntegerに対して View as > Android Type Integerで
      • @IntDefの定義名を解決できる
      • ColorコードであればARGB形式に変換し色をプレビューする
      • resource idであればResource名を解決できる
  • Captures ViewでMAT likeなメモリ解析が可能に. ビュジュアルかされたメモリアロケート状況など.
  • Android StudioでGoogle AccountにloginしておくことでGoogle Sign-inやAnalytics, AdMobといったモジュールの導入からテンプレート作成までサポート.
  • SDK ManagerからPlatformなどをダウンロードする機能はAndroidStudioに統合される.
  • Themeファイルの編集でサンプルコンポーネント上でstyle指定の確認が可能に.
  • Material Designのデザインもエディタから数ステップを踏むことで可能に.
  • Release plan.
    • v1.3: Feature Release
    • v1.4 Polish Late-Summer 2015
    • v1.5 Feature Release Fall 2015

Material Now

  • Material Design guildlineを更新.
    • update FAB animation.
    • Adaptive UI includes responsive layout guidance, grids, breakpoints, and patterns
    • Empty states contains guidance for states when regular content can’t be shown
    • Launch screens includes branding and placeholder UI content
    • Navigation Additional significant content updates include:
      • Elevation and shadows has been renamed from “Objects in 3D space,”
        adding new details about elevation changes
      • Authentic motion describes easing terms in more detail
  • Material Design Lib release.
    • FAB: FABをlayout.xmlに追加するのみで実装可能
    • CardListView: Shadow効果付きの実装
    • NavigationDrawer: Menuタグを追加するだけで細かなGridなどのdp値も実装されている
    • Tabs
    • ToolBar: Overscrollによる挙動も簡単に指定できる
  • Backward Compatibility
    • 過去OSへの互換性カバー率も増加.
  • Good design apps : g.co/materialshowcase

Google Cloud Messaging 3.0

  • https://developers.google.com/cloud-messaging
  • 2012から今までに600+Kのアプリがプラットフォームに接続. 1.1 MQPS. ユーザベースでは1.5Bの端末で利用されてきた.
  • リクエストの数にすると25Trillion分にもなる
  • 端末がonlineであればメッセージの到達には約50msのパフォーマンス
  • GCMはWebsite(Chrome?)とiOSに対応.
  • Free
  • GCM のクラスプラットフォーム
    • Chrome
      • Windows, Mac, Linux, AndroidのChromeブラウザ上に対応.
      • Web Push API. JavascriptでRegistration Tokenを取得. あとはAndroidと同じ.
      • SubscribeにはNotificationが表示されユーザがこれを許可する必要がある.
    • iOS
      • APNS Serverに接続. APNS Tokenを取得
      • APNS TokenのGCMスコープ付きパラメータ(?)から得たInstanceIDからGCM Registration Tokenを得る.
      • Your serverにRegistration IDや端末識別情報を登録する.
      • GCMの送信について. Applicationがbackgroundの場合GCMはAPNS Serverを経由してメッセージを送信する.
      • ApplicationがForegroundになれば直接GCMと通信する.
    • Multipul Message
      • Registration IDの数だけYour serverはGCMへメッセージを投げる必要があった
      • Device Group と Notification Keyの概念を作った
      • Device は GCMとYour ServerにRegistする
      • your serverはDeviceグループをcreate/updateするためGCMに通知
      • GCMはDeviceグループへのNotification Keyを返却する. (req/resはjson形式)
      • req: operation/notificationKeyName/registrationIdArray, res, notification_key
      • Groupへのメッセージ送信はnotification_keyを指定するのみ.
    • Topic message
      • Topickを作成しユーザがこれをsubscribe. topickに対してメッセージを投げるとsubscribeしているユーザにのみ通知される
      • your serverは”to”: “/topicks/[yourTopic]” のメッセージをGCMに送ればOK.
      • unsbscribeも同様にone line.
      • topick message は本日 2015.05.29から使用可能
      • 1アプリ1MのSubscriptionまで可能.
GcmPubSub.getInstance(context).subscribe(regToken, "/topic/[youTopic]", null);
  • API
    • google developer consoleからGCMを簡易送信できるようになった
    • GCMがreceiveしたMessage IDや送信時刻, 端末の状態を一覧できる