胸が躍る,とはこのことだろうか。先ごろ出版された「BINARY HACKS―ハッカー秘伝のテクニック100選」(高林哲,鵜飼文敏,佐藤祐介,浜地慎一郎,首藤一幸著,オライリー・ジャパン刊)を読んだ感想だ。この本は,多くのプログラマが通常さわることの少ない「バイナリ(=機械語,アセンブラ,コンパイラ)」など低レイヤー・プログラミングを“いじる”テクニック(バイナリ・ハック)を紹介する本だ。

 バッファ・オーバーフローを検出する,スレッド・セーフなプログラムを書く,メモリー・リークを検出する,プログラムやシステムコールのトレース方法,プログラム起動の高速化や高速化のためのプロファイル取得方法,CとC++のプログラムをリンクする時の注意点といった実用上重要なテクニックが多数解説されている。しかし「glibcを使わないで Hello worldを書く」,「自己書き換えでプログラムの動作を変える」,「オブジェクト・ファイルを自力でロードする」,「gdbで実行中のプロセスを操る」といった,一見何に使うのかわからないテクニックもある。で,どうも実用性が薄いテクニックのほうが,著者たちの語り口もなぜか生き生きとしているように感じられる。

 それもそのはず,この本が作られたきっかけは昨年行われた「Binary 2.0」というカンファレンスにあったという。お察しの通り,Binary 2.0は,Web 2.0に対抗して作られた言葉だ。何が2.0なのか,その定義を知る者は誰もいないそうだが,100人以上が集まり,10人以上のスピーカーが自慢のバイナリ・ハックのテクニックを披露したという。そのスピーカーたちが書き下ろしたのがこの「BINARY HACKS」だ。

 バイナリと言えば「30日でできる!OS自作入門」(川合秀実著,毎日コミュニケーションズ刊)という本も大きな反響を呼んでいる。名前の通り,オペレーティング・システムを作る手順を30日のカリキュラムにまとめた本だ。OSなので当然バイナリをいじる。ヨーグルトの種のごとく,単に起動するだけのブートローダーのイメージが付属CD-ROMに入っており,最初はアセンブラでそれを拡張していく。環境を整えていくとC言語でプログラムが書けるようになっていく。

 「30日でできるOS自作入門」は6刷を重ね,本当に30日でOSが出来上がるのかを試してみるBlogを公開する読者や,この本をもとに思い思いに改造したOSをオープンソースとして公開する読者のグループ「はりぼて友の会」が結成されたりと,書籍にとどまらない広がりを見せているようだ。

 それにしてもバイナリの何がこうも人を惹きつけるのだろう。普段は隠されている最深部に触れ,それを操るときめきだろうか。パソコンの部品を買い揃えて自作することに通じる楽しさかもしれない。

 バイナリの世界への肩の凝らない入門書としては「コンピュータはなぜ動くのか」(矢沢久雄著,日経BP社刊)をお勧めしたい。矢沢氏の語り口につられて読んでいるうちに,アセンブラやCPUの原理がわかってしまう。IC工作を通じてコンピュータの基盤である論理演算の仕組みも理解できる。

 思わず面白さばかりを強調してしまったが,バイナリは単なるホビーではなく,現実に大きな価値と危険を生み出す技術でもある。

 例えば携帯電話やデジタル家電で,ファイル・サイズを削減して1台あたり100円のICチップを削減できたとすれば,100万台では1億円のコストを削減できることになる。プログラムを高速化すれば競合製品に対する優位性も高まり,売れ行きに大きく影響する。ファイル・サイズや高速化は「BINARY HACKS」でも数多く紹介されているバイナリ・ハックの常套テクニックである。

 その一方で,セキュリティ・ホールを突いて感染するウイルスやワームは,コンパイラやアセンブラの挙動を熟知していなければ作れない。それを防ぐ技術もしかりだ。興味のある方は「ハッカー・プログラミング大全」(UNYUN著,データハウス刊)などをお読みいただきたい。

 バイナリは,今までも,そしてこれからもIT産業の根幹を支える重要な技術だ。今回紹介した書籍などでその楽しさに触れ,興味を持ってくれる若手技術者が増えていって欲しい。ワンボードマイコン組み立てキットTK-80でコンピュータと出会い,8080の機械語で初めてのプログラムを書いた記者の願いである。

■変更履歴
本文中に誤植がありました。お詫びして訂正します。[2006/11/10 10:32]