Graphy CMS について

グラフィCMSとEden

グラフィCMSの開発を私が急に思いついたわけではない。以前からオムニサイソフトウエアで、ネットワーク管理・監視ソフトウエアの Eden を開発してきたが、このコンセプトは、簡単に言えば、ネットワーク管理情報をサーバで集めて、Web インターフェースでビジュアライズして、Web でインターネットのどこからでも参照することができるというシステムである。

なぜ、そうなっているかというと、メディアエクスチェンジを当時創業したところだったが、少人数のエキスパートでネットワークを運用するために、会社にいるときだけでなく、自宅からでも出先からでもネットワークの状況を知ることができるツールが必要だったわけで、当時一般的だったOpenView などのソフトのように、その端末(ワークステーション)からだけしか、操作できないものでは、まったく間に合わなかったからである。

もちろん、さまざまなフリーのソフトウエアを組み合わせて使っていたが、それでは統合的な管理ができないし、どうせないものは作らないといけない。SNMP だけでとれる情報だけでは不十分なので、さまざまな手法で情報を集めて、それをどこからでも見られるものにして、トラブルシューティングをできるようにしないといけないからだ。さらに 対象となるネットワークには、一般のインターネットからアクセスすることはできない場合もあり、 Web インターフェースを用いてサーバが proxy として機能して、該当ネットワークにアクションを起こす機能も必要だった。

Eden の原型となるアイディアは実はその前からあったのだが、それはここまでのコンセプトのものではなく、特定のネットワークシステム用として製作したもので、単に GUI を Web インターフェースにしたほうが簡単だということで作ったものだった。

こうして、Eden は発展を続け、メディアエクスチェンジのネットワークだけでなく、施設全般を管理運用できるツールになっている。

さて、これがどう CMS とつながるかということだが、おりしも Google に代表される検索サービスによって、インターネットに分散する知識を活用する手段は確立されたかのように思われている。しかし、検索だけですべてが解決するわけでなく、自分が日々集めた知識、情報ををきちんと格納して、どこからでも参照できるシステムが必要であることは疑いない。

私も、JUNET、NIFTY-Serve の時代からネットワークにかかわりあい、もう約20年になろうとしている。初期からのメールも事故で失ったものも若干あるとはいえすべて保存している。自分が雑誌や書籍に書いた原稿ももちろんある。これらをサーバに保存している。サーバといっても単に UNIX のファイルシステム上にあるだけだ。最近は RAID のサーバになったので、かなり安全性は向上したが、順々に新しいサーバにコピーをしながら今に至っている。

さて、ここから先は、Eden で実現していることとまったく同じである。

もちろん、自分の集めてきたこうしたものを、もちろん何らかの形でインターネットからアクセスできるように保存していて、どこからでもアクセスできるが、整理、ビジュアライズする機能はない。

整理するという点では、html を含むマークアップランゲージを利用して、コメントと、関係性を記述することで可能になる。CMS では、Wiki の機能を採用してデータベースの助けを借りるようになっている。

インターネットの利点に情報共有があげられるが、昔は多くの場合メーリングリストで行ってきた。あるいはネットニュースだ。前者がグループで、後者がパブリック。多くの場合、情報共有はこの2つを使い分けながら進められる。これを実現するツールが必要とされたわけだ。

あとは、作りながら改良する作業を繰り返す。フリーのものを使ったのでは限界があるので、意を決して、完全にスクラッチから作る。GUI や、ツールとして呼び出されるものは、さまざまなフリーのものを利用する。だいたい、OS 自身もフリーである。

やりながら、ちょっとまとまったプロジェクトにかかわるごとに、まとまったカスタマイズをする。これは大きなステップアップになる。

というわけで、ここまで来ているわけだが、概ね私が機能にかかわる仕様をまとめて、藤原君をはじめとするチームがインプリメンテーションに取り組むという進め方で行っている。

もう一つ、システムとしての信頼性と高可用性の確保の問題だ。これははっきりいってそれなりに金がかかる。しかし、大切な情報を失わないようにすることとと、知的活動はそれを思いついたときにできないと役に立たないということを考えると、この両者は必要である。まあ、この点に関してはおそらく、最高のシステムを最低限度の価格で実現していると思う。これは全部フリーのもので構築するということにこだわっていない。しかるべきプロダクトを買ってきて実現している。当然 Eden が大きな役割を果たしている。

