アプリ開発者よりのDB勉強会をやりたい、というかやる
コンテンツ
- アプリ開発者がDBを握らなければならない時代
- DBを握るということ
- 勉強会について
アプリ開発者がDBを握らなければならない時代
DBを握るということ
RDBでSQLを書くという選択
比較的アプリ側から直接データを扱うようなアーキテクチャになっているKVSやドキュメント指向なNoSQLに比べ、RDBMSはSQLという抽象的な形でしかデータを扱えないようになっています。これはリレーショナルなデータモデルを扱う為にそうなっています。
SQLを書くには普段アプリを書く時は結構頭の切り替えが必要な為、ORMを使ってオブジェクト指向で扱えるようにするのが主流です*1。
ですが、リレーショナルなデータを上手く扱う為にはその為に作られたSQLで書いた方がいい場面が多いし、ORMはオワコンらしいし、SQLはLLだそうなので、DBを握りたいアプリエンジニアはRDB使うときは、もっとカジュアルに生SQLを使うといいんじゃないかと思います。
RDBMSを使うということは巨人の肩に乗ること
RDBMSは、SQLで欲しいデータを宣言的に書いておくと、中の人であるプランナ/オプティマイザがデータの状況やインデックスの張り方にあわせてよしなに実行計画を組んでくれる仕組みになっています。この仕組み故にどう実行されるかが直接コントロールできなくて扱いづらい面もありますが、僕はこれはまさに巨人の肩に乗るということだと思っています。
プランナ/オプティマイザにはデータの取り扱いに長けた超人達の叡智が存分に詰まっています。恐らく自分で手続き的にコードを書いたとして、RDBMSと同等の最適化を行う自信はありません。例え書けたとしてもSQLを書くのとは比較にならない時間が必要になると思います。
プログラミング言語としてのSQL
さらにSQL自身も言語として大きなポテンシャルを持っており、使いこなせれば特にデータを扱うということにおいては柔軟で強力な表現を行うことができます。若干ネタ気味ですが、SQLのポテンシャルについてはここら辺を見るとその一端を感じることができると思います。*2
Brainf*ck in SQL - ぐるぐる~
SQLで数独を解く - y-kawazの日記
...SQL書きたくなりましたか?
勉強会について
経緯
大体以上のような理由でアプリ開発者むけのカジュアルなDBの勉強会をやりたいなぁと何となく思っていました。http://mysql-casual.org/が発想としては近いのですが、内容をみるとインフラ周りの話題が中心なようです。MySQL Casualに限らず、DBの勉強会というとどうしてもインフラ周りの話題が中心になりがちで、もどかしい思いをしていました。
そんな折、勉強会カンファレンス2011*6に参加したところ、「なければ作ればいいじゃない」という心の声が聞こえてきたので、やることにしました。
DBMS横断的にやりたい
インフラ向けの話題に比べて、アプリ向けの話ならDBMSに依らない話にしやすいんじゃないかと思っています。
もちろん全てのDBMSに通じる話は恐らくそんなになくて、特定のDBMSを前提とした話に必然的になってくるとは思いますが、普段は違うDBMSについて話を聞く機会はあまりないのでそれはそれで聞いてみたいし、さらには異なるDBMSのユーザー間で交流できるような場になれば嬉しいです(主に僕が)。
とりあえずRDBから始めようと思いますが、ゆくゆくはNoSQLな話題も取り入れていきたいです。方向性は模索しつつ色々やっていきたい。
自分はPostgreSQL畑なのでPostgresからの話を提供できますが、某試験のようにDBといいつつ実質はPostgresのようなことにならない為に、他のDBMS使いの方の賛同者を絶賛募集中です。OSS、プロプラも問いません。
さらに個々のDBMSに特化した話にしたい時は派生させて分科会をやればいいと思います。むしろ分科会をやれる位に成長できれば素晴らしいですね。
時期とか人数とか
未定。8月くらいまでにはやりたい。決まったらここで/Twitterで告知します。
*1:と思ってたら、Perl界隈ではid:nekokakさん作のDBIx::SkinnyやTengのように生SQL指向のORMが結構流行っているようです。他の言語だとどうなんでしょう?
*2:自分もSQLでProject Eulerを解くという活動をしているのですが更新が滞っています。すいません。。。
*3:インフラ/サーバーエンジニアをないがしろにするといことではなくて、アプリ開発側からの意見を提供できる、ということ
*4:次のMongoDB勉強会ではその辺を話そうかなぁと思ってます。興味が有る方はどうぞ。(満席ですが、、)
*5:もちろんNoSQLも
*6:非常に有意義かつ楽しいイベントでした!ありがとうございました!