■いアタマを●くする

 24日刊行の『WEB+DB PRESS Vol.44』に「SQLアタマ養成講座」が第2特集として掲載されました。
 WDP誌の読者へはお初お目にかかることもあって、まずは手堅く分岐(CASE式)とループ(相関サブクエリ、OLAP関数)についての解説から入ることにしました。

 このあたりの基礎固めにそれほど奇抜な内容はないので、昔から私のテキストを読んでいただいている古株の読者には見知った話でしょうが、ま、そこはご海容願いましょう。普遍性を備えているからこその基礎なので、この辺が同じ話になるのはしょうがない。それでも、今回はなるべく「手続き型言語プログラマの視点から初めて集合指向の世界を見た場合」を想定して、相互の世界の架橋をするような解説の切り口を試みました。昔の私の書いたものは真正面から集合だの述語だといった概念を振り回していたので、これらの概念にそもそもなじみの薄いエンジニアにはとっつきづらかったのですが(そういう声はたびたび聞いた)、最近は何とか教育効果を高めようと試行錯誤中。最近、論理学の定評ある教科書で有名な東大の清水義夫さんも「集合って概念は分かりずらいから関数をキーにした方が分かりやすいよね」と近著に書いておられるのを見つけて我が意を得ました。引用すると、こんな文章。

 20世紀の前半では、数学はそのどの分野についても、最終的には集合論にもとづいている、という見方が常識となっており、集合概念の基本性が関心のまとでもあった。恐らくこれは、いわゆる公理的集合論1920年代、1930年代に次々と登場し、集合論も大変充実した内容をもつに至ったことが、その背景にあるのかもしれない。
 しかし20世紀も中ごろになると、集合概念に代わって関数概念を基本的なものとして、ものごとを捉え表現していこうとする考え方が、数学の一部に現れてくる。
 ・・・・・・実際、数学上の諸現象をはじめ、他の現象についても、それらのうちに見出せる作用連関(i.e. 作用機序)に注目し、それを関数(i.e. 作用)概念を中心にして表現していくことは、諸現象の捉え方、表現の仕方として、諸現象に対して直接的であり、またごく自然でもあるといえる。(「はじめに」『圏論による論理学』)


 特集の第3章で、GROUP BY(とPARTITION BY)をクローズアップできたのも嬉しかった。『指南書』ではHAVING句の復権に力を入れるあまり(2章も割いてしまった)、対になる同じぐらい重要なGROUP BY句の扱いをおろそかにしてしまったので、早いうちに取り上げる機会をいただけて助かりました。

 今後の予定についてちょっとお話しておくと、どうやら『Web+DB Press』誌で連載させていただける模様。今回の特集がスカったら「ご縁がありませんでしたな」となってもおかしくないと思っていたのですが、どうやら次のチャンスをいただけるようでラッキー。2ヶ月に一度というペースも余裕があってちょうどいいあんばいです。

 連載のコンセプトなどは今度の打ち合わせで詰めることになるでしょうが、おそらくいつもどおり、SQLの強力さと面白さをアピールする「いやあSQLって本当に素晴らしい言語ですね」路線に近いものではないでしょうか(他に引き出しがないという台所事情はもちろん口外まかりならぬ)。こないだブログで取り上げた「更新」なんかもテーマとして盛り込めると面白くなりそうです。DBエンジニアならびに今回の特集を読んで「データベースとSQLって、ちょっと面白いかも」と感じてもらえたプログラマの皆さん、どうぞご贔屓に。

 そういえば、「■いアタマを●くする」というキャッチコピーのゲームがあるけど、これまさに手続き型から集合指向への発想の切り替えを表現するのにもピッタリだということに最近気付きました。四角(手続きのボックス)から円(集合)へ、だものね。