2009年9月6日日曜日

ライトウェイトなCMSに関するメモ

Webアプリケーションフレームワークの世界ではライトウェイトが最近の流行り(?)みたいですけど、その上の層の、CMSとかいうところにももっと軽量なのがあっていいと思う。

"軽量"ってのはこの場合、CMSをセットアップするユーザーが、システムについての脳内モデルを作る上での軽さ、ということですけどね。システムの全体象が単純で、いろいろできるわけじゃないけどお手軽で、みたいなかんじ。

いずれにしても、軽量にするためには、いろんなところで汎用性をあきらめて、目的や用途を絞り込むことが必要です。なので、次のとおりに決めちゃう。

・このCMSで作れるのは、Appleの製品ページと同じ構造を持つサイト
・このCMSで作るのは、多くても数十~100ページくらいの規模のサイト
・"コンテンツ管理"は軽視、できるだけコンテンツ作成に専念

そんなに大きくない法人サイト、キャンペーンやプロモーションで特設されるサテライトサイト ... 要するにインターネット上に、自分の存在なり活動なりをお知らせ/ご案内するための情報のパックを持つとしたら、Apple製品サイト風の情報デザインがいいかんじだと思うんですよ。そんなに大きくならなければ。

あと、ブログや"つぶやき"をつけたり、訪問者とのリレーション機能(お問い合わせ受付/回答、CRM)をつけたりして、Webサイトを電話帳やチラシの拡張形態として「置いておく」んじゃなく、コミュニケーションツールとして活用していかなくちゃならないとも思うけど、それはまた、別の話、ということにしておく。

で、そういうのを作るのに、なんか大げさなCMSをどーんと入れてカスタマイズして、ってのは勘弁してほしい。やりたいことはそんなに複雑じゃないんだから、ちょいちょいっといじって終わりにさせてほしい。

管理系の機能もできるだけ省きたい。

全体を見渡すような管理画面とかいらないし、権限とかロールとか、ワークフローとか、ステージングとか、予約実行とか、この規模では、そういうのもいらないでしょ。

実際の見た目の上でコツコツ部品を作りながら、比較的な小規模な、だけど中身は割と立派なWebサイトを構築していく、それだけできればいい。

たとえば。

初期状態では、作りかけのトップページだけが存在している。

そのトップページの、グローバルナビゲーションのところ、ウェルカムメッセージのところ、フィーチャーのところ、フッタナビゲーションのところには、編集ボタンがついている。(Appleの、たとえば、Snow Leopard のページなんかを見てイメージしてください。)

グローバルナビゲーションの編集ボタンをクリックすると、このサイトを構成するセクションを定義するための入力フォームが開く。といっても、いくつかのセクションのタイトルを入力するだけ。

入力すると、トップページにグローバルナビゲーションが出来上がる。グローバルナビゲーションにはちゃんとリンクもついてる。リンクをクリックすると、まだ存在していないページに遷移しようとして、新規ページを作成するためのフローに入る。このへんはWikiみたい。

新規ページを作成する際は、まず、ページのタイプを決める。タイプは二種類。「コンテンツページ」と、コンテンツページをタグで検索した結果の「一覧ページ」。

ちなみに、最初から存在していたトップページはコンテンツページの一種。

これから作ろうとしているのは、グローバルナビゲーションのある項目をクリックして遷移する先のページ。たとえば「おしらせ」だったら、「おしらせ」というタグをつけておいたコンテンツページの一覧にすればいいかもしれない。だから、ページのタイプには「一覧ページ」タイプを選ぶ。そして、検索条件やソート方法を設定する。

つぎに、一覧の周囲に表示したい「情報のまとまり=チャンク」を定義する。たとえば、大見出しや、ここで何を一覧表示しているのかを簡単に説明するリード文など。あるいは、意図的にピックアップしたコンテンツページのリストを常に表示させたいかもしれない。

グローバルナビゲーションの項目が「わたしたちについて」だったら、クリックした先は一覧ページではなく、きっとコンテンツページになるはず。

コンテンツページとは、いわば「チャンク」だけでできたページ。

チャンクにはいろいろな種類がある。たとえば、このページは、基本的には「左寄せ画像+見出し+本文」と「アイコンつきリンクリスト」というチャンクだけでできている。

