アスキーメディアワークス鈴木様より献本御礼。

待望のLuaバイブルがついに邦訳。

以下に該当する方は必読。

  1. Luaを本格的に使(う|いたい)
  2. プログラミング言語を設計(する|したい)

本書「Programming in Lua:プログラミング言語Lua公式解説書」は、Luaの生みの親自身によるプログラミング言語Luaの解説書+Lua 5.1完全リファレンス。Luaに関する書籍としてはすでに「入門Luaプログラミング」が存在し、入門とはいえLuaが小さな言語ということもあってそれでもかなり事足りるのではあるが、「Luaってどんな」はそれでよくとも、「Luaとは何か」を完全に知りたいともなると、さすがに同書では物足りない。

目次
第1部 言語
第01章 最初の一歩
第02章 型と値
第03章 式
第04章 ステートメント
第05章 関数
第06章 さらに関数について
第07章 イテレータとジェネリックfor
第08章 コンパイル、実行、エラー
第09章 コルーチン
第10章 完全なサンプル
第2部 テーブルとオブジェクト
第11章 データ構造
第12章 データファイルと永続化
第13章 メタテーブルとメタメソッド
第14章 環境
第15章 モジュールとパッケージ
第16章 オブジェクト指向プログラミング
第17章 弱いテーブル
第3部 標準ライブラリ
第18章 数学ライブラリ
第19章 テーブルライブラリ
第20章 文字列ライブラリ
第21章 I/Oライブラリ
第22章 OSライブラリ
第23章 デバッグライブラリ
第4部 C API
第24章 C APIの概要
第25章 アプリケーションの拡張
第26章 LuaからCを呼び出す
第27章 C関数を記述するときに使えるテクニック
第28章 Cのユーザー定義型
第29章 リソース管理
第30章 スレッドとステート
第31章 スレッドとステート
第5部 付録:Luaリファレンスマニュアル
付録A はじめに
付録B 言語
付録C アプリケーションプログラミングインターフェイス
付録D 補助ライブラリ
付録E 標準ライブラリ
付録F スタンドアローンのLua
付録G 以前のバージョンとの非互換性情報
付録H Luaの構文

本書は500ページ弱と、プログラミング言語のバイブルとしてはかなりコンパクトなのだが、驚くべきなのは、本書が実は「合冊」であること。"Programming in Lua"の全訳のみならず、付録としてLua 5.1 Reference Manualも全訳して収容してある。本書はその意味で、現時点で地球に存在する最も完璧なLua本ということになるのだ。

しかし、最も驚くべきなのは、本書が単著であることかも知れない。言語の父自身が著者名として登場するバイブルは、たいてい共著となっている。K&Rにしてもそうだし、ラクダ本もそうだ。モダンLL言語というのは、言語そのものもバイブルも一人で書き上げるにはあまりに大きいのだ。

小さくともモダンLL言語に要求される「機能」をフルセットで備えた言語であることは、「入門Luaプログラミング」でも解説したとおりであるが、それを言語の父自ら最初から最後まで語ったという意味で本書は実に貴重ではないか。

しかしこうしてフルセットのバイブルを読んでみると、賞賛と同時に不満も出てくる。本書に対してではない。Luaという言語に対してだ。なぜ小さな言語なのに、簡潔な語彙を選ばなかったのだろう。functionは他にもあるのでまだ目をつぶる、setmetatableだのloadstringというのはやけに長い。正規表現相当のパターンも、エスケープが\ではなく%と独自なのはなぜだろう。{}がテーブル定義のみなのでブロックを閉じるのにendしかないのは、rubyのdo - end{}で置き換えられるのにdefではそうは行かないのよりもむしろすっきり割り切っていて好きだが、しかしtable.sort(t, function(a, b) return b - a end)のように、括弧のなかにend があるのはかなり違和感あるなあ、などなど。

しかしそれは、Luaと私のつきあいが長くなってきた証拠でもある。ある程度付き合いがないと不満というものは出てこないものなのだから。「オレならこうする」のようなことをぶつくさ良いながら読むとずいぶんと楽しい。

Luaは、モダンLL言語の最小公分母。LuaというMECEな言語のMECEなバイブルは、他の言語エンスーも得るものはあまりに大きい。プログラミングの初心者から中級者に移るあたりでぜひとも味わっておきたい。

Dan the Polyglot