O/RマッピングとRPC
一応、このサーバで動いているプログラムは unboard という名前が付いている。
もともとは、Web のツリー型掲示板を作るために書いていた物なんだけど、割と汎用的につくっていたので、途中から “文書を保管” するようなプログラムに変更された。要は、可変のどんな項目でも保存できるような HTTP/POST インターフェースを備えたツリー型データベースのようなイメージ。その実装の一つが、掲示板という感じです。
名前の由来は、掲示板じゃないので unboard。 : -)
バックエンドは PHP + MySQL。 PHP は class が使えるので、オブジェクト指向で書いてあります。
ここで問題になるのが、データの保存先が RDBMS だということ。得てしてオブジェクト指向と RDBMS は相性が悪い。これらを解決するためにいくつもの O/R マッピングライブラリがでている。
プログラムは、オブジェクトのライフサイクルでデータを保持したいのに対し、RDBMS は逐次カレントデータを SQL を発行して取得、書き込みしなければならないわけで、ここでプログラム的な不整合が発生する。これを解決(というか意識しなくてもすむようにする)するのが、O/R マッピングライブラリだ。
で、当然同じ問題を unboard もかかえ、どうしようかと悩んだ。さすがに、ライブラリを使うほどの規模でもないので、自分で “マッピング” してみた。
そして、結局 SQL を発行するスタティックメソッドだらけのユーティリティクラスにオブジェクトを渡して RDBMS からデータを格納してもらい、ライフサイクルごとに自分で保存を要求するという、しょぼい方式に落ち着いた。。
O/R マッピングのライブラリっぽくする方法もあったのですが、単純に作るとあまりにも無駄な SQL を発行するのでやめた次第。
・・・、さて次は、接続インターフェースが HTTP/HTML-POST だけってのも芸がないので、XML-RPC インターフェースを作って、XML-RPCクライアント(?)から unboard をいろいろ操作してみたい。 はたしていつできるのやら。