読者です 読者をやめる 読者になる 読者になる

道産子エンジニア

毎週好きなこと書きます。

これからも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時間
オススメ度:★☆☆☆☆

物を表すということは”気”を吐き出すこと / 「ミステリーの書き方」を読んだ。

4月ラストの記事と思っていたら5月になっていた。帰省してみるとインターネットを使える環境にくるのも一苦労だ。嫌いではないのだけど。 予定がかぶると週一でブログ書くこともできないのかと、自分の継続力のなさに辟易としてしまう…
勝間和代のいう平準化をもっとスマートに続けれたらいいのに。

 前の記事で小説とプログラムについての伏線を張っていたのだけど、最近読んでいたこの本を紹介する。

ミステリーの書き方 (幻冬舎文庫)

ミステリーの書き方 (幻冬舎文庫)

  • 作者: 日本推理作家協会編著,赤川次郎,東直己,阿刀田高,我孫子武丸,綾辻行人,有栖川有栖,五十嵐貴久,伊坂幸太郎,石田衣良,岩井志麻子,逢坂剛,大沢在昌,乙一,折原一,恩田陸,垣根涼介,香納諒一,神埼京介,貴志祐介,北方謙三,北村薫,北森鴻,黒川博行,小池真理子,今野敏,柴田よしき,朱川湊人,真保裕一,柄刀一,天童荒太,二階堂黎人,楡周平,野沢尚,法月綸太郎,馳星周,花村萬月,東野圭吾,福井晴敏,船戸与一,宮部みゆき,森村誠一,山田正紀,横山秀夫
  • 出版社/メーカー: 幻冬舎
  • 発売日: 2015/10/08
  • メディア: Kindle版
  • この商品を含むブログ (10件) を見る
  別に小説を書こうと思って読んでたわけではなくて、ものを書くことへの興味がこの本にも向いただけだと思う。
(そういった気持ちがないと言えば嘘になるが、小説を書くと言うためにはあまりにも読書量が足りないだろう)

ミステリーに限らず小説の書き方ってすごく学びが多い。論文やレポートなど論理的に文章を書くことは、ある程度体系が整っているので真似やすい。人に伝えやすく書くのはテンプレートがあり、人はそれを理解しやすい。けれど、読んでいて美しいと感じる文章は、書くことへ熱心に向き合うことでしか手には入らない技術だ。  そういう広い意味での 「書くことの技術」 は、プログラムだろうが生きるのではというのが持論である。

この本は面白くて、多くの大物作家たちに「ミステリー小説」の書き方についての短編を自由に書いてもらい、まとめたものだ。それぞれの作家が何を大切に思って執筆しているのかを知れて、読み進めるごとに「書くことのセオリー」など存在せず、時には正反対のことを書いている作家さえいることに驚くだろう。

物を表すということは"気"を吐き出すこと

タイトルにも書いたけどこの本の中で一番刺さった言葉だった。これに気づかせてもらえただけでもこの本を読んでよかったと思えるほどに。 この言葉は作家福井晴敏の節で書かれていたことだった。

物を表すということは、”気”を吐き出すことでもあります。メールやネットで”気”を吐き出しすぎると、それで文字通り気が済んでしまって、せっかくの才能を浪費する結果になりかねません。どんなことでも、思いの丈は作品のために取っておくべきです。

メールやブログを始め、TwitterやFacebookなども 自分の発言には自分の気が宿る。 Twitterを使っていてそんなことを考えている人はほとんどいないと思うが、妙に自分には刺さった。別に特定の誰かに対して何か言いたいわけではないのだが、自分を顧みて思うのはインターネットに気軽に気を吐き出しすぎているかもしれないということだ。それは簡単な満足を得るためにやっているようで、なんだかとても勿体無いと思ってしまうのだ。

前川が「気」とか言い出していよいよやべぇかもなと思われるかもしれないが、これを読んでいただいている畸人の読者(失礼)の皆様も考えてみてほしい。 Twitterに何気なく思ったことを吐き出して、満足してしまっていないだろうか。自分がスクロールして見れる3000件の投稿を読み返したり、研究などではなくつぶやきを活用して自分のためにしていることはあるだろうか。僕はない。何を感じて、何を思って、何を書いたかすらも忘れてしまっている。

ブログは少し違い、いい部分もあると思う。 あのとき自分はこんなことを考えていたのだなぁ、こんな風に思っていたときもあったなぁと思い返すこともあれば、人からこの記事がよかったと再読させられることもあるからだ。マイクロブログと呼ばれるTwitterなどは、細かくなりすぎていて人が振り返るのに向いていない。

ブログは自分の作品であり、自分の軌跡になる。

そう思うと、簡単に吐き出してしまっていてはいざ何かを書こうと思ってもうまくまとめられなかったり、文章に深みがなくなってしまうと思う。あくまで個人的な感想だが。

質より量を出せとはよくいうものだが、量の中の一つ一つの質が悪すぎては意味がないだろう。最近流行っている分報(times~~みたいな)もしかりだと思う。インターネットは人それぞれだし、人工物の最たるものであるが、使うのが人間である限り自然界のあり方と生態系は変わらない。もちろん、会社や社会に対して自分を理解してもらうために、ブランディングの一環として戦略的に使うのはありだと思うし、うまく活用できている人を見るとすごいなと思う。が、今一度自分の気の吐き出し方について考えてみることにしている。

本に興味を持ってもらうために

自分のブログを読み返してみると、嫌というほど読みにくいと感じるが、それがわかるだけでも成長しているかもしれない。というのも、これまでの記事は触れている話題が多すぎて、読んでいて疲れる。アニメや漫画のように世界観が統一されていない短い文章の中で、これだけの情報を読むのは疲れるだろうなと思う。これからは文脈を壊さない程度に、過去の記事のトピックを分割していこうと思う。そして、今回もこの本について一番伝えたいのは上のことだし、それ以上は本を読んだ人が思うことであって、俺が適当に書いても面白くない。なのであとは自分が勉強になったり、何か感じた部分のキーワードを残しておく。

  • 小説と人称について、作家たちにとっては永遠のテーマでもある
  • 作家はみな、ネタをメモをしている
  • 小説における「会話」って大切
  • 主人公と弱点
  • 比喩は劇薬
  • 逆張りの余得、半ば不可視であることの恩恵、不良の善行
  • 10倍論

ここだけみてもわからないと思うけれども、読むならこの辺のキーワードが出てきたときに思い返してほしい。


また、いい本に出会えたなぁ。(執筆、二時間)

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