気まぐれメモランダム / でたらめフィードバック

Date, C.J.『標準SQL 改訂第2版 JIS/ANSI/ISO準拠』 - ソフトウェア技術書温故知新(その3)

公開:

ソフトウェア技術書温故知新、第三回は1990年に邦訳が刊行されたC.J.デイト『標準SQL 改訂第2版 JIS/ANSI/ISO準拠』(トッパン)。

https://www.amazon.co.jp/標準SQL―JIS-ANSI-ISO準拠-アジソン-ウェスレイ・トッパン情報科学シリーズ/dp/4810180190

ああ憧れの第四世代言語(4GL)……と言う表現が適切だったのかはいまとなってはよくわかりませんが、Webアプリケーション普及前、クライアント / サーバーシステムのクライアントとしてWindowsマシンが用いられるようになった時代のほんの一時期、GUIをドラッグ&ドロップで簡単に作成できるRAD(Rapid Application Development)と呼ばれるプログラミング言語・環境が普及の兆しを見せたことがありました。Windows用としてはSQL WindowsやPower Builderといったあたりが有名どころと記憶していますが、Delphiや.NET化以前のVisual Basicもその文脈で使われた側面がありました。

私もどういうわけかSQL Windowsを利用した業務システム開発に携わったことがあるのですが、このときこまったのがデータベースへのアクセス。クライアント / サーバシステムの開発ははじめて、関係データベース(RDB)のことなど何も知らない人間でもRADなら楽勝――などといううまい話が転がっているわけがありません。ぶっちゃけRapidなのはあくまでもユーザーインターフェースまわりだけ、RDBアクセスは普通にSQLのコーディングが必要。看板に偽りありとはまさにこのこと。
 当時はSQLって何?というレベルだったので一から勉強しなければなりませんでした。しかたがないので本屋に行って、当時は二冊くらいしかなかった解説書の中から選んだのがこの本。いや長い前振りだったな。

しかしこちらを選んだのは大正解でした。著者は実装ではなくあくまで規格をその問題点まで含めて解説し、一方監訳者(のちにJIS X 0208の第四次規格(いわゆる97JIS)改定を主導する芝野耕司氏!)は必要に応じて著者の批判に対して注で反論または補足する。率直に言って初読時は理解できない箇所も多かったのですが、規格についての深い理解に根ざした著者と監訳者との紙上での意見交換には知的興奮を覚えたものです。キーの概念や結合、副問い合わせなどSELECT文がきちんと理解できたのもこの本のおかげ。

一方更新系はカーソル操作の解説が優先され、当時としても実情とはあっていませんでした。このあたりは対話型の処理がそのままプログラミングインターフェースとしても使われ続けてしまったSQLの不幸をあらわしているとも言えるでしょう。ただ対話型=テキストを介した処理がSQLの幅広い利用を可能とした面もあることはまちがいありません。本書は埋め込みSQLに一章を割いていますが、SQLが言語構文と一体化したインターフェースでしか利用できなかったとしたら実務上の要請に応え続けて発展するのはむずかしかったと思われます。

同じことは規格と実装の乖離についても言えます。私の理解するかぎりではSQLの規格を完全と言えるほどに実装した製品は存在しませんし、規格の取りあつかいも製品によっておおきく異なりますが、実用的なデータベースの種類として競合がすくなく(後年NoSQLが登場しますが、スコープがちょっと違いますし)機能的にも充分であれば規格に適合させるインセンティブもモチベーションもなくて当然です(むしろベンダーロックインに有利に働く)。中途半端な規格準拠もまたSQLとその実装の普及に一役買ったのかもしれません……皮肉な話ですが。

本書はその後原書も邦訳も版を重ね、そのたびにおおきく厚くなって手軽に紐解くわけにはいかなくなりました。芝野氏も監訳から離れてしまいましたが、SQLを規格面から批判的に理解するにあたっては他に類書はないのではないかと思います。徹底的に実用的にRDBを利用するのもいいですが、こういった本を読むと世界が広がるかもしれませんよ。

余談ですが最近読んだ『JavaScriptで学ぶ関数型プログラミング』は著者の本を二冊も(そのうちの一冊は必読書として!)紹介していてあっけに取られました。私が読んだのは関係代数の本ではなくて関数型プログラミングの本だったはずなのですが……

関連コンテンツ

Pick up work

最近のエントリ

アーカイブ

ブログ情報