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.
- Fitst is how we are evolving out computing platform.
- 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”.
- Now on Tap
- APIの公開はなし
Photos
- Picture this: A fresh approach to Photos
- ハイクオリティ 静止画18M, 動画1080p 容量無制限で無料.
- Google Photos リリース
- 写真の閲覧・検索に特化したUI/UX, organizationの強化
- ピンチイン・ピンチアウトによるタイムライン粒度の変更.
- 写真のコンテキストを理解したorganization
- 写真の閲覧・検索に特化したUI/UX, organizationの強化
- Official
- https://photos.google.com/
- 本日2015.05.29より配信.
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
- FingerprintManager.authenticate()
- 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>)
- AndroidManifest.xml
- 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()
- RecyclerView ItemTouchHelper
- 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)が表示される.
- Floating palette with Action items. set
- 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
- Design Tools
- Faster Emulator
- NDK Support
- 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倍の高速化
- 10proj x 25variants
- Testing in the Android Developer Workflow
- Android Studio. setup projects with tests & infrastructure
- Android Testing Library. UI Test & Unit Test
- Cloud Test Lab. Testing on matrix of devices (virtual & real)
- Google Play Testing. Google Play App Testing & Validation.
- Debugger
- Debugging modeでVariableのIntegerに対して View as > Android Type Integerで
- @IntDefの定義名を解決できる
- ColorコードであればARGB形式に変換し色をプレビューする
- resource idであればResource名を解決できる
- Debugging modeでVariableのIntegerに対して View as > Android Type Integerで
- 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
- Elevation and shadows has been renamed from “Objects in 3D space,”
- 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まで可能.
- Chrome
GcmPubSub.getInstance(context).subscribe(regToken, "/topic/[youTopic]", null);
- API
- google developer consoleからGCMを簡易送信できるようになった
- GCMがreceiveしたMessage IDや送信時刻, 端末の状態を一覧できる