Eden で行ってきたものと、グラフィCMS とは無関係ではなく、前者はネットワーク管理情報を扱っているのに対し、後者は人間の知的情報を扱っているものである。今後は、両システムは融合している方向性での開発も行っていくことになるだろう。

最終更新日: $Date: 2008-10-15 12:16:00+09 $

グラフィCMSの原点

グラフィでは、CMS (Contents Management System) を作り、それをサービスを提供しています。

グラフィCMSは、私たちはこういうシステムを使いたいというのが原点にあります。仕事でも趣味でも、他の人に見せたり、意見を求めたり、共同して作業をしたりという場面でこんなことができたら便利だということをひとつずつ作りこんでいます。

もちろん今までいろいろなものを使ってきて気に入った機能も取り込んでいます。基本的なマークアップ記法を Wiki を踏襲していますし、名前空間の管理方法も Wiki の考え方を取り入れました。TeX との連携についても、こうしたマークアップ型の構造化された文章の利点を生かすということで自然な導入だと思っています。

情報共有を行うときに、なんでも誰にでも見えてしまうというのは、必ずしも情報共有を促進することにはなりません。書きかけのメモはほかの人に見てほしくないものです。でもそれを別のシステムに保管しておいて、完成しないと入れられないのでは困ります。それに会社や組織の中では、一定のグループと権限があるのは当然です。それを反映できないのでは、やはりすべての情報を入れておくことはできません。

私たちは、インターネットからアクセス可能なサーバに情報を集約して、それを再利用することがスムーズにできるシステム、ともかくまず入れておいて、集めて、あとでそれを活用、整理、加工し、そして Web や、印刷物にするシステムを目指しています。

特徴的な機能を一つ紹介します。

日ごろ使っている Windows や、UNIX のファイルシステムは階層型ディレクトリ構造をもっています。原則的にはそれを踏襲し、そのままの構造を格納できるようになっています。グラフィCMSの特徴的なことは、フォルダとドキュメントに区別がないことです。CMSシステムのページ(CMSテキストと呼んでいます)は、そこに書くこともできますし、その中にファイルを収納することもできます。封筒の表面に文章を書くようなものです。一般のディレクトリシステムでは、ディレクトリに名前やシステム上の特性はあるものの、それ以上のことはできません。Webシステムでは、index.html という特別なファイルがあれば、それがそのディレクトリのトップページとして扱うということで、同様なことを実現しているわけですが、グラフィCMSでは封筒の表面に書くことができ、その中に関係するものを入れられるようにしようという形になっています。

これは、最初は違和感があるかもしれませんが、慣れてくると、まず要約を書いて、DirectoryIndex の機能を使いながら、目次を書きながら本編を用意していくなどという使い方ができます。

最終更新日: $Date: 2009-04-27 10:11:37+09 $

グラフィCMS原案

グラフィCMSの開発をする前にも、私たちはオープンソースのさまざまなCMSを使っていました。Mediawiki はもちろんのこと、Wikiblogという Wiki に Blog の要素を加えたもの。そして、これはオープンソースではありませんが、有名な Blog ツールである Movable Typeなどです。

どれも、MySQLか、Postgres というオープンソースのデータベースを使っています。

Mediawiki は、Wikipedia を作成するために使われているもので、非常にシンプルですが、完成度は非常に高いものです。 ただし、ユーザ認証は行われますが、フラットなユーザ空間で、管理者権限を除けば、原則すべてのユーザは同じことができるようになっています。また、情報もフラットに管理されます。Wikiの特徴は、言葉を二重大括弧 [[言葉]] のように囲うことで、リンクになり、リンクをクリックしたときにページが存在すればそれを表示し、なければ自動的に作成、編集になるというものです。

Wikiの特徴としては、簡易的なマークアップによって、書式を表現し、整形したページになることです。見出しや、箇条書き、簡単な作表ができる記法が備わっています。

Wikiblog は、これに Blog 的要素を加えたものです。「いったい Blog ってなんだろう。」と思ったりするのですが、多くの人が Blog といったときに考えるのは、ページが原則的には時系列の順にならんでいて、Web サイトで悩ましいツリー構造を考えなくても、タグやキーワードで自動的に分類してくれるという機能を持っているというものでしょうか。そうした機能を Wikiblog では Wiki に対して拡張しています。

