Google I/O本体に行きたかったのですが、残念ながら行くことができなかったので、それぞれ報告会に出てメモしてみました。
印象に残ったところを太字にしておきますので、流し読みにどうぞ
自分はなんとなくGoogle I/Oの各発表内容は知っていて、詳しくは知らないという状態で、詳細について驚いたところや印象に残ったことが結構あったので、その部分を太字にします。
Fablicで行われた Google I/O 2016情報共有会
Google I/O 基調講演おさらい
Google I/O 2014やGoogle I/O 2015では新しいAndroidバージョンだったが3年ぶりに新バージョン発表がなかった。
Google Assistant
新しい対話型アシスタントロジック
前後の文脈を理解したアシスタント(文脈の理解はSiriなどだとないらしい)
Google Home 音声アシスタント機能 Chromecastのように音楽も再生できる スマートホーム制御機能
Allo メッセージアプリ。返答をサジェストしてくれる。
Duo 通話に出る前に先に相手の顔が見ることができる。
Android N Preview3
コードネームをユーザーから募集している
DayDream
VR体験を提供するプラットフォーム
Nexus6Pでテストできる
Daydreamは基本的に既存の端末に対応されることはない。新しい端末のみ
サードパーティ製のアプリがリリース予定
Android Wear2.0
初のメジャーアップデート
→スタンドアロンアプリの動作が可能
→ スタンドアロンとはData Layer APIを利用せず、直接ネットワークへのアクセスが可能(UrlConnectionやRetrofitなどが普通に使える)
→できることが増え、開発がかんたんになった
→UI周り Complications API など
Android Studio
後ほど別のセッションで説明
Firebase
Firebase Analyticsなどが追加され、無料で利用できる。
GCM、AppIndexing、AdWords、AdMobなどはFirebaseへ統合
Android Instant Apps
インストールすることなく、アプリの一部の機能を利用できる。
Android 4.1から利用できる。
Google Assistantを軸としたプロダクトに力が入っている。
Android Studio 2.2 and Beyond
What’s New In Android Toolsというセッションがあった。
内容はDesignとDevelopとBuildとTestというところで4ジャンルあった。
Design
新しいLayout EditorによりUIを作りやすくなった。
Blueprintという新しい表示ができる: Viewの関係がわかりやすくなる
表示例→
UI上のViewのプロパティ一覧がよく使うものだけでてくるようになったので、実用的になった。
ConstraintLayoutが追加された。
Layout InspectorがAndroid Studioに統合された
Logcatの横にあるボタンで、Viewのヒエラルキーを取ってくる
便利そう
いままでAndroid Device Monitorをわざわざ立ち上げてレイアウトの構造を見ていたのが立ち上げなくても良くなった
Develop
Firebase Plugin
ボタンを押すだけでfirebaseのプロジェクトが作れる
Code Sample Browser
→コードの要素で右クリックFind Sample Code
してサンプルコードが見れる
Support AnnotationsやLintの強化
Infer AnnotationでAnnotationつけられそうなところをつけてくれる
Nullが入ってきたら警告を出す@NonNullなどを自動でつけられる
Build
ビルドの高速化
Jack Annotation Processor Support
→aptじゃなくてannotationProcesserって書く
CMake とNDK-BuildがGradleと連携
Merged Maifest Viewer
マージされたマニフェストファイルが見れる(パーミッションがライブラリで入ってしまったりするのが防げたりするかも)
Project Structure View(experimental)
Use new Project Structure Dialogにチェックを入れるとdependenciesがみれて、依存関係が見れる
アップデートがあるライブラリをアップデートできる
Test
TestRecorder
エミュレーター上で動かすと勝手にテストを書いてくれる
apk Analyzer
プレイストア上で出るapkサイズがDownload Sizeで表示される
パッケージごとのメソッド数が出る
Refactor
→Remove Unused Resourceで使っていないリソースを消せる + 何が消されるのかPreviewもできる
予想
いままでは基本的な機能を行っていた。
最近は開発プロセスの高速化に力を入れており、自動生成ツールがいろいろ来るのはないか。
The Art of Constraint Layout
自由度が高いRelativeLayout
既存のレイアウトからConvertできる
AnySizeなどの大きさの制約を指定したり、大きさの割合をUI上で指定する。
Firebase Analyticsの使用感
セットアップ
firebase-coreをdependenciesに書く。
build.gradleの最後にapply plugin: ‘’”を書くひつようがある
Webのコンソール画面でパッケージ名を設定するとjsonファイルをダウンロードできるので、プロジェクトのappディレクトリ以下に配置する
MainActivityのonCreateの最後にかくだけで自動計測
Firebase Overviewが分かりやすい
https://www.youtube.com/watch?v=tb2GZ3Bh4p8
とにかく導入がかんたん
入れたら勝手にとってくれる
Android Wear 2.0
新しいUI → Launcherが新しくなった
スタンドアロン → DataLayer APIを利用しなくてもHTTP通信ができたりする
Google Fit 機能拡張
Java 8
新しい入力方法
スライドする感じで入力できる
使ってみると意外と使える
マテリアルデザイン
Material Design for Wearableで整備された
コンプリケーションAPI
Data Providerからいくつかの情報をかんたんに取得して表示できるようになった(such as battery level, weather, or step-count data)
Notificationがマテリアルデザイン化 新しい通知のスタイルも
Nearby関係
Physical Webというアプリをインストールするとビーコンで通知を表示できる。
Nearby Notifications
まだPreview
Advertise an HTTPS URL
ビーコンを通じてURLばらまける
このオプションにはアプリがいらない
今年の夏以降
BLEビーコンがあればURLを配れる QRコードいらない
→こちらGoogle Play Servicesに入ったのでChromeなしでアプリのインストール誘導などができるようになったようです。
詳しくはこちらのツイートの返答がとても参考になります。
https://twitter.com/new_runnable/status/741070937961828353
その他
この勉強会にはGoogleの方も来ており、以下の内容を話していて特にInstant Appの説明が参考になりました。
また最近のAndroidについてGoogleの方に聞いたことメモ
http://qiita.com/ogapants/items/c01324ccb1ee9cacfb3a
Googleで行われた shibuya.apk #8 - Report from Google I/O 2016
Migration from GCM to FCM
AndroidとFirebaseが同じぐらいのセッションの量があった
GCMからFCMに移行したほうが良いという話があった
Firebaseとは主に15個の機能がある
ストレージが元はあって、それからFCMやクラッシュレポートなどがはいってきた
AnalyticsはGoogle Analyticsと違って料金がかからない
Firebase Notification
いいところは?
導入が楽!
数行で済む
Notificationはクライアント
GCMはdeprecateになる?
→まずならない
機能追加はFirebaseなので移行したほうが良い
▪️手順
プロジェクト作成
→いろんなサービスから
→Android
→パッケージ名を書く
→ちょっと書くだけ
New Messageで対象のアプリをん選択してメッセージが遅れる
全体プッシュとか、セグメントpushであればFCMで
会員同士のメッセージングなどはGCMである必要がある
トピックというカテゴリ分けができて、それに対して送れる
REGISTRATION Tokenというもので1端末についても送れる
クラッシュレポート
シンプルにクラッシュ率とかが出る
プロガードも対応している
jsonとdependenciesに一行だけで通知を受け取れるようになる
ただデフォルトだとスモールアイコンが変えられない+アプリがフォアグラウンドでは通知を受け取れない
FirebaseMessagingServiceを使うとイベントが受け取れるのでなんでもできる
Introduction to Awareness API
Context Awarenessとはユーザーがどんな状態なのか把握している状態
なぜ?
ユーザーが自分で入力するのはめんどう
ユーザーがどんな状況か把握しやすい
ユーザーのコンテキストに応じて適切な挙動をしてほしい
例えば?
ミーテイングの時間に間に合うように起床アラームがセットされる
などなど
何が嬉しい?
離脱するユーザーが多い
リテンションの手段がプッシュとかになってしまってスパムかしやすい
ユーザー作り手両方にとってメリット
現状でも組み合わせればできるが
条件が増えたりバッテリー消費してしまって難しい
二つのAPI
-
Fence API
条件を登録しておくと、コールバックされる -
Snapshot API
自分で取りに行く
基本的にはFenceAPIがよくある使い方
and or not でイベントを論理演算で組み合わせできる
Fenceのイベントを登録できる
パーミッションが必要なものもあるので若干注意
Firebase - Remote Config
Remote Configとは
例:
リリースしたときに、スウェーデンだけ不適切なものがあった
文字だけサーバーに置いておいて、すぐ差し替える
単なるkey/ value store
再インストールすることなくアプリを更新できる
ABテスト
セグメントの人のみ利用できるようなものを設定できる。
セットアップ方法
新規プロジェクト作成
→パッッケージ名
→jsonがダウンロードできる
→appの下に入れる
→gradleに書くだけ
導入完了
res/xml/remote_config_defaults.xml(自由なファイル名)でdefaultsMapというのを作り サーバーと通信出来たときのみ変更できる
(ここが最高でした。)
ここだけ詳しく説明すると以下のようにxmlをres/xmlに置いて
<?xml version="1.0" encoding="utf-8"?>
<!-- START xml_defaults -->
<defaultsMap>
<entry>
<key>price_prefix</key>
<value>Your price is $</value>
</entry>
<entry>
<key>loading_phrase</key>
<value>Checking your price…</value>
</entry>
<entry>
<key>is_promotion_on</key>
<value>false</value>
</entry>
<entry>
<key>price</key>
<value>100</value>
</entry>
<entry>
<key>discount</key>
<value>0</value>
</entry>
</defaultsMap>
<!-- END xml_defaults -->
以下で設定します。
mFirebaseRemoteConfig.setDefaults(R.xml.remote_config_defaults);
これで要素を取得して利用できる。
finalPrice = initialPrice - mFirebaseRemoteConfig.getLong(DISCOUNT_CONFIG_KEY);
ネットワークから取れない時はこのデフォルトのxmlを利用して、ネットワークから取れた時はその取れた値を利用します。
デフォルトでは12時間キャッシュする
開発ではキャッシュしないようにできる
待ち合わせするひつようなし
fetchしてコールバックで成功したらローカルに保存するコードを呼ぶことでリモートの状態を取得する。
ネット通信していなくてもデフォルトの設定が取れる。
(Androidのことがわかっている感じのAPIで最高そう)
A/Bテストできる
バージョン1.1.1以上ではこのUIみたいなこともできる
いろんな条件で優先度をつけて、A/Bテストができる
国とかでもできる
Webコンソールから簡単にできる
google-services.jsonを使い分けたいときはBuildVariantでgoogle-services.jsonをわけると複数使い分けられる。
WebコンソールのAnalyticsのほうでも見れる?
A/Bテストのためのツールにはなっていないので、効果計測などはまだ既存のA/Bテストのツールを置き換えるわけではない
履歴管理は現状できない
REST APIは現状ない
pre-reportのsecurityテストで楽々対応
apkを上げて解析して、apkがどうなのか自動でレポートしてくれる
Pre-Preport
リリース前レポートとは
無料なのがいい
apkを静的解析しているっぽい
セキュリティ的にまずいところを出してくれる
現状だとあんまり検出してくれない
WebViewの証明書のエラー無視のコードのみ検出
Googleの人の話
(予定らしいので実際はどうなのかわかりません。)
v4のSupport Libraryが分割される。
最低APIレベルが引き上げられるかも?