某勉強会の懇親会にて、Googleの方とお話したことのメモです。
※ 口頭で聞いたことなので、私が誤った解釈をしている可能性があります。
※ お話を聞いたのは2016年5月末時点です。仕様は今後変わる可能性があります。
※ 「話したことはネットで公開しても良い」とGoogleの方に許可いただいています。
以上をご注意の上、穏やかな気持ちでお読みください。
また、その場で一緒にお話をしたegugueさんもメモを公開されているので、こちらも併せてご確認ください。
マルチウインドウについて
- マルチウィンドウでウインドウ同士を移動するときのライフサイクルはまだ調整中
- マルチウインドウで大きさをずらした時に
onCreate
が呼ばれまくるのはおそらくバグ。これから治る予定 - 縦固定にしているアプリなど今はマルチウィンドウにできないパターンもあるが、最終的には強制でマルチできるようにする予定
AndroidTVについて
- NexusPlayerがGoogleストアから消えたが、Googleが別にAndroidTVをやめたり縮小したりするわけではない。
- NexusPlayerは元々開発者向けのもので一般ユーザーに向けたものではないので、早かれ遅かれGoogleストアから消すつもりだった。
- これからはソニーブラビアとかにAndroidTVはどんどん入ってくし、携帯電話と違ってテレビ買い替えのサイクルは遅いので、ユーザー数が伸びなくてもあまりまだ気にしなくていい。
- 実装において、スマホの方とパッケージは同じにしてほしい。Youtubeは.tvがついて別アプリになってるが、Youtubeはちょっと特殊なのであまり参考にはしないほうがいい。
デザインについて
- デザイナーはアプリごとに別々にいて、みんな違う思想を持っている。G+とかYoutubeとかは特殊でデザインガイドライン無視してる。(下タブとか)
- Googleのアプリからマテリアルデザインを参考にするならPlayサービス系のアプリが良い。
- FABも最初は1個だけって決まりだったが縦並びもOKになってる。デザインガイドラインはよく変わるので注意。
- ちなみにGoogleのアプリはFABを縦に並べるために一部C言語で書いてたりする。Javaで頑張ってるアプリもある。
Instant Appsについて
- 目的はランディングページみたいなもの
- 20MBのAPKをダウンロードするためにはお金かかっちゃうような国で真価を発揮するが、日本で使うのも大いにアリ
- Instant Appsを作るときはAndroid StudioのGradleでモジュール分けして作る。最終的な成果物は完全に別APKになる。
- モジュール分けて実装した上で、本アプリと共通処理の部分はまた別にモジュール化する必要あり。
- 共通モジュールとInstant Apps用モジュールで合計4MBを超えないようにする必要あり。
- その別APKはPlayコンソール上の専用の場所にアップロードするようになる予定。
- webからリンクを踏むと裏でGooglePlayが起動してダウンロード&インストールが行われ、ユーザーからすると一瞬で画面遷移するように見える
- APKは4MB制限なので、pngでなくvector画像でやることを強く推奨
- どうしても大きい画像があって4MB超えちゃう場合はインストール後に画像ファイルを落としてくるやり方もあり
- 今のところInstant Appsの通信制限は設けてないので、APKを4MBにしても起動後に30MBのデータダウンロードさせるような本末転倒なことできちゃう。(ゲームとかでありえるかも)
- サンプルアプリの提供や実運用開始日はいつになるか未定。早くても今年の末とか。IOではthis yearとかnext yearとかまちまちで言ってた。
- IO2014で「ChromeOSでAndroidアプリが動く」と言ったが実現したのは2年後なので、そうなるケースも可能性としてはある
- まだ詳しく決まってない部分もあるので、とりあえず今はvector対応だけして続報を待て。
ConstraintLayoutについて
- もともとはGUIビルダーみたいなのほしいよねってなって作った
- RelativeLayoutやLinearLayoutで十分ならそれでもいい
- 一度ConstraintLayoutで作ると簡単には他のレイアウトに移行できないから気をつけよう
- まだこれから変わるかもしれないけど、xmlの構成は変わらないはず
ライブラリについて
- Googleのアプリでは通信部分はVolleyでなくHttpURLConnectionを基本的にそのまま使ってる、アプリによって呼び方は違う。
- HttpURLConnectionの中にあるokhttpは元のやつからかなり改変している。(いつのokhttpから派生したのかは当人は知らなかった)
- Googleの外向けのアプリではサードパーティ製のライブラリ使わないようにしてる。ライセンスが微妙なため。
- Googleは開発者個人が最高だと思ったライブラリを使っていく社風なので、Googleアプリで使われているライブラリ=Google的にオススメってわけではない。
- IOアプリでVolleyが使われているのはそのせい。
- DataBindingの一部でKotlinが使われてるのもそのせい。
- Spacesとか最近のやつはKotlinかもだしXamarinだったりするかもね(?)
現場からは以上です。