Binary Hacks Rebootedを読んだ

Binary Hacks Rebootという本を著者のかたから恵贈いただいたのでレビューを書きます。著者や寄稿者のうちの何人かは知り合いだったり、本が恵贈いただいたものだったりでバイアスがかかっている可能性がありますが、ご容赦ください。

どんな本か

本書はいわゆる低レイヤと呼ばれるバイナリがいっぱい出てくるような技術について小ネタを山盛り、Hacksなので89(ハック)個、詰め込んだ本です。

扱う分野は以下のように多岐にわたっています。

  • ELF(Linuxなどで使われる実行ファイル、共有ライブラリを保存するファイルの形式)
  • OS、とくにLinuxについてのもの
  • コンテナ技術
  • デバッガ・トレーサ
  • セキュリティ
  • 数値表現とデータ処理
  • 言語処理系
  • その他

読むと良さそうな人

このコンテンツに魅力を感じるかたがたは、すでにある程度知識があっても、どこかには「知らなかった!」となるようなハックがあると思うので、読むと良いと思いました。わたしもOSカーネルの開発を過去に10年以上やっていましたが、全く知らなかったこと、名前だけは知っていたが詳細は知らなかったものがたくさんあり、よい読後感がありました。

興味があるもののあんまり前提知識がない、というかたは、読むのにかなりの根気がいるとは思いますが、サンプルコードを参照しつつ、関連用語の意味を調査しつつ読めば、時間はかかるものの、なんとか読めるとは思います。読後には一皮むけていることでしょう。

サンプルコードが主にアセンブリ言語とC(ごく一部、Rustもある)なので、これら言語を読み書きしたことがないかたは面食らうと思います。最初は文書だけ読んで、あとから掘り下げてみたいと思った場合は気合を切れて調査をしつつコードを読むというやり方でもいいと思います。

前作Bainry Hacksとの関係

本書は20年近く前に出版されたBinary Hacksという本の続編です。

前作を読んだ人に本書を読む価値があるのかという問いへの、過去に読んだことがある私の意見は、「読む価値は十分にある」です。

第一に、前作と内容にほとんど重複がありません。コンセプトが同じであるまったく別の本と認識すると良いと思います。第二にカバーする範囲がかなり広がっています。前作に比べて本作は悪意のあるユーザに攻撃されるケースを想定した技術が数多く紹介されています。とくに新規追加されたセキュリティの章は(当然ながら)そのようなハックの宝庫です。低レイヤの世界で生きてきたもののセキュリティは強くないというかたは読んでみると新たな発見があると思います。

おすすめの読みかた

かなり分厚い本で、合計600ページを超えます。それぞれのHackの難易度もそれなりに高いです。このため、最初から最後までサンプルコードを実行しながら精読するのはかなり骨が折れるでしょう。そういう読みかたをすると高い確率で、途中で挫折するのではないかと思います。

本書は前から順番に読むのではなく、全体をぺらぺらとめくってみて、興味のありそうなところ、理解できそうなハックからつまみ読みすると気楽でいいかなと思います。個々のハックについても、上述したように最初から完全理解を狙うのではなく、最初は斜め読みして、さらに興味が出たら後から精読するというのがいいと思います。

業務での実用性

職業IT技術者にとっての実用性はどうでしょうか。これについては「人による」という回答になります。読み手が置かれた状況によって何が役立つかは変わってきます。たとえば私は現在物理データセンター上に構築されたストレージシステムの開発という、比較的低レイヤの仕事をしています。私にとっては主にOS、コンテナ技術、デバッガ・トレーサ、セキュリティあたりの章が役立つでしょう。しかしながら、業務としてそんなことをしている人は全体から見ると少数派だと思います。

正直なところ、本書に書かれているハックを理解しても直接すぐに役立つという人は少ないのではないかと推測していますが、それでも本書によってコンピュータ技術のうち、OSやライブラリ、ミドルウェアを介さない、生に近いレイヤのものを理解することは、きっと長いコンピュータ技術者人生のどこかで何かの形で役立つと思います。業務での実用性だけが技術書の価値ではありません。

一押しHack

わたしが本書を読んで一番気に入ったハックはHack19,20,21のDWARFについてのものです。あんまり詳しく書くとネタバレになってしまうので、概要だけ説明します。

DWARFというのはプログラムのデバッグ情報を保存するためのデータフォーマットです。DWARF形式のファイルの中のバイトコードをDWARF上のVM(インタプリタと言ってもいいかもしれません)上で動かせるという興味深い機能があります。これらのHacksでは、DWARFを設計者の意図通り使っていれば絶対やらないようなことをDWARFのVM上でたくさんしています。

これらHackを見た後の「そう来たか」という面白度や「何故これをやろうとしたのか」という困惑度は極めて高かったです。実用性が無い度も本書の中ではトップクラスですが、そんなのはいいんです。前述したように技術書は実用性だけあればいいというものではないです。「面白い!」と感じて、「わたしもなんかやりたい!」と好奇心を刺激してくれるコンテンツも素晴らしいものだと思います。

おわりに

本書そのものについての感想ではなく、おまけとして、ちょっとメタな話をします。

Binary HacksとBinary Hacks Rebootedでは著者陣が全員入れ替わっています。前作の一部のかたが今作で寄稿者になっていたりというケースはありますが、それでもほとんどのメンバーは入れ替わっているといってよいでしょう。

低レイヤ技術というのはマイナーな分野ですが、前作から20年近く経った今でも興味を持っている人や生業にしている人がいて、さらにまったく著者陣を入れ替えても本が書けるほどの人数がまだいるという事実を見て、一人の低レイヤ愛好家として非常にうれしく思いました。

いい本を見せてもらいました。著者、寄稿者のかたがたに感謝いたします。