@numa08 猫耳帽子の女の子

明日目が覚めたら俺達の業界が夢のような世界になっているとイイナ。

Androidを支える技術を読んだ

年明け早々、香港に旅行で行ってきた。行きと帰りの飛行機はLCCを使ったけど、日本からだと4時間くらいかかるので暇な移動時間を潰すために1年位積読してしまっていた本を読んだ次第。

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

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

WEB+DB PRESS の「○○を支える技術」のシリーズはやっぱりハズレがない。この本はAndroidアプリの作り方の本でもなければ、LinuxとしてのAndroidの解説本でもない。前者の本は本屋さんに行けば沢山発売されているし、後者であれば「Androidのなかみ Inside Android」といった本がある。しかし、この本はそのどちらでもない。OSとしてのAndroidがアプリケーションを実行する際、世界のあらゆる開発者が構築したアプリをエンドユーザー目線で動かすため、どのような技術が利用されているのかをLinuxAndroidの世界の境界線のレイヤーの低いところから丁寧に解説をしてくれる本だった。

丁寧すぎるほど丁寧だったので、若干内容は難しいなという印象。自分も、1度読んだだけでは全部を理解しきれたとは思えない。

また、アプリケーションの実装をする人が本書に書かれている内容を全て把握する必要があるのかと言えば、必ずしもその限りではないとも思った。

しかし、大体の技術スタックがそうであるように自分のレベルをステップアップさせたり、他の人が解消不可能なバグに遭遇したときに、その仕組を知っておくことは非常に役立つ。

そういう意味で、全てのAndroid開発者が読んでおくべき内容の本だと思った。ただ、書籍という媒体であるため世界のアップデートへの追従はできていない。できてはいないが、たぶん本書で書かれている部分の大部分は基本的なことなので、大きく変わることもないかもしれない。

どこかのレビューで読んだけれど、ViewGroupのメソッドとして用意されているonMeasureonLayoutの違い、いつ呼ばれるのか2つのレイアウトパスの役割は何なのか、これらのメソッドをどのように実装するべきなのかをしっかり理解していなければこの本を読むべきだ。また、開発者がよく利用する(あるいは、高度に抽象化をして利用している)Handlerによるスレッド間通信がどのようにAndroidの内部で利用されているのかについても解説されている。

Handlerを起因とするバグはスタックトレースを追いかけていってもOSからの呼び出しになってしまうため、Handlerを利用したスレッドの情報を探し出すことがなぜこんなに大変なのか分かる。Handlerを利用する人は何に気をつけるべきなのか、あるいは他の開発者のためにどういった情報を残しておけば良いのかがわかれば、より親切な開発者になることができるかもしれない。

アプリケーションのエンジニアのレイヤーでできることは少ないのかもしれないけれど、光速なアプリケーション開発のためにしっかりと本書を読み込んで不用意に処理に時間がかかってしまう箇所を作り込まないようにしたいと思った。