Movable Type は、Blog ツールとしてはあまりに有名なものですが、トラックバックを最初に、実現したツールといったほうがいいかもしれません。スタイルシートを中心としたカスタマイズでいろんなことができます。本もたくさん出ています。このカスタマイズがビジネスになっているという感じです。

このほかには、サービスとして提供されている、さまざまなものがあります。こうしたものを使ってきましたが、結局複数のものを使わなければならなくなってしまいます。Blog 系ツールだと、情報を発信するとか日記を書くという志向が強く、情報の整理という点ではWikiは優れているけれども、空間がフラットすぎるので、組織的に使うには結局情報を入れるか入れないかになってしまう、という問題点があります。

そこで、この際、一から作ろうということにしました。概念的には、Wikiをベースにしつつ、まずサービスとして、複数グループを別々に管理できることと、グループ内でも細かな権限(read, write, grouping etc.) などをドキュメントごとに設定できるようにするところからスタートしました。

それと、我々が作るのだから、いままでのフリーソフトウエア、オープンソースの世界の道具だても最大限に活用しようということになりました。

最終更新日: $Date: 2008-10-18 10:42:24+09 $

ドキュメント管理と共有

ともかく、どんなファイルでも入れられることと、見やすく、探しやすくすること、わがままを実現することを目標に、自分たちが使いながら開発を続けています。

既存の Webや、PCや、サーバ上のフォルダを丸ごと、CMSシステム内に入れることを出来るように。これを実現する時点で、Wiki のフラットな構造から離れます。それと、多くの CMSでは、ファイルをすべてデータベースの中に入れてしまうのに対して、グラフィCMSでは、ファイル本体はファイルシステム上に通常の状態で保存し、データベースはファイルの所在や、属性の管理だけを行うというという形態にしました。ファイルシステムのバックアップだけでも、データ本体は失われませんし、特に開発中ではファイルそのものを見て状況を確認するということも可能になっています。ただし、直接ファイルを変更する行為は、すべてのファイルのアクセス、変更履歴をデータベースで管理しているので、すぐに発覚するようになっています。Wiki同様に、ファイルの変更履歴はすべて残っています。

既存のドキュメントツリーを入れて扱えるように、ツリービューを左端に表示しています。方式は、Windowの Explorer と同じです。この部分は、Yahoo UI Library を利用しています。

既存の Web (html) をそのまま取り込めるという機能は、便利で有効な機能です。既存のものをサブツリーとして、取り込んで参照しながら、変更していくことができます。

グラフィCMSのディレクトリ構造は、他のものとちょっと異なっています。各CMSテキストドキュメントは封筒のようなもので、封筒の外に記述をすることができるのです。画像ファイルなどは、そうしたことは出来ませんが、ディレクトリ(フォルダ)はCMSテキストとしても機能し、イメージ的には封筒の外に記述をするという雰囲気が理解しやすいと思います。

最終更新日: $Date: 2008-10-19 13:49:06+09 $

編集と公開

グラフィCMSでは、契約グループ内で作業、編集している情報は、その中でしか見ることができません。Web インターフェースを利用しているので、スタイルシートを変更することでデザインを変更したりすることは、この中でも出来ますが、これは契約グループ内のメンバーでしか見えない情報になっています。

この部分がグラフィCMSの大きな特徴ですが、CMS内のサブツリーに、FQDN (Fully Qualified Domain Name) を与えて、「公開」という作業を行うことで、Webサイトにするという機能で、グループ内の情報から、パブリックな情報への移行をするということを可能にしています。

グループ内で共有している情報、長期的に保存してきた情報の中から選択的に集めて、編集をして、公開情報にできるということです。

さらに、公開後のサイトについても、Basic 認証を行って特定の人々にしか見せないということもできるようにしています。さらに、契約グループごとに、公開時に使用するサーバを分けてしまうということもでき、この場合にはファイアウォールのフィルタリングや、VPNで、IPアドレスでアクセスを制限してしまうことも可能です。

CMSで編集を行っているときには、編集専用のサーバ群 (cms1.graphy.ne.jp) に SSL でアクセスするようになっています。情報を一括してアップロードするときに限って、ftp でディレクトリ構造ごとアップロードできるようになっています。

