ECM流に保管と配信のCMSを分離しよう

2009年09月22日 01:00

【コンテンツ・タイプを区別したい】

CMSには「コンテンツタイプ」という考え方があり、制作・管理・検索・活用・表現方法などが異なるコンテンツを「タイプ」で区別します。分かりやすいのが画像とテキストですが、単なるフォーマットだけでなく、内容によってもタイプを分けることがあります。

例えば、当サイトでは最近HTMLやJavaScriptのコードを本文に貼り付けることがあったのですが、管理上の課題に直面したため、コードを「コンテンツタイプ」として特別に管理することにしました。その課題とは:

  • CMS『Webnode』のWYSIWYGエディタが、HTMLやXML、JavaScriptのコードをうまく管理できない。
    • 半角の「<」を「<」にエンコードして入力しても、保存時にデコードされ元に戻ってしまう。
    • HTMLソースから改行が勝手に削除されるため、いちいち<br/>で改行を入れる必要がある。
  • 行番号をつけたり、属性を太字にする、行ごとに背景色を変更する、などのコードならではの表現が難しい。

最も重要なのは、配信システム(CMS)の都合に合わせてコンテンツ(コード)に手を加える必要があるため、オリジナルの状態を管理できない、という点です。これでは、将来別のCMSに乗り換える場合にコンテンツのコード部分に手を入れる必要が生じます。携帯サイトや印刷物にコンテンツを流用する場合も、ちょっと面倒なことになります。手を加える方法が完全に一貫していればシステム的な自動変換ができるかもしれませんが、手作業のアドホックな制作・管理を複数のスタッフが長い間続けていくと、一貫性が失われていくのは避けられません。

エンタープライズコンテンツ管理(ECM)ならどうするか?

当サイトはCMSの実践を行うサイトなので、ここで妥協したくはありません。Web以外も対象にした数億円規模の企業コンテンツ管理(ECM)を導入するつもりになって、最高のコンテンツ管理と同様の要件を無料でサクっと満たすことにします。

図:ECM流のリポジトリ:

(1)保管リポジトリと配信CMSを分離する

汎用的なコンテンツを管理するためには、印刷物、社内ドキュメント、eラーニング、メール配信、静的Webページ、動的Webアプリケーション、Databaseなどとの連携も必要になります。そこで、汎用的なコンテンツを保管するリポジトリとしてのCMSと、Webや印刷物、eラーニングなどのメディアに特化し、コンテンツを組み合わせて配信するCMS分離する、のがECM流のアプローチです。

例えば、画像はレイヤー付きの高解像度のPhotoshopファイルを汎用コンテンツとして作成・保管し、Web用にリサイズやフォーマット変換したJPEG画像をWeb CMSがブラウザへ配信します。画像や動画、サウンドなどの保管・変換に特化した「デジタルアセット管理(DAM)」と呼ばれるCMSも存在します。

今回のコード管理でも、この分離を実現することを必須とします。

(2)コンテンツをメディアやシステムに特化させない状態で保管する

そして、汎用コンテンツのリポジトリには、今回のコンテンツタイプである「コード」を、一切変更しないオリジナルの状態で保存することにします。それを抽出し、Web、そして導入済みのCMSであるWebnodeの都合に合わせて変換します。

要件を具体化する

次に、上記の要件を具体化するため、どのようなフォーマットのコンテンツがどのシステムをどう流れていくのかを検討しました。

汎用リポジトリ上の状態

図:リポジトリ上のsource content:

  • コードではなく、テキストコンテンツとしての扱いです
  • TABインデントのプレーンテキストです

Webでの見せ方

図:変換後のHTMLコンテンツ:

  • ブログでよく見かけるSyntax HighlighterというJavaScriptライブラリが機能・デザイン的に良さそうです
  • 指定した行を強調したい場合があります

さて、このコンテンツタイプをどう料理していくべきでしょうか?続きはこちらへ。