XHTML+CSS

XHTML+CSS or 力技の続き。例によって当たり前といえば当たり前の話。問題は当たり前のことを知らない人たちがプロジェクトの計画管理をしているという、例によって例のアレだ。

プログラミング技術としてのXHTML+CSS

  • ちょっとでもプログラミングをかじったことがあれば、「コードの中にマジックナンバー(魔法の数字)を置くな」ってのは習ったはず。
  • HTMLのスタイル属性もマジックナンバー。だからこそCSSとしてHTMLとは別に記述する。

意味がわからないおじさんは消費税が3%から5%になった時の苦労を思い出すのがよいだろう。1.03というマジックナンバーを埋め込まれたコードの対応とテストは大変だったはず。色とか大きさとか場所とかの情報をHTMLに埋め込むのも同じような問題を抱えているわけ。(まあ、1.03を1.05と書き換えて消費税率変更を逃げ切ったおじさんには一生かかってもわからないだろうなぁ...)

プロジェクト計画管理の観点

スタイル属性をHTMLに埋め込めば、保守性は確実に低下する。変更時のコストが高くつくようになる。このような場合、プロジェクトリーダが取る道は二つある。

ウォーターフォール的なアプローチで画面設計を詰めていくと、背後で動くビジネスロジックに関する議論がおざなりになる傾向があるのが問題であろう。業務に関しては下手なことを言えないので議論は本質的になるが、画面のデザインは(極論すれば)誰でも口出しできてしまう世界。本質的ではない、どうでもよい画面デザインのためにプロジェクト前半の貴重な時間が浪費されるのはもったいない。

Agileアプローチでは「画面スタイルはあとから(ほぼ)なんとでもなる」ということを顧客に納得してもらうことで、重要なビジネスロジックの議論と開発に専念できる。画面デザインは、本体ロジックの開発と並行して念入りにやっていけばよいのである。また、CSSを使えば案1・案2・案3・・・・と候補をいろいろ作ることも可能であろう。同じことをHTMLスタイル埋め込みでやるのは非常につらいものがある。

CSSの問題点

CSS解釈はブラウザの種類に依存しちゃう。それを回避するテクニック(CSS Hackなどで検索すると色々出てくる)が必要となる。困ったことに、「デザイナの意図した通り、正しく表示されているか」というテストは自動化が難しい。なので人力に頼るテスト工数は増えてしまう。(今回のmixi騒動は、ここのテストにかける工数が足らなかったのであろう) だとしても、HTMLにスタイルを埋め込むよりは遥かに効率的な開発保守が可能なはずである。