データバインディング

ウェブアプリケーションのデータバインドは少し癖がある。というか、最近のWebフレームワークを見る限り、データバインドという概念はそこまで強うのうて、もっぱらデータベースのモデル化に力が入っとるみたい。これはRailsからの流れなんじゃろうか?

Webサービスはコントローラのほうをバインドして実現するフレームワークが多い。サーバ側なら理にかなっとると思う。

この手のフレームワークが、それとは逆のパターン……例えば .NET というか、VisualStudioが提供しとるような、Webサービスのデータオブジェクトをデータソースにする方法論をどがーして実現しとるかは今調査中。

一般的という言葉は使いたくないけど、プログラム全般で見れば、データモデルとストレージは分離せざるをえないのが通例。たとえばセーブデータのデータモデルにメモリカードの読み書きのコードを書き込んじゃう人はあまりおらんと思う。アセットパイプラインなどもそうで、せいぜいメモリストリームとのやりとりを直に書くくらいじゃと思う。

ただWeb開発の場合は、データモデルといえば十中八九データベースのデータなので、データベースにがっちり紐付けするものらしい。しかもそれを単にモデルと呼ぶ*1くらい、それが一般的。でもこれデータクラウドだ何だらで一年もすれば変わるんじゃろうなぁ……

個人的には XoopsObject で採用されたハンドラとの分離方式が好みなんじゃけど、コミュニティでとんでもなく評判が悪かったので、同概念の再採用にずっと躊躇しとる。

いずれにせよコアレベルでは特定のストレージとのやりとりを規定できんけー、ハンドラのインターフェイスとオブジェクトのあり方は別々にせにゃあいけん。

にしても、型がない言語はここで苦労する……型があればクラス定義自体をパースしてバインドできる*2んじゃけど、型がないと、型情報はどうしても動的なプロパティとして定義せにゃあいけん。それを避けるためにXMLやら何やらで静的な定義を別途用意して、それをパースする方式をとるバインダ*3が出とるんじゃろうけど……

*1:XCでは今後もデータモデルと呼ぶっす

*2:この方法はムチャクチャ便利で、コード書くだけでデザイナに入力フォームを提供できるんで、いくつかのゲームエンジンのエディタで実装されとる

*3:でも今はランタイムのバインダよりソースコードへのベイクのほうが多いかも