ボルボックス




ムダなくすばやくすべてを
volvox

はじめに

ボルボックスはドキュメント指向の軽量な統合フレームワークです。その目標は[※1]

ムダなくコンテンツを管理する
すばやくプログラムを開発する
ウェブ管理のすべてを統一する


※1
各種CMS/フレームワーク(movable type, wordpress, ruby on rails, phpcake, etc. )を、このツールの配下に組み込むことができます。その場合ビュー部は、それらCMS/フレームワーク独自のテンプレートをXSLTにより生成します(テンプレートのテンプレート)。コントローラ部とモデル部は、XSLT+パイプライン、下位言語(ruby, haskell, etc.)、およびそれらCMS/フレームワーク独自のコントローラ/モデルを組み合わせます。いずれの場合も、すべての文書コンテンツはこのツールの管理下にあります。

XML/XSLによりムダなくコンテンツを管理し、パイプライン生成によりすばやくプログラムを開発することができます。

そしてこのツールにより、ウェブサイトのフロントエンド(コンテンツ/プログラム)およびバックエンド(ドキュメント/データベース)管理のすべてを統一することができます[※1][※2][※4]。


※1
いわゆる「ドキュメント指向」はあつかうデータの構造がスキーマレスであることを指しますが、ここではそれに加え(素朴なXMLもスキーマレスです)、ドキュメント変換によるアプリケーション作成、という意味もふくんでいます……ほとんどのウェブ・アプリケーション(CMS、CRM、SNS、など)では文書変換が主要なプロセスとなっており、プログラミング=文書変換の制御、という側面があります。ドキュメント指向型開発はそこに焦点を当てた開発手法であり、これはまた必然的に、データベース(RDB)/ドキュメントベース(XML)/ナレッジベース(RDF/OWL)などバックエンド資産管理の効率化を極限まで追求することにもつながります。
※2
スクリプト型IID(反復型開発)フレームワークのひとつであり[※3]、適用範囲はプロトタイプ〜小中規模のアプリケーション作成です。なおRDBとの連携機能もあるので、あつかえるデータの件数自体はエンタープライズ・レベルになります。
※3
IID/反復型開発……開発プロジェクトの初期段階で<とりあえず動く>システムを作り、利用者と開発者がそのシステムを試用しながら望む形に近づけていく開発手法です。これにより、要求仕様と実装(納品物)の乖離を最小にとどめることができます。なおアジャイル開発はこれを先鋭化したものです。
※4
オブジェクト指向プログラミングに対応していますが、O/Rマッピング・ツールの採用/選択などは利用者に任せています。理由は……[1]OOPの設計は、クラスとクラスどうしの関係の定義、データと手続きのカプセル化とロジックの埋め込み、ステートレス/ステートフルな処理の見極めなど、システムごとの差が大きくなります。とくにO/RやO/Xマッピングは、RDB/XMLデータベースと各種プログラミング言語の界面で、存在(永続)を重視するデータ指向と目的(特化)を重視するオブジェクト指向の設計思想の違いを吸収する唯一の場所です。[2]とくに文書管理では、データとなるXML文書群はすでに存在しています(運用中でも文書を利用者が直接書き換えることがある)。またその延長にあるRDF/OWLオントロジーは、データ指向です[※5]。さらにデータベースは依然RDBが主流で、これにも相応の理由があります……インピーダンス・ミスマッチの発生は避けられず、一般的な解はなく、その解消は個別のシステムの問題であり続けます。このツールは、その問題については中立な立場をとります。
※5
これはエージェント(オブジェクト指向)によるオントロジーと比較すれば、ということです。RDF/OWLオントロジーでは、データは手続きと完全に切り離されました(記述論理の形式意味論に手続きはふくまれません……なおW3Cのセマンティックウェブ層では、この上のルール層で宣言的なプロダクションルールが定義され、2010年にRIFとして勧告されています)。ただしそのいっぽうでRDF/OWLは、データ自身が他のデータとの関係(階層や制約など)を語ります。能弁なデータ指向というべきもので、従来のデータ指向のような、プログラム側にデータ処理のロジックすべてを任せるものではありません。オブジェクト指向では手続き(メソッド)がカプセル内のデータをどう処理するかを知っていますが(=手続型)、能弁なデータ指向では、汎用のロジックをデータ自身が示します(=宣言型)。とはいえRDFは実体関連モデル(ER)より一般的であり(だからもちろんRDBの関係モデルより柔軟であり)、クラス階層も定義できるよう拡張されているなど(ただし存在と目的という志向の違いからくる乖離は埋めようがないものの)、饒舌なOOとの親和性はより高くなっています。