2017年3月11日

#DroidKaigi 2017感想

DroidKaigi2017に参加しました。
最近のAndroidはよくしらないのでわからないことばっかりだったのですが、まぁわかんなくてもわからんことを気づくこと自体も楽しかったですよ、うん。

○わからない度合い

・知らない:ReactNative
・知ってるだけ:Kotlin, DDD, Chrome Custom Tabs, LayoutManager
・Hello Worldはしたことがある:Orma, Firebase(Realtime DB)
・どんなものかおさえるため少し試したことがある、採用していない:RxJava/RxAndroid, React, Realm
・試作案件で導入した・経験がある:Data Binding, ActiveAndroid, target23
・商用案件で導入した・経験がある:PubSub(EventBus/Otto), OkHttp, system app, BLE
・MV*については「ViewとModelがちゃんと分かれてば他はだいたいどうにかなるんだよ!どうでもいいよ!」サボり派

○聞いたセッション一覧と感想

【1日目】
・マッチョActivityを改善した話
「どうController/Presenterの肥大化を抑えるか」という話かなと思ったのですが、「とにかくでかいActivityをMVPありきでModelを分離してDI可能なようにstatic排除した」staticおじさんへの呪詛が多く「いいものはいいんだよ!わかるだろ!」がわかりませんでした。

・Android Security 最前線!!
ロックと暗号化つらかったのDirect Bootでどうにかなったのね。まぁロックつらいようなアプリは安易にロックスクリーンしがちですが。「いいからデバイス証明書にこれインポートしろ!」しないで済むNetwork Security Config便利そう。

・Androidリアルタイム通信アプリ作成Tips
OkHttpでWebSocket使えるようになったのですね。ただWebSocketはWeb側ですでに・・・とかじゃないと採用しない気がします。FirebaseとかRealm Mobile Platformの話は中身がコードばっかりすぎて密度高くてきつかったですね。
僕は機能なんかより「OSS度」「ロックイン度」「公式度」からRealmをとくにオススメしないマンだったのですが、Realm Mobile Platformはむしろエンプラでクローズドなプロダクトで便利そう。

・Data Bindingで開発を気持ちよくしよう
初心者向けに優しいところから順番セッションでした。「つらいとこでは使いません」がはっきりしてて良い質疑応答だったなと思います。さらばFindViewByIdとかさらばif(isVisible)ぐらいのあたりまでが一番導入コスパフォ高くていいと思ってます。

・実践アニメーション
アニメGIFらしき実例のフレームレートが足りなかったかな・・・。

・オフラインファーストなアプリケーション開発
かなりあとのほうまで聞いて、「マスタがインターネットにあってローカルがキャッシュという話とは逆で、ローカルDBに対するアプリとして作っても、Realm Mobile Platformを使えば+αいけるよ、オフラインファーストの方がよさそうなアプリでは使ってね」というトータルの言いたいことがわかりました。
ざきさん知ってれば予想はついたとは思いますが、Realm Mobile Platformの単語出さずにこれはちょっとRealm前提すぎて騙し討ちだったような・・・

・React Nativeはクロスプラットフォームモバイルアプリ開発の夢を見るか
発表材料をでっかく作った上で丁寧に取捨選択・圧縮してある印象で面白かったです。紹介・導入・評価・実例、オチまで30分枠につめた圧縮手法すごい。

・Android Bikeを作ろう
ようこそBLEへ。

【2日目】
・Android ORMの選び方
丁寧だったけど読み物すぎて書籍で読みたかった感じ。Ormaでマイグレしたことがない(カラム追加以外のまともなマイグレが必要になったことがない)ので今度試しますごめんなさい。

・個人で11個のアプリを公開した結果
参考になるかはさておいて、あるある話満載で楽しかったです。みんな作りたいから作ったしような。

・いまからはじめるAndroid 6.0対応 〜Android 7.0から8.xを見つめて〜
あんまり7,8を見つめてなかった感が・・・「去年採択されなかったのを出したら通っちゃいました」、えーと。

・Systemアプリ開発入門
「AOSPビルドしたことがある人」ぐらいじゃないと話にならなかったと思うのですが、まぁセッション参加者も猛者ばっかりで問題なかった気がします。
どちらかというとマルチユーザ対応さらに需要ないと思うんでおまけのAndroid Studio/debug話の方が聞きたかった感がありました。

・Chrome Custom Tabsをさらに使いこなそう
サンプルアプリとスライド事前公開ありがたい、「WebViewはちょっと武器庫すぎたから遊ぶのはこの砂場で我慢してくれよな」がよくわかりました。

・Fireside Chat
あったまった

・LayoutManagerをつくろう
「もう少しいうこときかせられるつもりでとりかかったけど強かった」セッションになってました。質疑応答の「お前はこう、俺はこう」がよかったです。

○KPTのT

Try
・見知らぬ人に突然押し付けるためのコンテンツを用意しよう
・直前にAndroidについてつらい気持ちにならないように業務や人生をコントロールしよう

○その他感想

