データバインディング
ウェブアプリケーションのデータバインドは少し癖がある。というか、最近のWebフレームワークを見る限り、データバインドという概念はそこまで強うのうて、もっぱらデータベースのモデル化に力が入っとるみたい。これはRailsからの流れなんじゃろうか?
Webサービスはコントローラのほうをバインドして実現するフレームワークが多い。サーバ側なら理にかなっとると思う。
この手のフレームワークが、それとは逆のパターン……例えば .NET というか、VisualStudioが提供しとるような、Webサービスのデータオブジェクトをデータソースにする方法論をどがーして実現しとるかは今調査中。
一般的という言葉は使いたくないけど、プログラム全般で見れば、データモデルとストレージは分離せざるをえないのが通例。たとえばセーブデータのデータモデルにメモリカードの読み書きのコードを書き込んじゃう人はあまりおらんと思う。アセットパイプラインなどもそうで、せいぜいメモリストリームとのやりとりを直に書くくらいじゃと思う。
ただWeb開発の場合は、データモデルといえば十中八九データベースのデータなので、データベースにがっちり紐付けするものらしい。しかもそれを単にモデルと呼ぶ*1くらい、それが一般的。でもこれデータクラウドだ何だらで一年もすれば変わるんじゃろうなぁ……
個人的には XoopsObject で採用されたハンドラとの分離方式が好みなんじゃけど、コミュニティでとんでもなく評判が悪かったので、同概念の再採用にずっと躊躇しとる。
いずれにせよコアレベルでは特定のストレージとのやりとりを規定できんけー、ハンドラのインターフェイスとオブジェクトのあり方は別々にせにゃあいけん。
にしても、型がない言語はここで苦労する……型があればクラス定義自体をパースしてバインドできる*2んじゃけど、型がないと、型情報はどうしても動的なプロパティとして定義せにゃあいけん。それを避けるためにXMLやら何やらで静的な定義を別途用意して、それをパースする方式をとるバインダ*3が出とるんじゃろうけど……