コンテンツページには、チャンクをどんどん追加できる。チャンクの種類を選んで、チャンクごとの入力フォームに必要な情報を入力していく。

CMSには、Apple製品サイト風のサイトを構成する上で必要となりそうなチャンクがたいてい揃っている。ユーザーに伝えたいことをそうしたチャンクに当てはめてページを構成していく。もちろん、このブログのように、タイトルとでかい本文だけのチャンクひとつでページを構成する手もある。

トップページのグローバルナビゲーション、ウェルカムメッセージ、フィーチャ、フッタメニューなんかもチャンクの一種。フッタメニューは全ページ共通のチャンクで、どのページで編集しても、全ページに反映される。

チャンクの中にまだ存在していないページへのリンクを設定する。これをクリックすると、一覧ページを作るか、コンテンツページを作るか聞かれる。ふさわしいタイプを選択してあたらしいページを作る。これを繰り返してサイトを構築していく。結局、それだけのこと。

結局それだけのことなんだけど、トップページに最初から用意されている(中身は空の)チャンクや、一覧ページ、コンテンツページそれぞれに備わっていて選択可能なチャンクのラインアップによって、自然に、Apple製品サイト風のサイトデザインに習うように仕向けられている。というより、サイトデザインはあらかじめ一定の枠にはめられていて、それに従うしかない。それに従うしかないという状況ほど楽なものはないわけで。

ちなみに、すべてのチャンクを含めて、サイトのHTMLコードは完全にFIXしているので(チャンクのデータフィールドに入力されたHTMLコードは除く)、ブログと同じように、あるいは、ZenGardenと同じように、CSSの差し替えのみで、ルック&フィールやサイト提供者のビジュアルなアイデンティティ表現はコントロールできる。

このCMSでの"カスタマイズ"とは、CSSコードの差し替えとCSSが使用する画像データの差し替えのことのみとしたい。

その他のカスタマイズは一切サポートしません。それをやりたければもっと高級で大げさなCMSを使いなさい。と。

あ、でも、チャンクを増やすことはあるかも知れない。

と、まあ、そんなかんじ。そういうのがほしいし、作ってみたい。きっと便利だと思います。

3 件のコメント:

ハムカツ さんのコメント...

勘違いかもしれませんが、wikiをカスタマイズして使うってイメージが近いんじゃないでしょうか?

takahashihideki さんのコメント...

ハムカツさん、コメントありがとうございます。

いや、おっしゃるとおりです。ページの増やし方なんて一般的なWikiのやり方そのものですしね。

カスタマイズしたいのは、大きく次の2点になります。

・一覧ページとコンテンツページの二種類のページを作れるようにしたい

・Wiki記法=Wikiフォーマッタはやめて、専用の入力フォームへの入力に基づいて、あらかじめ決められた構造を持つHTMLコードを出力したい

前者はこれの前のエントリーで書いた"UM法"と勝手に呼んでいる考え方にしたがってのことです。

後者なんですが、以前、実は、ある企業サイトのCMSをWikiベースで作ったことがあるんですけど、それへの反省から生まれた発想だったりします。

要するにWiki記法はあくまでもシンプルなマークアップを行うための短縮記法として考案されたもので、ちょっと凝ったビジュアルを実現しようとすると、すぐに限界にぶち当たる。むしろ普通にHTMLを書いた方がマシになっちゃうんですよね。

で、ここでチャンクと呼んでいる一種のオブジェクトを積んでいくようなイメージで、小さな入力フォームを開きながら作っていくのがよいのではないかと。Blogger の サイドバーの編集はまさにそれですけど、本文もそれで作ろう、という。「テキスト弄りしかできない本文よさらば」なんて意気込みで。

あと、たぶん、RDBベースのWebアプリじゃなくて、いわゆるドキュメント志向DB(CouchDBとか)をストレージ層にしたほうが、こういう「文書」の集合状態をうまく取り扱えるんじゃないかなあ、とも考えています。

ハムカツ さんのコメント...

なるほど。wikiはそのままだとすぐぶち当たる限界多いですからね。

takahashihidekiさんのイメージを実現するには、仰るとおり別に構築してやった方が良さそうです。普通に便利そうですし。