2012-09-15
Kappa の飼い方(Kappa という ORM の話) その1 開発の背景のお話
こんにちはこんにちは。 もうすぐ「Perl のお祭り」こと YAPC::Asiaですね!皆様、見る方も発表する方も準備は万全でしょうか?
(私?お察しください。。。)
ここで宣伝。Perl と SQL のいろいろ というタイトルでお話させていただきます。裏番組がどちらも大変なビッグネームなので恐縮なのですが、初中級者くらい向けに Perl と SQL にまつわる話を させていただこうと思っております。
(※ここまでテンプレ)
さて、YAPC とは今回の話は関係なくて、(すげー反響があったら関係するかもしれんですが、それは無いでしょうw)
私、Kappa という ORM を書いてます。今回はそのお話です。
目次
- その1 開発の背景のお話
- その2 インストールとかのお話
- その3 基本操作
- その4 select 系いろいろ
- その5 Row オブジェクトの基本
- その6 Row オブジェクトのカスタマイズ
- その7 テーブルクラスとそのカスタマイズ
- その8 雑多な話
- その9 SQL をテーブルクラスに置く
背景
はてダにいろいろ書いてるので、僕のストーカーだったら良く分かると思うのですが、そんな人は多分いないので(居たら居たで嫌だしw)、順を追って説明しましょう。
今見返したら、これ見ても全然わかんねーやw。えーっとワタクシ、業務系アプリで、ジャンルでいうと、製造実行システム(MES)というやつの、バックエンド作ってます。 もうちょいわかりやすく言うと、Web-API 作ったり、DB のメンテしたり、DB の設計したりそんなことしてます。
で、
にもちょこっと書いてるのですが、最初にあった WEB-API のフレームワーク(内製なんだけど僕が作ったんじゃなくて、どっかの案件であるていど実績があったやつっぽい。 今となっては僕が色々手を入れて別物になってますがね。。。)が、クライアントのリクエストに応じてストアドプロシージャを実行する仕組みになってました。
で、ストアドってまあ良い面もあるのでしょうけど、少なくとも僕のユースケースではダメダメな面がいろいろとありました。
と、言うわけで、「生の SQL がある程度うまく扱える仕組みがあるといいなー」ということを、1年前くらいから考え始めました。
で、いろいろ悩んで、テーブルデータゲートウェイを自作してみたり、Teng 使ってみたりしたのですが…
どうもウチの仕組みとマッチしなかった。(念のため書いときますが、Perl 使える人が僕以外にもっといたら、Teng 使った時点で 問題解決してました。Perl あんま分かってないひとに、スキーマクラスがどうこうとか、それをメンテさせるとか考え始めたら頭痛くなって、 「スキーマクラスなくても使える ORM がいるね。。。」と思った次第。Teng いいですよ。僕みたいに車輪の再発明して ORM 書くとかどう考えても アホのすることです。。。)
で、作ってみました。
まあここに書いた話は今でもある程度は通用するのですが、もうちょい包括的なドキュメントがあったほうがいいかもなー、と思ったので本記事を 書いてみた次第です。
と、いうわけで明日以降は使い方を説明していきたいと思います!(YAPC の資料書きながらなので、どこまで書けるか分かりませんが。。。)