「公開」というプロシージャを行うためには、あらかじめドメインを設定しておく必要があります。公開プロシージャでは、サブツリー以下に、そのドメインの下のホスト名を与えて、バーチャルドメイン型の設定が、公開サーバ群 (www.graphy.ne.jp) に行われ、参照できるように、DNS を含めた設定が行われます。

この公開は、htmlで書かれた通常のWebサイト用のコンテンツにも適用でき、一般のオーサリングツールで作成したものを、一旦 CMS の管理下において、Webサイトにすることもできます。この場合にも履歴管理機能は働きます。

グラフィCMSは、単一のソフトウエアではなく、複数のサーバを管理するシステムとして稼動しており、それぞれの機能はそれぞれの要求に応じて、ロードバランサを使ったりして冗長化しています。

最終更新日: $Date: 2008-10-18 11:31:43+09 $

ユーザ管理

UNIXは、それ自身マルチユーザシステムであるので、ファイルのアクセス権について、3階層の権限管理が行われており、一般的なアプリケーションではそのユーザ管理を利用するほうが、明らかに有利です。

しかし、UNIXのユーザ管理に依存するのでは、制約も大きくなるので、自由なユーザ空間を得るためには、 独自のデータベースを構築して、その下でリソースの管理を行わなければなりません。オープンソースのCMSでは、ユーザ管理は独自に行っていますが、そのためにファイルもすべてそのデータベースの中に入ってしまい、普通のファイルとして存在することはしていません。

最近は、Blogや Wiki のおかげもあって、オープンソースのデータベースも非常に信頼性が高くなりました。しかし、10年前では、フリーのデータベースとして、postgres などは存在していましたが、やはりユーザは少なく、活用事例も少なかったと思います。

そのため我々も開発には、Oracle や、Cybase などの商用製品を利用することが一般的でした。受託案件では、ユーザはフリーのデータベースは全く信用してくれないので、こうしたものを使わざるを得ませんでした。そのため勢いシステムは高価なものになってしまい、拡大再生産には向かないものになってしまいました。

グラフィCMSは、オープンソースのデータベースのpostgresを使用しています。

そして、CMS専用のシステムで運用されています。ファイルシステム上にファイルが展開されているので、見えてしまっていますが、他にユーザはいないので差し支えないのと、履歴管理が行われていますので、万が一変更されても、CMSシステムからそのことが分かるし、直前の情報に復帰できます。また、ファイルのハッシュ値をデータベースで管理していますので、同一性の確認をアクセスするときに行っています。

グラフィCMSは、FreeBSD上を使っていますが、FreeBSDには pam という認証インターフェースが用意されており、pam をサポートするアプリケーションでは、UNIXのユーザ認証以外の認証機能によって、動作を行うことが可能になります。これによって、いくつかの認証を必要とするユーティリティをグラフィCMSの認証機構と連動させています。

最終更新日: $Date: 2008-10-19 13:20:27+09 $

イメージの取り扱いとメタデータ

デジタルカメラの普及で、写真の扱いが非常に便利になりました。デジタルカメラで撮影したデータには、画像として目に見えるもの以外に、撮影時刻、カメラの機種、シャッター速度、絞り値など撮影データが含まれています。また、カメラを縦位置で使ったのか、横位置で撮影したのかという情報なども含まれていて、これを見て自動的に写真を回転することもできます。多くの写真を整理、処理するソフトウエアでは、この情報を利用しています。また、この EXIF という規格には、自由にユーザが書き込める場所も用意されています。マイクロソフトの Photo info というプラグインソフトウエアは、Explorer (Internet Explorerではなく)に、EXIFを編集する機能を付け加えています。

この情報は、JPEGだけでなく、デジタルカメラの RAWデータではより詳しく入っています。こうした情報を扱うためのツールはオープンソースでも存在しています。

ただ、こうしたメタデータを保持したままのファイルは大きくなるので、従来の Blog サービスなどでは嫌われていることがあり、すべてのメタデータを捨ててしまうというものも少なくありませんでした。

グラフィCMSでは、ともかく情報を集めてから編集することを目標にしていますので、デジタルカメラのメモリーカードから、EXIFデータを見て、特定のディレクトリに ftp で一括アップロードするインターフェースも有しています。ただし、EXIFデータでユーザID, Password の働きをさせるので、ちょっとした設定が必要になる場合もあります。

