道産子エンジニア

悲観主義は気分に属し、楽観主義は意志に属する

これからもAndroidを開発する人は「Androidを支える技術」を読もう。

Androidを支える技術〈I〉──60fpsを達成するモダンなGUIシステム (WEB+DB PRESS plus)

Androidを支える技術〈I〉──60fpsを達成するモダンなGUIシステム (WEB+DB PRESS plus)

この本はちゃんとAndroidの歴史について書かれている初めての本だと思う。 デバッグ中にいつも見る Zygote (ザイゴート)というものの正体とか、普段気にしていなかったAndroidについての詳しい部分が知れる良書だった。 特にこの本はAndroidにおけるViewの描画のこだわりを詳しく説明しているところが、アプリ開発者としての自分にとって一番興味が湧いた部分だった。 当然ハードウェアとの連携もチューニングされているので、Linuxの知識も多少必要になるが、Androidに限らず多くのGUIシステムにおけるプログラミングについての知識も得られる。滅多に機会がないだろうが、自分でGUIシステムを開発することになればこの本の知識は役に立つだろうというレベル感だった。 続きの2もでているので、これから読んでまたブログ書く。

Androidの恐ろしい開発スピード

それにしても驚くのはAndroidの開発スピードだと思う。 本の出版が(公式ドキュメントの更新も…)追いつかないほどのスピードで開発されているのはなんとなくわかっていたが、本書の一番最初に書いてある通り8年で1000万行ものコードが一プロジェクトに書かれているのだ。こんなにアクティブな開発ってほかにあるんだろうか?ブラウザとかかな。

年/月 行数
2008/11 287万行
2016/12 1243万行

恐ろしいスピードで開発されている。数多のAndroid開発の入門書が導入や触り程度にしか解説できない理由はここにあると思う。開発者たちは経験から感じ取っているが、もはや入門書を書いているスピードでは追いつけないのは当然だと思う。昨日書いていた文章が明日には過去の仕様になっているかもしれないのだ。もちろん、技術書典などで必死にフレッシュな情報を書き続けている人たちもいるけれど、その鮮度を失えばただの歴史書にしかならないのが現状だろう。

Viewを知ることの大切さ

一度少し面倒なカスタムのViewを作ってみると、ある程度全体が見えてくると思うが、AndroidのViewはとても苦労して作られていると思う。開発者が馴染みやすいようにしっかりとドキュメントやコードが公開されており、〜がしたいというのに手が届く様に設計されている印象を受ける。何より、Androidが用意しているAPIのViewも同じように作られているところがいいところだろう。いつでもコードを確認してどうすればいいのかすぐに自分で確認できる。コードが公開されていないと想像するしかないのだし。

読んでみて理解が深まったのは以下。

  • ハードウェアから始まるタッチイベントがどのように流れてくるかを追える
  • スタイルやレイアウトの仕組みをより詳しく知れる
    (onMeasureがたまに複数回走るのは何でだろう?とかも読めばすぐにわかる)
  • 60fpsを保つためのViewの仕組みがわかる

dexやバイトコード実行環境

この本を読んで理解が深まったことの二つ目はAndroidアプリの配布形式である、dexファイルについてのこと、DalvikやJackといったコンパイラについてとJITやAOTといったコンパイルの仕組みについて、うわべだけの知識ではなくAndroidの歴史に沿って理解できる内容になっているのが非常にわかりやすかった。

最近話題になっていたJackコンパイラは残念ながらボツになってしまったが、その中身をよく知らなかったのでいい勉強になった。(詳しく書いてあるわけではないが)

まだよく理解できなかった部分

OpenGL ESの章は自分にはまだ早かった気がする。書いてあることの意味はわかるが、それを体験したことがないためにいまいち宙に浮いたままの感じがした。 ゲームなどではないアプリケーション開発のレベルでは、ハードウェアまで意識した描画の詳しい部分を扱うことはほとんどない。 これから開発していく中で壁にぶち当たることがあればいいなと思う。というかそういうものも開発してみたい。


自分はまだAndroidを三年くらいしかやっていないのだけど、日々勉強することは増えるし、まだまだ理解していない部分は多い。古参Androiderはしばしば、「私は〜年Androidをやっていて、…端末のころから愛用している」みたいなことをいう。開発の経験に活かせばいいだけなのに、なぜそんな自慢をするかはさておき、それぞれの時代にどういうことがあってどんな変遷をしてきたかということを語れる人をみたことはない。それに比べて著者の有野和真さんは文からもAndroidへの愛や苦悩みたいなのが感じられて、本当にずっと見守ってきたのだな感がすごいよかった。コラムに書いてあることは読むべきだと思う。著者のバックグラウンドに関して詳しく書かれているので、以下のomoさんのブログを参照されたし

bellflower.dodgson.org

Google I/Oのネタも追わないといけないしやることはまだまだあるぞ〜!

読書所用時間:約8時間
オススメ度:★★★★☆


これも読んだけど全然面白くなかった…

図解 確率がわかる本

図解 確率がわかる本

読書所用時間:約2時間
オススメ度:★☆☆☆☆