2008年07月30日

『実践Common Lisp』



/

“実践”である。しかも著者のPeter Seibelによれば“すごいソフトウェアを書く方法をお見せ”してくれるらしい。

512ページというボリュームを持つ本書は、1958年に考案された「Lisp」の血筋と伝統を持ち、かつ甘んじることなく最先端を追う言語「Common Lisp」を、みっちりと説明している。

前半部分は、一般的な言語書籍とそれほどスタイルは変わらない。レコード、S式、関数、マクロ、コレクション、リスト、ファイルI/O、オブジェクト指向、FORMAT、例外、パッケージ、シンボル、LOOP、とCommon Lispの言語構造が次々と紹介される。これらはダラダラと続くのではなく、『プログラミングRuby』と同様に説明の合間には随時コードスニペットが差し込まれており、説明内容をすぐに試せるように配慮されている。

実践編としては、第9章でマクロなどの知識のおさらいとしてユニットテストの実装、第15章でファイルI/Oのおさらいとファイルパス取り扱いの手法としてパスネームライブラリの構築を行う。そして「そろそろ本気を出そうか」とばかりに第23章からは怒涛の実践が続く。ベイジアンスパムフィルタ、バイナリファイルデータの解析、MP3音楽ファイルのID3タグパーサ、AllegroServeによるサーバーサイドWebプログラミング、MP3音楽データベース構築、Shoutcastストリーミングサービス、Webプレイリスト、HTML生成ライブラリ実装。Common Lispの応用力の広さに驚かされる。

付録には、邦書独自の内容として、日本語処理固有のエンコーディング変換の説明およびライブラリの提供、本書語句の訳出に利用された訳語一覧が用意されている。短いながらも利便性は高いだろう。

本書の環境は、Common Lisp(SBCL(Steel Bank Common Lisp)など)、Emacs、SLIME(Superior Lisp Interaction Mode for Emacs)、ASDF(Another System Definition Facility)といったものを含めたLisp in a Boxというセットを推奨しており、現時点ではOS X 10.4(PPC/Intel)、GNU/Linux x86、Windows向けのものが提供されている。もちろん、たとえばDebian GNU/Linuxであれば、「aptitude install sbcl emacs slime cl-asdf」という感じで同等のものを構成できる。

なお、装丁の絵はカンディンスキーの「白いジグザグ形」をあしらってアートな雰囲気だが、カバーを外すと今度は洋書っぽいシンプルクールな仕立てになっているので、ご購入された方はぜひチェックを(いずれも日本独自)。