トップ «前の日記(2017-02-26) 最新 次の日記(2017-03-10)» 編集

日々の破片

Subscribe with livedoor Reader
著作一覧

2017-02-28

_ 驚異のAndroidを支える技術〈I〉

有野さんから滿を満たして出版された「Androidを支える技術〈I〉」をいただいて読み始めた。現在1/2を少し超えたところまで読んだところだけど、今書けることは今書いておく。

結論としては、信じがたくおもしろいからすぐ読むべきだ。

副題は60fpsを達成するモダンなGUIシステムとなっていて、fps(秒あたりの画面書き換え回数)が押されているので、ゲームとかの話かと思ったら、まったく違って、Androidがどういう仕組みでデバイスに対する入力を遅延なくウィンドウの描画へつないでいるかの解説に近い。

そのために利用しているプライオリティ(というか、発火時間順)に基づくイベントのキュー(これがシステム全体としてデバイスからの吸い上げと、アクティブなプロセス内でのイベントの、大きく2つある)と、それをいかに抽象化して実装しているかの解説が、1/2読み終わった時点での中心だ。

その前に、本文とはまったく語調が異なる、自負にあふれきってえらくおもしろい前口上と、超速Android開発ガイドがある(これ読んで開発するためではなく、どういう技術要素を利用して開発するかの提示で、Androidを知らなくても読めるように、開発者視線での上っ面が説明されている)。したがって、本文で説明しているのが、実際のアプリケーションではどう作用するかの見取り図についてのマインドマップを最初に形成させる仕組みだ(すでにAndroidのアプリケーション開発者にとっては邪魔にならないように、読み飛ばせるようにガイドがついている)。

想定読者については、前書きに4タイプが示されている。

・Androidでの開発経験とLinuxのシステムプログラミング(libcレベルということだろうけど)の経験者にAndroidを完全ガイドする

・WindowsのGUI開発者にAndroidを教える

・組み込み開発者にAndroid流儀を教える

・開発者から足を洗ったマネージャにAndroidの特徴を示す

いずれにしても、Androidの世界を大きくするために開発者層を正しい知識で増やす方向だ。もっとも、著者にはそういう意図はなく、複数のモジュールをキューを使って疎に結合することで、マルチコアを生かしながらデッドロックに陥ることなく見事にバケツリレーする動作そのものがどえらくおもしろくて、それをうまく説明したかったのではないかと思うし、本としては単に読者対象を大きくとっただけだろうけど、結果としてはそういう方向の本だ。

おれは多分2と4(微妙)なのだろうけど、確かに、メッセージポンプを知っているから、その部分は妙にわかりやすいとかあったけど、おそらく、事前知識はあまり必要ないのではなかろうか。むしろ、GUIシステムの問題(マルチスレッドツールキット:見果てぬ夢?)を知っていれば、事前知識としてはそれで十分な気がする。

それにしてもこの本は次の理由から必読書だ。というか、まず何よりも圧倒的におもしろい。

・現在活躍しているコンピュータの基本動作のINとOUTについて解説した、非常に優れた技術解説書(の例としてのAndroid)。

Androidというシステム(これはなんだろう? OSという観点ではLinuxだし、Windowシステムというわけでもないし(でも、Windowシステムと言うべきなんだろうか)、仮想機械というのとは(ユーザーランドを完全支配しているという点で)違うし)のデバイスからウィンドウの表面までの動作の仕組みを解説しているという点でこういって良いだろう。

・しかも実にわかりやすい。

もしかすると編集の方がすごくコミットしているのかも知れないけど、わかっている人ならではのすっ飛ばしが全くない。これが驚きだし、ある点において口惜しい。

・しかも、くどくない

ここが何と言ってもすごい。同じことや、同じコードを何度も出して説明しているのだが、その都度、切り口が異なるので読んでいて、また繰り返しやがったと感じることが全然なく、実にわかりやすい。あまりのわかりやすさに考察してみると、各角度からの説明をある時点で焦点を絞った同じことを中心に行っているので、すさまじく理解しやすいのだ。これはおれには脅威だった。女子高生にもわかるAndroidとかツィットしていて、何ふざけたことを、と思っていたが、書きっぷりはその通りだった。選択と集中だな。

技術書というもののメタな意味で、こんなに参考になるものはいままで読んだことがない。

・バランスとテンポ

半分くらいまで読んだところで、Linuxのデバイスドライバから始まって、イベントが最上位のViewまで運ばれたところまで来ている(IN側だ)。この後ろに描画がくる(OUT側だ)。それに続いてバイトコードが来るが(おもしろそうなので最初にパラ読みした)、デバイスドライバの前に概観を示した章があるから、分量的にきれいに、前奏曲-IN-OUT-コーダに分かれていることになる。信じられない。しかもテンポが良い。すごく良い。

一体、この著者は何者なんだ(というと、ギター片手に世界を放浪しているムムリクさんなわけだが)。正直なところ、この内容をここまで読みやすくしかもおもしろく書くことができるとは読み始めるまでは想像もしていなかった。なんというか、頭脳が明晰な人は、うらやましい。

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

続編ももうすぐ出てくるようです。

Androidを支える技術〈II〉──真のマルチタスクに挑んだモバイルOSの心臓部 (WEB+DB PRESS plus)(有野 和真)


2003|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|

ジェズイットを見習え