2008.07.23
CMSにおける「コンテンツ」のフォーマット問題
CMS(コンテンツ管理システム)の開発が仕事の中心になって5~6年になるが、いまだにすっきりしない問題のひとつに、「コンテンツ」のフォーマットをどうするか、というのがある。

WebサイトはWebページの集合で、WebページはHTMLで書かれている。CMSを使えば、そのHTMLをアタマからオシリまで書かなくても、「コンテンツ」を書くだけで、自動的にテンプレートと合体されて出てくる(ブログツールを使ったことがある人は、CMSは基本的にブログツールと同じようなものと考えて欲しい)。

そこまではいいのだが、ではその「コンテンツ」はどんなものなのか。その中身は、

(1) プレーンテキスト(ただのテキスト)
(2) HTML

のどちらなのか。

この問題は、Webのコンテンツというものが、

(1) 「データ」としての側面
(2) 「ドキュメント」としての側面

という2面性を持っていることに由来している。

(1)の「データ」は、そのデータの型・項目が決まっていて、エクセルの表のようなものがデータベースに格納されていくような、そういうイメージ。

(2)の「ドキュメント」は、紙の文書や雑誌のページのようなもので、1枚1枚の中身が異なる。「Webページ」は、基本的にはこちら側だ。

CMSでは、技術的にはどのみちコンテンツをデータベースに入れるので、基本的には(1)のような仕組みになる。タイトル、概要、本文、タグ(キーワード)といった入力項目があって、それぞれの値を入れていく。

しかし問題は、この「本文」のところだ。これが (1)プレーンテキスト、(2)HTML のどちらになるのか。

最終的に出したいWebページが「同じ型にハマる」場合や、もともと出したいものがデータっぽい場合は、この本文をプレーンテキストにできる。少なくとも、Webページが定型化できるのであれば、本文をいくつかの項目に分ければ、HTMLはテンプレートとして分離して、本文にあたる項目はプレーンテキストにできるはずだ。

しかし現実のWebサイトでは、大抵そうはいかない。Webページを完全には定型化できないので、どうしても本文にHTMLが残る。

これはまさに、Webページは基本的に「ドキュメント」型のコンテンツなので、「データ」としての定型化に限界があることを意味している。

WebページはHTMLというマークアップ言語、「埋め込み」型の言語で記述される。これが「インライン」構造なので、そこからHTMLのタグをすべて排除して、「アウトライン」化するのは限界があるのだ。

そして、この「本文にHTMLが残る」問題とあわせて出てくるのが、「一般ユーザはHTMLを書けない」という問題だ。

CMSは一般ユーザが直接コンテンツを作成できるという仕組みであって、それこそがCMSの強みだ。しかし、一般ユーザがいきなりHTMLを書き下すことは普通できないので、そこを埋める方法が必要になる。これを解決するのが、

(1) リッチエディタ
(2) 軽量フォーマット

の主に2つだ。

(1)は入力画面にWordのような編集ボタンを持たせるもので、多くのCMSやブログツールでサポートされている。


参考:Ploneの本文入力フィールドにある編集ボタン

(2)は、見出しや太字、リストといったよく使う文書構造の要素を、HTMLよりもプレーンテキストに近い、簡易的な書式で表現するもの。MarkdownTextilereStructuredTextなどがよく知られていて、他にも独自のものが無数にある。

しかしこのどちらの方法も一長一短のところがあり、またいずれもフルスペックのHTMLの表現力には劣るので、けっきょくは別の環境で作ったHTMLを貼り付ける、ということも少なくない。

こういった問題をどう解決すべきなのか、私も答えを持っているわけではない。実際の局面では、CMSの使われ方に応じて、技術と運用ルールを組み合わせて対応している感じだ。

CMSというものの登場でWebのコンテンツ作成・パブリッシングはたいへん便利になったものの、この「コンテンツのフォーマット」という問題はまだスッキリ解決していないように思える。

この問題の根源は、HTMLというものが基本的に「ブラウザが解釈し、表示するための言語」であって、人間にとっての「コンテンツ」にはなりえない、というところにあると思う。

HTMLのもともとの設計思想は「文書の構造化」だったのだが、だんだん「表示のための言語」として複雑化してきて(CSSのおかげで緩和されてはいるが)、いまや位置づけとしてはPostScriptみたいなものに近いと思う。

個人的には、上記の軽量フォーマットのアプローチがいいと思っている。人間が直接読み書きするのに向いた、要素も限定した軽量フォーマットの標準が普及して、ちょっとリファレンスを見れば誰でも書けるような、そんな感じになってほしい。

HTMLは技術なので、それと格闘するのはWebデザイナー(フロントエンド・エンジニア)とWeb開発者だけで十分だ。コンテンツを書く一般人は、HTMLから解放されるべきだ。

関連エントリ:
ブログがWebにもたらしたMVCモデル - コンテンツ、デザイン、テクノロジー
http://mojix.org/2005/10/02/140609
弁当屋の弁当は 「動的」 コンビニ弁当は 「静的」
http://mojix.org/2006/01/06/202935