Google I/O 2016。Keynote自分まとめ。Machine Learning、Google Home、Allo、Duo、Android N
Keynoteのライブ、見終わりました。
ここで録画が見られます。 www.youtube.com
Keynoteのメッセージの中心にはマシンラーニングがあったのかなと思います。 AlphaGoのようなマシンラーニングを活かすために、Google Assistantと、Assistantにテキストや、声でコミュニケーションするためのプロダクトが発表されました。
Google Home
Amazon Echoみたいなやつ。
家の中に置いておいて、声でGoogle Assistantに指示が出せます。
デモ中であったのは、「OK Google」って言って、音楽をかけたり(家中のスピーカーにも出力できる!)、宇宙について調べたり、スケジュールを変更したり。
リアルにどこまで使えるかやってみたい。 そのうち、Google Homeと連携するものを開発するためのツールが提供されるとのこと。
Google製メッセージアプリ「Allo」、ビデオチャットアプリ「Duo」
どちらもGoogleが出す、コミュニケーションアプリです。
- Allo
普通のメッセージアプリにない機能としては、ユーザーの振る舞いを学習して、相手の会話への回答の候補を出してくれます。それでよければ、タップして選ぶだけ。面白かったのが、相手が送ってきた犬の写真に対して、画像解析して、テキストへの返信と同じように「Cute dog!」などの回答候補がでること。
デモではチャットでレストランの予約をとっていました。 これも予約するためのプラットフォームに参加するお店がどのくらい日本で増えるかな。
個人的には、メッセージのフロントはLINEとか、FacebookメッセージやSlackなどなんでも良くって、後ろでGoogle Assistantが動いてて、会話のサジェスチョンもしてくれるし、レストランも予約してくれるってアーキテクチャがいいな。 きっとbotフレームワークもでるよね。
- Duo
娘さんのダンスが可愛いね。 電話をかけると、受ける方は取る前に相手の動画を見られる。誰かが家のインターフォンみたいなかんじだねって言ってた。確かに。
ハングアウトはどうなるんだろ。
Androidについて
Android Wear 2.0
これまでスマートフォンを母艦としないと何もできませんでしたが、スタンドアローンでいくつかの機能が動くようです。スタンドアローンで何ができて、何ができないのか、詳細はWearのセッションを楽しみにしたいと思います。
Android N
Android N自体は以前から発表されているので、知っている人は知っているという感じでした。 ここから誰でもNの名前を投票できるって。 Help name Android N
DaydreamっていうVRの仕組みでは、Android Nが前提となっているようです。
Daydream。Mobile VRの仕組み。スマートフォン、ヘッドセット&コントローラー、App。Android NにVR Modeがある。端末は結構スペック要りそうかな。#io16jp
— ryohei sogo (@rsogo) 2016年5月18日
Android Studio 2.2
既にプレビュー版がダウンロード可能になっています。 Layout Designerが新しくなるみたいです。XCodeなみにUIの開発が楽になれば・・・。
Android Instant App
インストールしないNativeアプリ。このあたり眠くて記憶がない。
Introducing Android Instant Apps | Android Developers Blog
Android Instant Apps | Android Developers
Firebase2.0
Androidとは直接関係ないけど、バックエンドサービスのFirebaseにも触れていました。
Firebase。Analytics、Cloud Messaging、Notification。この機能がFreeってこと?
— ryohei sogo (@rsogo) 2016年5月18日
#io16jp
@rsogo Firebase、Database、File Storageは有料みたい。Analytics、Cloud Messaging、Notificationだけ使えばいい場合には、無料だし良さそうだね。https://t.co/X0CF9cRuq9
— ryohei sogo (@rsogo) 2016年5月18日
#io16jp
Google I/O 2016 Live有りAndroidセッションまとめ
いよいよGoogle I/Oが今年も始まりますね。
ライブストリーミングがある予定の、Android関連セッションのうち、私が興味があるものをリストアップしてみました。 ちなみに私が興味があるのはAndroidの最新情報の概要と、AndroidアプリのUI、UX、アーキテクチャです。あと、Wearはどうなるのか?
May 18
キーノート
まずはキーノート。Androidについても何かしら発表があるでしょう。 goo.gl
What's new in Android" at #io16:
初日のキーノートの後は、Androidの最新情報のまとめから。キーノートと、What's newまでは生で見たい気がする。 goo.gl
Image compression for Android developers
What's newの後にいきなり、細かいトピックですが、画像の圧縮について。 goo.gl
Multi-Window mode
あんまり興味ないけど、一応、Android Nからサポートされるマルチウィンドウへの対応。 goo.gl
What the Fragment?
Fragmentについて。なんで今頃わざわざGoogle I/Oでやるんだろうか。 みんなどういう風に使うか、悩んでいるから? goo.gl
Android Auto: The Road Ahead
直近使うことはなさそうだけど、話題性としては、車の中で使用するためのプラットフォーム、Android Autoについて。 goo.gl
May 19
Android themes & styles demystified
テーマとスタイルについて。 goo.gl
What's new in Android development tools
Androidの開発ツールについて。最近2.xにバージョンアップしたAndroid Stuidioについてでしょうか。 goo.gl
What's new in Android Wear?
はっきり言って、Wearに関するセッションは少ないです。 今回のI/Oでも盛り上がりに欠けそうな予感はしていますが、新しい発表はあるでしょうか。 goo.gl
The experts' guide to Android development tools
Android Studioの深いところやTipsを教えてくれて、生産性があがるらしいです。 goo.gl
May 20
Android UI and layouts
UIとレイアウトについて。カスタムView、カスタムLayout、効率的なLayout階層構造などについて教えてくれるみたいです。 goo.gl
Android application architecture: Get ready for the next billion!
オフライン対応についてみたい。 goo.gl
A window into transitions
画面遷移のアニメーションなどについて。これ、iOSと比較して弱かったところなので、最新だとどうなっているのか興味がある。 goo.gl
Cordovaを6.xに、cordova-androidを5.xにバージョンアップしました
Cordovaをバージョンアップしました。
- バージョンアップ前
$ cordova -version 5.4.1
- バージョンアップ
$ sudo npm install -g cordova@6.1.1
- バージョンアップ後
$ cordova -version 6.1.1
Pluginのバージョン確認
$ cordova plugin version com.phonegap.plugins.PushPlugin 2.5.0 "PushPlugin" cordova-plugin-console 1.0.2 "Console" cordova-plugin-device 1.1.0 "Device" cordova-plugin-statusbar 2.0.0 "StatusBar" cordova-plugin-whitelist 1.2.0 "Whitelist"
合わせてcordova platformのバージョンアップ
以前からcordova-androidのバージョンが古いと警告がでていたので、platformのバージョンアップもやります。
cordova-android 5についての公式のリリース情報はこちら。手順も載ってる。 Cordova Android 5.0.0 - Apache Cordova
Using this version of Cordova with older version of cordova-android is being deprecated. Consider upgrading to cordova-android@5.0.0 or newer.
- バージョンアップ前
$ cordova platform Installed platforms: android 4.1.1 browser 4.0.0 Available platforms: amazon-fireos ~3.6.3 (deprecated) blackberry10 ~3.8.0 firefoxos ~3.6.3 ios ~4.1.0 osx ~4.0.1 webos ~3.7.0
- バージョンアップ
$ cordova platform update android Updating android project... Android project updated with cordova-android@5.1.1 Discovered plugin "PushPlugin" in config.xml. Installing to the project
- バージョンアップ後
$ cordova platform Installed platforms: android 5.1.1 browser 4.0.0 Available platforms: amazon-fireos ~3.6.3 (deprecated) blackberry10 ~3.8.0 firefoxos ~3.6.3 ios ~4.1.0 osx ~4.0.1 webos ~3.7.0
android 5.1.1に上がってますね。
Android:Fragmentの画面遷移時にアニメーション
Androidで、Fragmentの画面遷移の時にアニメーションを付けるやりかたを書きます。 FragmentTransaction.setCustomAnimationsを使いました。 FragmentTransaction | Android Developers
進む時のみにアニメーションを付ける場合
setCustomAnimations(int enter, int exit)
- enter: 次に表示されるFragmentのアニメーション
- exit: 今表示されているFragmentのアニメーション
Backボタンなど、戻る時にもアニメーションを付ける場合
setCustomAnimations(int enter, int exit, int popEnter, int popExit)
popEnter、popExitに戻る時のアニメーションを指定します。
- popEnter: 戻る時に次に表示されるFragmentのアニメーション
- popExit: 戻る時に今表示されているFragmentのアニメーション
引数で指定するのは、アニメーションを指定したリソースIDです。 左からスライド・インさせるアニメーションであればこんな感じ。
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android"> <translate android:duration="300" android:fromXDelta="-100%" android:toXDelta="0" /> <alpha android:duration="300" android:fromAlpha="0.0" android:toAlpha="1.0" /> </set>
Activityの画面遷移全体に付けるのなら、Themeに指定するのが一番楽です。 詳しくはこちらが参考になりました。 【Android】画面遷移時のアニメーション設定 - Furudateのブログ
参考にさせてもらったサイト
LollipopでFragmentをスライドインするアニメーションの適用 - Qiita
java.lang.RuntimeException: Unknown animator name: translate
が発生した時の対応を書いてありました。同じエラーが発生したのですが、自分の場合は、FragmentTransactionはSupportライブラリを使うことで、回避しました。
EclipseからAndroid Studioへ移行しました
先週末、あるAndroidのプロジェクトをEclipseベースから、Android Studioに移行しました。
新規のプロジェクトや、小さめのプロジェクトはAndroid Studio化は完了していたのですが、一番大きいプロジェクトは社外の開発者の方の慣れもあって、踏み切れていなかったのですが、急遽やる必要があって、慌ててやった感じです。
Android Studioに移行するにあたって、一番大きいのはGradleベースでビルド、リリースをできるようにすることでした。
Gradleでのライブラリの取り込みにでは次の3つを使い分けました。
- リポジトリに登録されているライブラリの参照
- jarファイルで公開されているライブラリの参照 リポジトリに登録されていない、社内のライブラリなど
- ライブラリプロジェクトの参照 ライブラリのソースを編集するようなケース
dependencies { compile fileTree(dir: ‘libs’, include: [‘*.jar’]) compile ‘com.android.support:support-v4:22.+’ // 1の例 compile ‘com.google.code.gson:gson:2.2.4’ compile files(‘libs/StaggLib.jar’) // 2の例 compile project(‘:subproject’) // 3の例 }
1,2は特に問題がないと思いますが、3について、やり方を忘れるので、メモ。
「File -> New -> Import Project」を選択
settings.gradleに参照が追加されるGUIでの操作では対象のプロジェクトは、元プロジェクトにコピーして、インポートされるので注意が必要。必要に応じて、コピーされたファイル群を削除して、File('')のパスをオリジナルのプロジェクトを参照するように修正する。
後は、Jarファイルを直接参照していたいのを、リポジトリから取得するように変更して、コンパイルが通るまで、ライブラリの重複なんかを取り除いていく。
その他、移行中に発生したエラーはこんな感じ。
':app:dexDebug'. https://t.co/8iOBndcqdy.ide.common.process.ProcessException
— ryohei sogo (@rsogo) 2016年2月28日
のエラーは、これで解消した。https://t.co/2VtF1sO4PM
移行とは、直接関係ないけど、ハマったのがAndroid Studioがハングするという問題。
Macで開発していましたが、Applications以下のAndroid Studioを削除したり、別のフォルダに新規にインストールしましたが、解決せず。 結局、こちらの情報を元に、Applications以外の場所もキレイにして、再インストールで解決しました。Applicationsの下だけ消せば、綺麗にアンインストールできるというのが、Macの良いところだと思うんだけど、これだとWindowsと一緒だよー!
@rsogo これでアンインストールすると、Android Studioがハングアップするのは治った。https://t.co/8FaXQOeekE
— ryohei sogo (@rsogo) 2016年2月28日
その他参考にさせていただいた記事。
基本をおさえる!Androidアプリで指定するバージョンについて(compileSdk,buildToolsVersion,....) - Qiita
Android Studioでproguard付きでビルドした時の`Duplicate zip entry`エラーの調査と対応 - Qiita
Android Studio で Build Variants - Qiita
移行そのものではないけど、Gradle化に合わせて、環境差異や、リリース版/テスト版の違いをBuild Typeなんかで切り分けるのも入れた。
2016年2月時点でのAndroidの各種情報
2016年2月時点でのAndroidの各種情報をまとめます。
Androidのバージョンシェア
Dashboards | Android Developers
KitKat(4.4)と Lollipop(5.x)で7割を占めています。 Jelly Bean(4.1, 4.2, 4.3)を加えると9割を超えます。 まだMarshmallow(6.0)は少ないけど、新規であればサポートするとして、KitKat以上は必須。日本だとJelly Beanの割合ももう少し高いと想定すると、なかなかサポートしないという訳には行かないかな。
開発ツール
Android Studioを使って開発します。Eclipseベースから、Android Studioに変わって、ツールはすごく進化したと思います。
Android Studio と SDK Tools のダウンロード | Android Developers
今、安定版はv1.5。2.0のベータ版が出ています。2.0ではInstant Runと呼ばれるコードの変更を、実行中に反映できるという機能や、エミュレータの高速化が個人的に目玉。 Android Studio 2.0 Preview | Android Developers Blog
デザイン
新規でAndroidに最適化したアプリをデザインするためには、マテリアルデザインを知っておくべきでしょう。 Introduction - Material design - Google design guidelines
次のStructure、Components、Patterns(特にナビゲーション!)は、設計者、デザイナーとも知っておくべきでしょう。知らないと、Androidでは一般的ではない(標準で機能が用意されていない)ことをやることになるのでUX的にも問題だし、開発のコストも上がります。
Structure - Layout - Google design guidelines
Bottom sheets - Components - Google design guidelines
Navigation - Patterns - Google design guidelines
複数の画面サイズ、複数
Devices and Displays | Android Developers
Supporting Multiple Screens | Android Developers
スマフォとタブレットは別のレイアウトを用意しておく、複数の解像度の画像を用意しておく、ピクセルじゃなくてdpを使おうぜ、みたいな話。
複数画面のデザイン | Android Developers
上の2つの記事のもうちょい詳しい資料。
Permission
Best Practices for App Permissions | Android Developers
Android 6.0 MarshmallowからPermissionの仕組みが変わっています。
端末ID
Best Practices for Unique Identifiers | Android Developers
Instance IDの利用が推奨されています。Instance IDとは何かとか、取得の方法はWhat is Instance ID? | Instance ID | Google Developersを参照。
Instance IDを使いたくない場合は、UUIDを自分で作ってねって書いてる。
便利なチェックリスト
発注側、受注側で合意しておくといいかも。
Core App Quality | Android Developers
Tablet App Quality | Android Developers
その他のNews
日本で唯一のグローバル端末ベンダーといってもいいSonyに、スマートフォン事業からの撤退という噂もあります。 Sony sees 25-fold profit jump by 2018; could exit TVs, phones | Reuters
2015年夏のAndroidのツール関連、個人的に気になるポイント
Android Mの名前はマカロンとか、M&Mとか噂になりましたけど、Marshmallowになりましたね。
Android Studioはバージョン1.3が安定版としてリリースされました。
Get your hands on Android Studio 1.3 | Android Developers Blog
Data Binding
これまではサードパーティのライブラリを使用していましたが、公式でサポートされました。 Data Bindingを使うことで、画面と、エンティティの間をひたすら値をコピーするしょうもない作業をする必要がなくなります。
Data Binding Guide | Android Developers
NDK
お試してきな感じで、Android Studio 1.3でサポートされているようです。 丁度、NDKを使用するプロジェクトが始まっているのですが、Qiitaとかで苦労されている人が多そうだったので、Android Studioでの開発は見送りました。
参考
Android Developers Blog 公式発表もここから発信されることが多いみたいです。
Android Developers マニュアル、サンプル、ガイドライン。