グラフィCMSでは、イメージの扱いは、通常のイメージの取り扱い以外に、photo オプションを用意していて、photoオプション付の場合は、縦横の自動判定、変換や、アルバム用のサムネール作成などをできるようにしています。JPEGだけではなく、RAWデータも現像機能はいまのところありませんが、プレビュー用のJPEGデータを取り出して表示できるようになっています。RAWデータは表示できませんが、ダウンロードできますので、共有目的には役立てられます。

このような、画像や、ドキュメントなどで、本体データ以外に含まれているさまざまな付随情報を総称して、メタデータと呼びます。マイクロソフトのOfficeで作成したドキュメントや、PDFファイルでも、適正に運用されていれば、作成者、編集時刻などが含まれています。

情報を別々に管理せず、本体データと一緒に扱うことができるので、失われる危険性が少なくなります。Adobe は、これを汎用的に扱うために、eXtended Metadata Platform (XMP) を提案しています。Adobe の一部のソフトウエアではすでに採用されています。これは、xmpを別のファイルにはしてしまうのですが、xmp の中には本体のファイル名などの情報が含まれているので、xmp ファイルを見ればたどれるようになっているというわけです。

グラフィCMSでは、このメタデータを最大限に活用して、情報を管理するようにしています。ただし、ファイルの種類によって、保持するメタデータは異なるので、これを切替ながら参照できるように、メディアブラウザの機能を実装しています。

最終更新日: $Date: 2008-10-19 13:17:39+09 $

記述性の向上

Webの記述は、html (hyper-text management language) でされています。この記法は、ドキュメント間の連携をとることは意識されていますが、ファイルシステムの存在を前提とはしていません。そのため、リンク先のドキュメント、ファイルへのアクセスには正確な名前を記述しなければなりません。

コンピュータでファイルを扱うときには、ワイルドカードという規則的な文字列へのマッチングを行う記号で複数のファイル名を指し示すことができます。より、複雑な記述のできる、正規表現という文字列マッチの方法もありますが、グラフィCMSでは、現状では Window などで使用されているレベルのワイルドカードのサポートを行っています。* で任意の文字列にマッチし、? で任意の一文字にマッチするというものです。

