« ハイブリッド・コンバーター | メイン | サイボウズ Office X の X はバージョン番号ではありません。 »

テンプレートエンジン

畑です。

サイボウズ Office シリーズが C++ と独自のテンプレートエンジンで開発されてきたことは、以前説明しましたがサイボウズ Office X でも、その構成を取る予定です。従来の独自のテンプレートエンジンはデータ保存形式と密に連携していました。しかし、今回 MySQL にデータ保存を委ねることになったので、従来のものを利用するメリットがあまりなくなりました。そこでテンプレートエンジンも一新することになりました。

テンプレートエンジンというと記述形式が非常に重要となります。重要というか、どちらかというと非常に気になるという表現が、使う側にとっては適切かもしれません。例えば変数に格納された値を表示する際には、以下のような記述パターンが各種のテンプレートエンジンで見受けられると思います。

 1. <% $foo %>
 2. [[$foo]]
 3. {$foo}

変数の前後に括弧等がたくさん付くと、記述する際のストレスが溜まるが、HTMLエディタとの親和性は高まる、といったようにそれぞれ特徴があるかと思います。PHP の Smarty は 3 の {$foo} のパターンに相当しますが、変数の前後の括弧が少ないことも人気の理由の1つではないでしょうか。実は、サイボウズ Office シリーズの従来のテンプレートエンジンでは括弧さえない $foo という形式でした。

サイボウズ Office X の開発にあたって、テンプレートエンジンについて考えていることとして「テンプレートファイルは必要最小限の機能に止める」ということがあります。実は従来の Office ではテンプレートに各種のビジネスロジックが混在していたのですが、テンプレートからデータベースを簡単に操作できるといった高度な機能がそれを後押ししてしまった、という反省があるのです。

ここで開発する開発フレームワークはあくまでも社内向けなので、Webアプリケーション開発用といっても、対象とするアプリケーションの機能性については限定することができますし、使用する開発者も限定することができます。したがって「汎用性」ではなく「どのように開発して欲しいか」という観点から、テンプレートエンジン等の機能を設計できます。

まとめますと、テンプレートエンジンを独立した汎用のものとするのではなく、「こうあるべし」と制約するフレームワークの一部とみなして設計・開発していこうと思います。

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)