2015/08/09: Being an Android Programmer

先週社内の Android アプリ開発者があつまるカンファレンスがあって人々の発表を見たりなんだりした。いい意味でも悪い意味でも刺激的な回だった。色々途中をはしょって自分の takeaway を書くと、開発者からみた Android の問題は「いつかよいコードを書いて暮らせる日が来る」という希望をプログラマにもたせていないところで、それは問題だということ。

Android プラットホームはいまいち生産性を高めたりクールなコードを書いたりできる方向に進歩していない(しているが、進みが遅い)。しかもフラグメンテーションやら途上国向け廉価版端末の拡大などで、昔のムーアの法則みたいに性能問題も片付かない。結果としてコードが辛くても性能を優先し、なんとか使えるアプリを作りましょう、という結論になりやすい。

現状がそれなのは仕方ないのだが、どうもプラットホームを作ってる人たちは組み込み出身なせいもあってそういうクソコードに慣れすぎており、普通の開発者のペインを正しく感じられていない気がする。平気な顔で、クソコードを書きましょう、それがユーザのためです、みたいな話をする。検索社員にそれを強いるのはいいとして(いやですが)、その価値観は端々から染み出し、アプリ開発者からみたプラットホームとしての素敵さを損ねている。

これは他のプラットホームと比べた時大きな弱点になると思う。途上国向けにクソコードで頑張ろう、というメッセージは若くてキラキラした開発者には届かないよ。クールさの重要性を過小評価してる。

検索社員でもプラットホームの外でアプリを書いている人たちはそこまでクソコード信仰に染まっておらず、賢い人々が制約のなかでなんとかクールなかんじにできないかと試行錯誤しており (外から見えるやつだと Dagger とか Espresso とか) 若干の希望がある。でもそれが Android 本体に全然入ってこないのが悲しい。検索会社の中のコードだけ良くなっても根が腐ってたらしょうがないじゃん。

Android 本体の開発者は、プラットホームとしての中立性を気にして自分たち以外の検索社員からコードを守ってきた。文化的にも他の部署とは距離がある。おかげで何かと物事をカオスにしがちな検索会社文化のダメな面から Android は守られてここまで来たけれど、その一方で暇を持て余した頭のいい奴らがクールなことをする、という検索会社の良さが持ち込まれることもあまりなかったと思う。

独立を守る判断が悪かったとは言わないけれど、その結果が「クソコードで頑張ろう」だとしたら、あんまし嬉しくないなあ。もうちょっとクールなところを見せて、Android 開発にもクールなところはあるんだぜ、という気分にさせてほしい。それがないと辛い。キラキラした若者どうこう以前に自分が辛い。

そんななか Android アプリ開発者として自分はどんな方向を目指すか。今回一つはっきりしたのは、Android にどっぷり浸かるのは良くないということ。自分が大切にしたい倫理観や美的感覚が腐ってしまう。もともと Android を好きになってプラットホームと一緒に頑張ろう、と自分を説得しようと思っていたが、やめた方が良かろう。

それよりは、意識的に世の中の Android 以外の部分で楽しくてクールなものたちを摂取し希望の腹を満たし、その勢いで Android のダメなところをぶちのめす、みたいな態度の方がよい気がする。共に戦う仲間ではなく、あらゆるハックを駆使し攻略すべきオープンソースクソゲーとしての Android. プラットホームを作ってる人たちには悪いけど、こう考えた方が精神衛生を保ちつつ Android 業を続けられる気がする。Android の制約や特性を深く理解する必要はあるけれど、なかの人のお願いを聞いてやる必要はない。そういうパズルだと思えばまあ悪くない、かもしれない。

これはどこか Web platform に対する React.js の態度と似ている。Web platform guy だった頃は React あんまし好きじゃなかったけど同じ結論になろうとは・・・。なら React Native は正しいのか?わからんけど、そういうもんでもなかろう。あれは特に Android の問題を理解した上で作られてものではないからね。Android をハックしてクールな何かを作る方法はたぶん他にあるでしょう。