・VRとかAndroid Thingsとかなくて多様性についてはもう少し欲しかったな、と感じましたがまぁでも「みんなが(=3割ぐらいの人が)聞きたいコードの出てくる話かと考えた際にそんなに需要はないか」とも思ったので、「セッションで話すべき」ではなくて、スポンサーブースとかゲリラデモとかAfter partyとかセッション外でも場がないわけではない気がしてきました。
・ただ、ReactNative/XamarinあたりのAndroidの多様性というプールでキャッキャ遊んでる盛り上がりと比較すると、Rx, MV*満載で「コードはこうあるべきだ」理想追求はちと抽象化されすぎで、「実際の問題についてコードでどう殴るか」まで落ちてないセッションを引いてしまった印象でぐぬぬでした。
・「どう理想の世界をつくるか」よりは「どうなんとか(スキルがつらい、客がつらい、同僚・上司がつらい)やっていくのか」が必要だと思うんですが、みんななんとかなってるんですかね。
・after partyで全然見知らぬ人としゃべらなかったししゃべるネタあんまりもってなかったの反省。個人として退職芸人中のステータスが悪いといえばそうなのですが:)

いろいろ最善とはいえないコンディションだったけどそれでも楽しかったです。

2017年3月 8日

iOSユーザとAndroidユーザを戦わせなくてもいいじゃないか

【デザイナー向け】これからAndroidのデザインをする人へ
http://qiita.com/AAkira@github/items/02814f337f4eb2d30f2e

なんとなく思うことがあったので。

○全般

【デザイナー向け】という枕詞をつけるのであれば、Android用語をもう少し一般的な表現に直した方が良いかな、と思いました。「Androidに詳しい人へ向けたAndroidのデザインに関する愚痴」のテイストが少し強すぎという印象です。

○個別

・見出しが「Android用語」と「デザイン用語」と「(はじめに、や一番いいたいこと、など)文章を構成する一般的な見出し」が混在していて読みづらいと思いました。

・僕の経験則で言うと、すぐれたデザイナーはiOSのデザインコンセプトがきちんと別の体系に翻訳されていますので、単にAndroidを使っているだけではなかなかそのMaterial Designの全容を体系だって体得するには至らないと思います。そのため、「いいから2台もちしろよ」みたいな乱暴で(コストの高い)提案ではなくて、貸してあげるとか、タブレットにでもどうだい、とか、このアプリは比較して30分使ってみるとAndroidについてよくわかるよ、とか、そのぐらいがイイトコロじゃないでしょうか。

>「Android暗黒時代と呼ばれる2系の端末を所持していた経験があり、Androidに嫌悪感を抱いています。」
あんまり暗黒時代と呼ばれてない気がしますし、真にヤバかったのってIS○3とかIS○4とかではないですかね・・・「葬式UI」ではありましたけど2.3は(とくに2.3.3以降)ほどほどだったと思いますし、Honeycombなら暗黒時代と呼ぶのはわかるんですが、「2系は暗黒時代とよばれていた」みたいな表現はちょっと乱暴に感じます。

あと、俺は詳しいんだアッピルするなら「2系」とか「5系」とか小数点以下ふっ飛ばさないでほしいのです、「4.4系(通称 KitKat)」ももう一息丁寧に

>一旦5系以上の端末(日本, 中国製, 低価格帯は除く)を使用してから言って下さい。
これも「中国」といわゆる「中華端末」が区別されてない印象を受けます。例を挙げるとHuawei、Nexus6Pとか、ね?

>dp(dip), sp
>dp
「密度非依存ピクセル」という説明の前にいきなり「○○は大事である」って入ってて思考ジャンプが強いです。
その割には「pxという言葉は忘れてください」ってこれも乱暴ですし、忘れないでもいいじゃないですか。
さすがに5インチWQHDはアレかなー、って思いますが、6インチFHDぐらいならピクセルパーフェクトは結構狙って価値があると思いますよ?

>dpがない場合はこのように表示されます
>dpがあると同じ様なサイズで表示されます
この表現はなんだかよくわからないです。

>sp
>AndroidではiPhoneとは異なり そもそも複数画面サイズがある前提なので、
「iOSとAndroidのシステムフォント設定サイズへの追従度」について、とくに手持ち情報があるわけではないのですが、iPhoneもSEから6P/7Pまで結構サイズ違っちゃってるじゃないですか。
フォントサイズ設定に耐えられるUIの柔軟性設計は(そもそも他言語の方が鬼ではありますが)どちらでもそれぞれ大切だ、ぐらいの方があってるのではないでしょうか。

>4の倍数
さっき「pxという言葉は忘れてください」って言ったじゃないですかー。

https://material.io/guidelines/layout/metrics-keylines.html
"All components align to an 8dp square baseline grid for mobile, tablet, and desktop. Iconography in toolbars align to a 4dp square baseline grid."
Material Designのテンポがそうだから「8dp(4dp)のグリッドに・・・」でいんじゃないですかね。

>戻るという概念
こんにゃろめ、"Up"という単語を使わずに説明しようとしてわかりづらくするなんてハッハッハ

>下タブ
下タブそのものが悪だったのかはよくわかりません。ガイドライン違反はアレだと思いますが。

>WebView
Chrome Custom Tabで概ね勝利なのですが、「iOSはintentという概念が無いので、よく使われます。」というのも少し首をかしげます。
back to appでcustom URL scheme組み合わせるやつとかiOS9からそれなりにいい感じですよね?

>基本構成
IDEのファイル構成を説明するのは本当にデザイナー向けなんですか・・・?なんのための説明・・・?

>アンチパターン
>プルリクエスト
このあたりクライマックスしてて、(気持ちはわかるんですが)「iOSユーザの気持ち」にも「デザイナーの気持ち」にも寄ろうとせずに「Android開発側の流儀ぐらいちゃんと把握しろよ!」テイストを強く感じました。

iOSとAndroidバトらせるんじゃなくて(いやそれはそれで楽しいのですが)、素直にデザインとUIとプログラミングの良い関係を目指していきたいものです。

P.S.
ドラムロールだけはさっさと滅べ>iOS