トップ «前の日記(2006-09-03) 最新 次の日記(2006-09-07)» 編集

2006-09-04 [長年日記]

_ viewset という考え方

別段新しい考え方でもなんでもない気がするんだけど、思いついたのでメモ。

Rails を引き合いに出すまでもなく MVC という単語だけはずいぶん浸透している。でまぁ、この V に当たる部分をロジックから分離する方法の一つとして*1テンプレートの活用というのがあるわけなんだけど、

このテンプレートって配置に困りませんか?

プログラマが、あるいはアプリのワクが分かっているデザイナがテンプレートを書いているなら困らないかもしれないけれど、そういうことが分からない人がデザインを担当している場合、

テンプレートとそれ以外のパーツが泣き別れになると作業しにくい

と思うわけ。テンプレートはテンプレート用のフォルダに、画像や CSS などのパーツは Web ブラウザから直接見える場所に置いてください、というのはやはり不親切ではないかと。だからと言ってテンプレートをブラウザから見える場所に、具体的にはアプリケーションと同じ階層に置くと今度はお互いに管理しにくいし危ない。

そこでブラウザから見えない場所に viewset の置き場所を作って、そこにまとめて置いてもらうっていうのはどうだろう。具体的には以下のような構成になるんじゃないかと思う。

|-- app      ←  ブラウザがアクセスするところ
`-- viewset  ←  テンプレートおよびデザインパーツ置き場
    |-- VIEWNAME
    |   |-- css
    |   |   |-- base.css
    |   |   `-- flavour.css
    |   |-- img
    |   |   |-- dummy1.img
    |   |   `-- dummy2.img
    |   `-- template.htm とか template.erb とか
    `-- VIEWNAME2

で、アプリの側からは VIEWNAME を指定するだけで、いい具合に CSS や画像も呼び出せるようになるという寸法。デザインリニューアルの際にはこの VIEWNAME を切り替えるだけでガラっと印象を変えることができる。また画像や CSS を直接上書きしなくて済むのでリニューアルというほど大掛かりではないが、定期的にデザインが変わるような場合も更新作業が楽になるのではないかと思う。

ファイルの管理上も都合がよい。デザインする人はデザイン過程と同じ要領でテンプレートも画像も CSS もひと固まりで管理しておけるし、アプリケーションとは別な領域に置いておけるので開発する人もデザインする人もお互いに安心。おまけに VIEWNAME が時系列で並ぶようにすれば簡単な履歴管理にもなる。

どうだろ。

実現方法をなんにも書いてないけど、それはまだ何も考えてないからです。

Tags: Web

*1 メリットはそれだけじゃないけど