2004年06月10日
川俣晶の縁側ソフトウェアMagSite1開発日誌 total 2420 count

「こんなこともあろうかと」配慮されたMagMLレンダラの仕様変更

Written By: 川俣 晶連絡先

 MagSite1を部分的にModulaF対応する作業を進めていますが、一通りある程度の範囲内で筋が通るだけの動作を実現するまでは公開できないのが辛いところです。作業はかなり進んでいますが、まだ今しばらくの作業が必要です。

 それはさておき、MagMLのレンダラの動作結果を変更する必要が生じました。

 MagMLのレンダラは、MagMLのソースを読み込んで、XHTMLのコードを吐き出します。しかし、その中にCSSを参照するclass属性や、画像メニューなどのやや複雑なUIも決め打ちで含んでいます。これらをそのまま使うことは、ModulaFの強力なカスタマイズ性や複数デバイス対応に反するので、仕様変更することにしました。

 そこで問題になるのは、現在のMagSite1では、レンダリングはコンテンツ作成時に行い、レンダリング結果をコンテンツファイルの一部としてファイルに保存していたことです。既に作成してしまったレンダリング結果をどうするかは、ちょっとやっかいな話になります。特に、旧バージョンのレンダリング結果と、新バージョンのレンダリング結果が混在したりすると、ややこしさも倍増です。

 しかし、「こんなこともあろうかと」レンダリング結果を書き込む時に、レンダリングした日付時刻と、レンダラのバージョンも一緒に書き込むようにしていました。具体的にどんな状況が起こるかは分からないものの、レンダリング結果が変更される事態は起こるものと考えて配慮してしてあったものです。

 どのバージョンでレンダリングした結果か分かれば、旧バージョンと新バージョンのレンダリング結果で混乱することはないはずです。

ないはずですが…… §

 混乱することはないはずですが、新バージョンと旧バージョンを判定して正しく処理を行うのは面倒です。ファイルに記録されてしまったレンダリング結果を全て更新すべきか。もし、更新しないと決めた場合、再レンダリングはどのタイミングで行うか。リクエストがあるごとに再レンダリングすべきか。どこかにキャッシュしておくべきか。キャッシュするとしたら、どこにキャッシュすべきか。

 もう1つ、レンダリング結果をファイルに保存するようにしたのは、MagMLのバージョン間で非互換性が発生した時、旧バージョンで正常にレンダリングできるものが、新バージョンでレンダリングできずにエラーになる可能性を想定したためです。その問題をどう扱うかはまだ未定なのが悩ましいところです。