『指南書』・『SQLパズル』見本誌届く

 増刷のかかった『SQL徹底指南書』(4刷)と『SQLパズル 第2版』(2刷)の見本誌が翔泳社から届いたので、ためつすがめつ眺めています。轟木亜紀子さんによる『SQLパズル』のピース柄の絵が、かわいくて私のお気に入りです。

 どちらも2 〜 3 年ぐらい前の仕事なのですが、なんだか随分昔のような気がします。特に『SQLパズル』は、久々に読み返していると「いい本だなあ」と馬鹿みたいな感想を持ってため息をついてしまう。原著が名作なのだから当然の感想ですが、多分、初めて出版という仕事に携わった書籍だったので、色々な思い出と結びついていることもあるのでしょう。もっとも、浮かんでくる思い出の大半は、General Manko という人名が出てきて「やばいよー、これまともに訳せませんよ。どうしましょー」と編集の市古さんと笑いながら話していた、というようなしょうもないものばっかだけど・・・。

 前書きを読んでいたら、けっこういいことを書いていたので(もう何書いたか忘れていた)、ここに引用します。本人が書いたものなので転載してもOKでしょう。

 まずは『SQLパズル』の前書きから。

 本書は、米国データベース界の重鎮の1人であるジョー・セルコが著した有名なパズルブックである。恐らく世界で最も広く読まれているSQL問題集の1冊と言ってよいだろうが、初版の邦訳が出版されたのが1997年だから、日本ではほぼ10年ぶり、久々の復活ということになる。初版の刊行以来、SQLとデータベースの機能も目覚しい拡張を遂げ、SQL:1999とSQL:2003という2度の標準SQLの改訂も行われたが、本書にも、OLAP関数や共通表式に代表されるこれら新機能を積極的に取り入れた解法が多く追加されている。


 本書の第1の魅力は、何と言っても具体的なケーススタディを通じて、実践的なSQLのテクニックを知り、その考え方を身に付けられることだろう。行列変換や結果のフォーマッティング、複雑な条件を用いる集約や結合、集合演算の応用など、本書に収められた事例は実に多彩で、そのほとんどが、世界中のDBエンジニアたちが日々の業務で直面した問題をWebに投稿したり、セルコのところへ持ち込んで助言を求めたものばかりである。そして、それに対するセルコら熟練したエンジニアたちから寄せられた解決策も―― よくもまあ、これだけいろいろ考えつくもの、と少し呆れてしまうぐらい――多彩で創造的だ。そう、本書の第2の魅力は、SQLという言語の非常に豊かな可能性を発見できることである。きっと、皆さんも本書を読み進めるうちに「そんな考え方があるのか……」とか「そんなことがSQLでできるのか……」という呟きを、何度となく口にすることになるはずだ。それはまた、訳者自身が持った感想でもある。「煌くようなアイデアの宝庫」とはこのような本を指して呼ぶに違いない、と読み返すたびに思ったものだった。


 ところで、冒頭でこの本は問題集であると述べたがこれには2つの含意がある。1つは「対になる教科書の存在」だ。これに相当するのが、セルコのもう1冊のベストセラー『プログラマのためのSQL 第2版』(ピアソン・エデュケーション刊, 2001)である。本書とも扱っている問題が一部重複しているうえ、本書がとにかくたくさんの問題と解答を詰め込もうとして、ややもすると解説不足に陥る傾向があるのに対し、非常に詳細かつ網羅的な解説を得ることができる。併読すると読者の理解を助けてくれるに違いない。

もう1つの意味は、「この本は決して『クックブック』ではない」ということだ。パズルという親しみやすい形式をとっているので勘違いしやすいのだが、この本をクックブックだと思って読むと頭がクラクラするだけで終わってしまうだろう。確かに、非常に豊富な実例を含む本だから、自分が今まさに直面していることと類似の問題を見つけられることもあるだろうし、コードをコピーすることで急場をしのげることもあるだろう。それはそれでこの本の効用の1つと言える。しかし、そうした目的のためにはもっと適した書籍が多くあるし、本書をそれだけのために使うのは、いかにももったいない。


 本書は、その内容を理解するために一定の努力を読者に強いてくるため、多くの読者にとって、寝転んでスラスラ読み進められるタイプの本ではないだろう。何度も立ち止まり、実際に手を動かしてコードを書き、結果を確認し、自分でSQL文をカスタマイズして、また実行してようやく1つ納得する―― そういう地道なプロセスの繰り返しを抜きにして、本書を理解することは非常に難しい(これは一部には、極めて多くのことを凝縮したロジックで実現するSQLの性質にもよるのだが)。少し格好をつけて言えば、本書は「読者の代わりに考えるのではなく、読者を自ら考えるように仕向ける」本だということだ。名著とは、きっと多かれ少なかれそういう性質を備えているものだろう。


 これとよく似た意味において、本書は「パズルのためのパズル」でもない。中には「パズル66:数独パズル」や「パズル75:もう1軒行こう」のように、純然たるパズルから問題を借りてきているものもあるが、それらはいわば一種の“つかみ”のようなもので、読者をそうしたパズルの達人にすることが目的というわけではない。セルコの狙いは、あくまで読者にSQLという言語の本質を理解してもらうことにある。


 少し話が長くなったが、ともあれ、本書が大変に面白く、かつ有用であることは疑いを入れない。本書がより多くのDBエンジニアの方に読まれ、セルコの知見が日本のデータベース界にも浸透していくことを訳者も切に願っている。そのことに幾ばくかの貢献ができたのなら、訳者としてこれに勝る喜びはない。

 昔の私って、ずいぶん真面目だったんですね。
 なお、本書を読まれる際は以下のサポートページも参考にどうぞ。