このワイルドカードは、CMSテキスト内で、ファイル名を指示するときに利用できます。たとえば、 [[Image:*.jpg|photo|ordname|150px|#green]] というように記述すると、そのディレクトリ内にあるすべての、jpgで終わるファイルについて、背景をgreenにしたフォトアルバム用の150pixelのサムネールの作成をして並べるという指示になります。ファイル名を一つずつ書く必要がありません。

さらに、CMSテキストを、インラインで包含して、ページを作成することができます。 [[Include::2008年10月*|ordrevctime]]

というように記述すると、自分のドキュメントディレクトリ以下にある、2008年10月で始まるcmsファイルを、作成した日と逆順に展開するということになり、blog のように見せるページを作成することができます。この機能で、Include 先のファイルだけを入れ替えることで、トップページのお知らせ的な場所を入れ替えたりするという使い方もできるようになっています。

このほかにも、いくつかの記法があり、少ない記述で情報を整理して表示することを目指しています。従来は、同じことを html で実現するためには、php などのスクリプト言語を使わないとできなくて、難しくなりがちな部分であった部分ではないかと思います。

最終更新日: $Date: 2008-10-19 13:45:06+09 $

インデックス、サイトマップ

Webを作っていると、目次や、サイトマップ(概ねサイト全体のコンテンツや、その構造を表示したもの)を簡単に作れたらと思うことがあります。グラフィCMSでは、いくつかの方法を用意しています。また、大量な資料などを整理するには、まず目次があればそこから始めることができます。グラフィCMSは、そこにあるファイル、ドキュメントを利用することを基本にしていますから、その内容を検索し、自動生成できるようにしています。

あるフォルダ内にあるページへのリンクを、箇条書きの形で自動的に生成することができるようにしてあります。グラフィCMSでは、Wiki と同じ方法を使っていますから、言葉をそのままリンクにすることができますので、そのままタイトルをリンク(ドキュメント名)にしておけば次のようにして目次を作成できます。ただし、これはCMSドキュメントのみが表れます。それ以外の、たとえばイメージデータを並べるには、Image 文を使います。

[[DirectoryIndex::*|ordname|+10]]

ページの並び順は、「|」に続けて指定する語句で決まります。

ordname または省略時

ページ名の昇順に並びます

ordrevname

ページ名の降順に並びます

ordctime

作成時刻の昇順に並びます

ordrevctime

作成時刻の降順に並びます

ordmtime

更新時刻の昇順に並びます

ordrevmtime

更新時刻の降順に並びます

+n

表示する行数を n 行に制限します

この Web では、この DirectoryIndexを目次作成に使っています。ordname を使って並べるために、先頭に G001, G002 とかをわざわざつけていたりします。 「つれづれ」では、ordrevctime を使っています。こうすると、新しく書いたものが、上に来ます。省略時は、CMSテキスト以外表示されませんが、PDF ファイルなど資料をアップロードしたときには、all 指定をすることで、すべてのファイルを目次に表示することができます。

[[DirectoryIndex::*|ordname|all]]

all

すべてのファイルを表示します

nocms

CMS以外のファイルを表示します

cms (省略時)

CMSテキストのみ表示します

もうひとつは、簡易サイトマップです。サイトマップの作成は、SEO対策に有効だといわれ、自動的に生成するシステムも存在していますが、グラフィCMSでは

[[SiteMap:/公開ページ/コーポレートサイト]]

で作成できます。この Web のサイトマップもそうして生成しています。

最終更新日: $Date: 2008-10-25 13:29:51+09 $

グラフィCMSとは何か

CMSとは、Contents Management System の略です。しかし、この言葉は非常に幅広く使われています。そもそも、コンピュータ上で情報を管理するシステムはすべて、CMS だと言っても確かに間違いではありません。

Blog に代表される簡単に Web で情報発信ができるというシステムも CMS ですし、非常に大規模な Web サイトで、大人数でサイト全体を制作、管理する場合に、作成、変更などの権限を詳細に管理するために使われるものもあります。 グラフィCMSでは、最終的にはこの両者の機能を目指しています。

簡単に情報発信をできるという点は、Wiki を踏襲しています。Wikiは、Wikipedia で使われている MediaWiki に代表されるシステムです。グラフィCMSの基本ドキュメントの記述は、htmlではなく、この簡易的な記法を採用しています。グラフィCMSでは、ディレクトリ構造を持つことができますが、ディレクトリ構造を使わない限り、MediaWiki と同じように使用することができます。リンクの作成方法は、Wiki と同様に行うことができます。

情報の管理という面では、複数のユーザに対して、各ファイルの読み書き、公開について細かな権限を設定することができます。

さらにMediaWiki にはないディレクトリ構造を持っています。そのため、名前の参照においては同一ディレクトリ内では、Wiki同様の指定ができますが、異なるディレクトリの名前はディレクトリを明示的に指定しなければなりません。しかし、一般的な情報管理においては、同姓同名的な名前の扱いを行う点では有利に働きます。たとえば、植物の名前等では同じ品種名が違う植物に存在します。たとえば、ロココという名前を持つチューリップとバラがあります。これは、バラ/ロココとチューリップ/ロココのように区別できます。

グラフィCMSでは、Wiki や Blog のシステムで多く行われているような、コンテンツ自体をデータベース内に格納する方法を採用していません。名前や、プロパティ、メタデータ、インデックス情報はデータベースに格納されていますが、コンテンツ本体はデータベースには格納せず、UNIXのファイルシステム上の普通のファイルとして存在しています。これによって、どのようなファイルであっても、大容量の画像や、映像データをも高速に扱うことができます。グラフィCMSは、OSを一体化した、CMS専用システムとして設計されています。

ディレクトリ構造の管理は、エクスプローラーライクな、ツリービューで行うようになっています。これは、Yahoo User Interface ライブラリを使って実現しており、この中で、ファイルのアップロード、ダウンロード、コピーや移動ができるようになっています。

ファイルの参照については、ワイルドカード指定を行うことができます。htmlには、ファイル管理という概念はありませんから、すべてのファイル名を明示的に書かなければなりません。グラフィCMSでは、ファイルを参照する場面では(たとえば、Image や、Include)、 Windows 同様の * や ? によって複数のファイル名にマッチさせ、それを昇順、降順で並べることができます。写真を並べるような場合では、1行だけの表記でページを作ることができます。

[[Image::*.JPG|photo|##582828|200px]]

上記の例では、この1行だけで写真を並べています。

さらに Blog, Wiki タイプの CMS にはない機能としては、html をサブツリーとして、格納して扱うことができるということです。これは、PCベースの Webオーサリングツール(たとえば、Dreamweaver など)で作成した Web をツリーの下へアップロードすることで、利用し、リンクを張って Web として統合できます。既存の html をそのまま利用することができるというわけです。

格納されているコンテンツの管理としては、ツリービューのほかに、メディアブラウザがあります。メディアブラウザでは、すべてのコンテンツを縦覧できるものです。各ファイルは、メタデータを抽出してデータベース化されており、作成日、変更日のほか、デジタルカメラで撮影したデータであれば、JPG ファイルに含まれる EXIF データのうち主要なものを取り扱い、抽出、ソート、検索が可能になっています。

最終更新日: $Date: 2008-11-14 20:48:37+09 $

なぜグラフィCMSなのか

Webは、ブラウザが、htmlで書かれたファイルをネットワーク経由で取得して、解析し、必要な画像ファイルなどを取得し、表示します。

その表示は、ブラウザが html を解釈して行うことなので、ブラウザの利用者の環境、どんなブラウザを使うか、どんなパソコン、OSを使うか、画面の大きさ、解像度はどうなのか、ブラウザのウインドウはどんなように開いているのか、表示している文字の大きさをどう設定しているのか、さまざまな要素によって異なります。

したがって、ページを作った人が作った時に見たものと同じものが見えるわけではありません。Web はそういうものであるということを理解すべきです。

ところが、一般に PC 上で、ワードプロセッシングなど、編集を行うソフトウエアは見たままのものが手に入る (What you see is what you get, WYSIWYG)というものが、ほとんどです。そのため、PC上で Web ページの作成をするソフトウエアも多くの場合、この形態をとっています。

しかし、Graphy CMSでは、WYSIWYGでの編集ではなく、Wiki形式の簡易的なマークアップ言語形式を採用しています。これは、ブラウザ経由でサーバ側のソフトウエアで完全な WYSIWYG を実現することが難しいということもありますが、Webというソフトウエアシステムが、htmlというマークアップ言語を使っていて、最初に書いたように、作り手の見たものと受けての見たものが違うために、見出し、箇条書きという形式を意識するほうが望ましいと考えているからです。また、このマークアップ方式は、ソフトウエアで読み取って、さまざまな表示に変換することができるメリットもあります。現在の Web では、スタイルシートという技法を用いることによって、デザイン要素と、内容をほとんど分離することができます。たとえば、箇条書き形式で書いたものを、2段組みに変化させたりすることができます。

さらに、グラフィCMSでは、CMSのマークアップ言語だけで書かれたものは、TeXに変換して、きれいな印刷イメージを得ることもできるようにしています。これは、Newsgraphy というプレスリリース配信サービスで使っています。

このように、マークアップ言語で書いたほうが、ソフトウエアフィルタや、スタイルシートによって表示を変化させられるというメリットがあるので、積極的にこれを採用しています。

最終更新日: $Date: 2008-11-14 20:52:12+09 $

ホスティングシステムとしてのグラフィCMS

グラフィCMSは、Wiki 型簡易記法によるページ作成機能を付加した、バーチャルドメイン型ホスティングシステムと言い換えることもできます。

通常のホスティングシステムは、ある場所(サーバ、ディレクトリ)を割り当て、そこにWebサーバ名(サイト名)を付けて、アクセスできるようにします。たとえば、http://www.sample.com というような名前のサーバを作ってもらい、システム管理者から指示された場所に、ftp などで html ファイルなどをアップロードします。

グラフィCMSでは、このサイト名が先に決まっていて、そこにコンテンツをアップロードするという考え方を全く反対にして、コンテンツを先につくり、そのコンテンツにサイト名を付けて Web サーバを作るという管理形態を実現することにしました。

グラフィCMS の編集画面では、左にツリービューが表示されています。ここではエクスプローラーライクなインターフェースでディレクトリ構造が示されています。これは、通常のファイルシステムと全く同じです。唯一の違いは、グラフィCMSではフォルダ(ディレクトリ)が、フォルダとしての役割しか果たさないというわけではなく、それ自身をCMSドキュメントに出来るということです。これはあたかも、封筒の表面に文字を書いているようなものです。中に何が入っているかを記述して、その中に写真を収納しておくというようなイメージになります。

ただし、グラフィCMSに他のオーサリングツールなどで作成した Web サイトをアップロードして管理する場合には単なるディレクトリになります。

さて、ホスティングシステムでは、アップロードするとそれがサイトとして見えるようになります。しかし、グラフィCMSでは、そうなりません。「公開」というプロセスを経て、始めて Web サイトになります。

「公開」作業は、トップページになるドキュメントを表示した状態で、「公開」のアイコンをクリックします。トップページのドキュメントが html である場合も同様に、その html ファイルを表示した状態(CMSの編集フレーム内に表示されます)で、公開作業をします。

そうすると、どういうホスト名、ドメイン名で公開するかを設定する画面があらわれます。ドメイン名はあらかじめシステムに設定しておく必要がありますが、複数のドメインを管理することができますので、公開時のサイト名は、任意のホスト名+選択したドメイン名という形になります。たとえば、example.jp というドメイン名を選択して、album というホスト名を付けた場合、http://album.example.jp というサイトが生成されます。

このときには、システム的には DNS の設定、http サーバのバーチャルホストの設定などが同時に行われます。通常のホスティングシステムでは、この部分が管理者によってあらかじめ行われていて、コンテンツを指定の場所にアップロードするということを求められるわけです。

グラフィCMSでは、DNS の設定機能と、バーチャルホストの設定を自動化することで発想の転換を図っています。DNS の設定については、これ以外の設定も、GUI で細かくできるようにしていますので、そのドメインをグラフィCMS以外の目的でも使用することも自由のできる機能を提供しています。

最終更新日: $Date: 2008-11-16 18:04:34+09 $

簡単な記述と柔軟なデザイン

CSS (Cascading Style Sheet) は、文書の構造とデザインを分離して記述することを実現する為に提唱された「スタイルシート」の、具体的な仕様の一つです。CMS での Web コンテンツ作成では、この CSS を最大に活用し、デザイン表現を行います。また、一般のオーサリングツールよりも、スタイルシートの理念である構造と体裁の分離を実現しやすいともいえます。

できるだけ簡単な記述で、さまざまなデザインを実現する必要があります。見出しの文字の大きさ、色、装飾などは簡単なケースですが、テーブル、段組、ボックスなども Wiki の記法で記述したものに CSS を適用して、表現できるようにする必要があります。

Graphy CMS で作成したさまざまな Web サイトにその表現のサンプルを見てとれます。

基本的なデザイン要素は、タイトル部分、メニュー、サイドバーの配置です。この部分は複数のページに対して同じものが表示されるようにするための工夫も必要になります。配置やデザインは CSS で、サイドバーやメニューについては、メニューバーの要素として、ヘッダ、右、左、フッターの内容を記述し、選択するようにしています。

次に、本文(ボディ)部分のデザインですが、もっとも変化が大きくなるのは、箇条書きの表現です。段組テーブルボックス型のデザインは、すべて箇条書きの表記にスタイルシートを当てはめて表現したものです。

ただし、CSS で多彩な表現ができる代わりに CSS の作成は、html コンテンツの中の、div や、class の名前と連携して作成しなければならず、なかなか簡単にはできないものです。また、プログラミング言語のように論理構造を持っているわけではなく、指示の羅列なので、人が作成したものを読んで理解するのもかなり困難です。さらに、式(パラメータによって数値を代入し、演算を行うなど)を記述することができず、数値を指示する部分は、都度、数値を書かなければなりません。

そのため、Blogサービスなどでは、多数のスタイルシートを用意してユーザが選べるようになっています。グラフィCMSではこれらのサービスと異なるのは、各ページに別々のスタイルシートを適用することができるということです。ただし、これができるということは逆にサイト全体としての統一感をだしつつ、さまざまなデザインでページを作るためには、各ページ用の CSS を自分で全部用意しなければならないということです。

私たちは、自分たちで使うために、一斉に色を代えるツールとかを作って使ってきましたが、現在、CSSを簡単に生成するデザインウイザードの開発を進めており、サービスの一部として提供する予定です。デザイン要素を選び、長さや幅などの数値を指定すると関連する場所の数値等を計算、調整して、CSS ファイルを生成するようなものです。最終的な形はまだやや流動的ですが、これによりかなり自由に好みのページデザインに近づけるのではないかと思っています。

最終更新日: $Date: 2008-11-29 16:51:34+09 $