MODx
出典: フリー百科事典『ウィキペディア(Wikipedia)』
| MODx | |
|---|---|
| 開発元 | The MODx Team |
| 最新版 | 0.9.6.3 / 2008年12月23日 |
| 対応OS | クロスプラットフォーム |
| 種別 | コンテンツマネージメントシステム |
| ライセンス | GNU General Public License |
MODx(モドエックス,モッドエックス)はPHPとMySQLで動作するオープンソースコンテンツマネージメントシステムである。Etomiteから派生した。基本仕様のシンプルさ、テンプレートシステムの柔軟性・拡張性の高さ、URL設定の自由度の高さ、高度なキャッシュ制御による軽快な動作、充実のユーザ権限管理(※ただし承認フローは未実装)、Ajaxを活用したスタイリッシュかつ操作性の高い管理画面が特長。
目次 |
[編集] CMSとしての機能
[編集] デザインワークとの親和性
テンプレートの作り方は「編集可能領域」をコンテンツ部分として埋め込むDreamweaverの方式とよく似ており、普通のHTMLのタグをほぼそのまま利用できる。コア及び拡張モジュールが出力する複数のボックスの組み合わせを前提としたXOOPSのようなCMSとは異なる。コンテンツの扱いが一元的である(コンテンツ管理の仕組みやUIが、フォーラムや画像ギャラリー、通信販売など、モジュールにより変わらない)点では、Movable TypeやNucleusなど独自タグ方式を用いるブログ型CMSと似ている。ただし既存のブログやフォーラムの機能をMODxにジョイントするインテグレータを組み込む場合は、Xoopsなどと似たような拡張イメージになるが、この場合でもデザインワークの自由度はさほど損なわれない。
[編集] テンプレートとチャンク
「テンプレート」と「チャンク」の仕組みはDreamweaverの「テンプレート」と「ライブラリ」の関係に相当する。テンプレートデザインは所属カテゴリーなどに縛られることなく、ページごとに自由に割り当てることができる(これもDreamweaverと似ている)。ポップアップウィンドウのような単発性の高いページも手軽に作ることができる。他のCMSでこの自由度の高さを備えたものは少ない。
また、後述する「テンプレート変数」を活用することにより、投稿画面を自由に設計できる。「変数」という名前ではあるが、これは一般的な表現としては「カスタムフィールド」に相当するもので、タイトル・本文など以外に自由に入力項目を設置することができる。これらカスタムフィールドの設定がテンプレートごとに関連付けられているのがMODxの大きな特長と言える。つまり、「カテゴリー」などサイトの構成に対してではなく、ページのデザインに対して入力項目を関連付けている。
if判定などによる分岐処理記述も基本的に使わない。たとえばトップページ専用のテンプレートが必要であれば、トップページ専用のテンプレートを作る。
[編集] 静的構成のサイトを意識
自由なURLカスタマイズ・高度なキャッシュ制御による高速出力などにより、MODxによって作られたサイトは通常のhtmlファイルで静的に構成されたサイトと見分けがつかないものにできる。また、エクスポート機能を使うことにより実際に静的なサイトを作ることもできる。
[編集] コンテンツ構造
多くの有名CMSのコンテンツ構造が制限なくコンテンツを追加していけるスタック型であるのに対し、MODxはサイトの全貌を直感的に把握しやすいツリー型を採用している。WindowsやMacなどPCのファイルシステムがツリー構造(またはディレクトリ構造)であるのとイメージが近く、CMS初心者には理解しやすい構造である。必ずしもドキュメントの頂上がサイトのトップページになるわけではなく、ツリー内のどのページでも、自由にトップページに指定できる。これは、Windowsの「デスクトップ」の実体がルートに存在しないのと似ている。
MODxのコンテンツ構造は単純さを重視している。「カテゴリーとエントリー」といった概念はないし、出力されるコンテンツがモジュールによって違うこともない。すべて「ドキュメント」によってサイト全体が構成される。ドキュメントはMovable Typeでいうところの「エントリー」のようなものであるが、MODxのコンテンツ構造がツリー体系である以上、ドキュメント間には親子の関係はあるものの、親ドキュメント独自の属性・サブドキュメント独自の属性といったものはない。全てのドキュメントが対等であるため、ドキュメントの移動・複製・削除は自由にできる。
デスクトップOSが「Spotlight(Mac OS X)」などディレクトリ構造に依存しないファイル管理を志向しつつあるのに対し、もともとスタック型のデータ管理からスタートしたCMSが逆にディレクトリ構造に回帰しようとしている点は興味深い。
[編集] 静的コンテンツ・動的コンテンツ
MODxは、静的コンテンツと動的コンテンツの両方に対応している。
[編集] 静的コンテンツ
静的コンテンツを提供する方法は2つあり、運用目的に応じてどちらかを選ぶことができる。。ひとつは単純なURLやキャッシュ制御によって「見た目の静的」を実現することである。これはハイブリッドな静的構成であり、MODxの特性である。もうひとつは、Movable TypeのようにHTMLファイルを書き出す「リアルな静的」である。前者は見た目だけであり、実際にはスニペットなど動的ギミックを利用することができる。後者は動的なギミックを全く使えなくなるが、セキュリティ上の懸念やチェック体制などの問題などの理由で特にエンタープライズ向けに需要がある運用である。Dreamweaverのようなオーサリングツールをサーバにインストールし、単純に制作ツールとして利用するようなイメージに近い。
[編集] 動的コンテンツ
前項目でいう「ハイブリッドな静的構成」がこれにあたる。Dreamweaverなどのオーサリングツールでは不可能な、自在なコンテンツコントロールによる動的コンテンツが作れる。新着情報のページをひとつ作ればトップページにも自動的にリンクを張る、などといった運用は簡単である。それは他のCMSでも可能だが、MODxではこれらの動的ギミックを、個々のページとテンプレートの区別なくパーツ感覚で手軽に貼り付けられ、柔軟に使える。たとえばナビゲーションスニペットはテンプレートに貼り付けるといいが、新着情報一覧スニペットはトップページに貼り付けるだけでいい。
[編集] 管理画面
一般的なCMSと、MODxの管理画面の雰囲気は異なる。これは、Ajax技術を活用し、デスクトップアプリケーションに近い操作性を実現しようとしているためで、開発中のVer 0.9.7でさらに進められる。コンテンツ管理の仕様が単純なため、普通に管理画面を設計すると扱いづらくなる。たとえば「カテゴリー単位でテンプレートデザインを一括変更」といった、普通のCMSなら簡単にできることがMODxの設計仕様には最初から盛り込まれていないし、コアでは今後も対応しない(ただし拡張モジュールによる対応は可)。つまり管理画面の操作性で補うことが必然である。エクスプローラ感覚の手軽なページ操作ができれば、独自のロジックに頼る必要はないという考え方だ。
[編集] スニペット
ページ単位で手軽に設置できる「スニペット」と呼ばれる動的出力パーツも特徴のひとつである。スニペットは普通のphp文がほぼそのまま記述でき、MODxのAPIも利用すれば自由度の高い動的サイト作りが簡単に実現できる。一般に配布されているスニペットも多く、その大半はFTPすら利用することなく、管理画面から簡単なコピー・ペーストによってコードを貼り付ければ使用できるようになっており、簡単にインストールできる。ただし高度な働きを持つスニペットは複数のファイルにより構成されており、FTP操作等が必要である。
[編集] チャンク
スニペットと違い、静的なHTML文によって書かれるパーツ的なもの。php解釈がされないこと以外はスニペットと変わらないように思えるかもしれないが、推奨される使い方は大きく違う。チャンクは、Dreamweaverでいうところの「ライブラリ」のような使い方をする。たとえば複数ページにスポット的に挿入したいバナーなどに利用する。チャンクの中身を書き換えると、呼び出し先のページの出力も書き換わる(というより、その都度呼んでいる)。Dreamweaverと同じように、チャンクはドキュメントにもテンプレートにも手軽に貼り付けることができる。ヘッダやフッタ、ナビゲーションなどをチャンクとしてパーツ化すると、テンプレートをすっきり分かりやすく整理・記述できる。特に複数のテンプレートにより構成するサイトでは便利である。テンプレートを自由に割り当てられるのがMODxの長所のひとつなので、規模の大きいサイトほどチャンクは有効に利用できる。
またチャンクは、パターン出力機能を持つスニペットの出力のひな型として利用することもできる。
[編集] プラグイン
「ページ出力時」など「イベント」に対して動作を関連付けられる「プラグイン」という仕組みがある。たとえばアクセス解析やwiki記法サポートなどに用いられる。また管理画面を操作する場合のイベントにも割り当てられるため、たとえばTinyMCEなどWYSIWYGエディタの実装にも用いられる。スニペットが使われるのがページ単位でありページ内の任意箇所にトリガー的に記述するものであるのに対し、プラグインはサイト全体の機能拡張にも用いられるのが特長のひとつでもある。
[編集] モジュール
複数のチャンク・スニペット・プラグインを束ねてアプリーケーション感覚で組み立てられる「モジュール」という仕組みがある。モジュールはMODxの管理画面内に専用の領域を持つことができる(※管理画面の一部のカスタマイズはプラグインで可能)。
[編集] テンプレート変数
MODxの特徴の一つである「テンプレート変数」は直訳であり少し分かりにくいが、いわゆる「カスタムフィールド」である。多くのCMSが「タイトル」「内容」などといった項目で個々のエントリーを構成するが、MODxではこうした項目の設定をかなり柔軟にできる。入力に用いるインターフェイスを自由に選べるのは当然ながら、出力を自由にコントロールできる点は他のCMSではあまり見られない特長である。たとえば、もしその項目を入力しなかった場合は項目ごと出力しないなどといった制御が簡単にできる。この出力コントロールの仕組みは「ウィジェット」と呼ばれ、CMSならではの出力コントロールを実現するものである。ウィジェットは自作することもできる。
[編集] ユーザ管理
ユーザ管理の概念に優れている。運営に携わるメンバーを管理するユーザ体系と、会員制サイトなど利用者としての参加を管理するユーザ体系の2つを持つ。ユーザ単位で割り当てられる属性は多く、きめ細かい。思いつく限りの自在なコントロールが可能。
[編集] 習得にあたって最低限覚えるべきこと
スニペットやプラグイン・モジュールなどの拡張は、使いこなせば便利なものではあるが必須ではない。デザインや構成の自由度の高さがMODxの特長のひとつであり、まずは簡単なテンプレートの作り方を覚えるだけでも、CMSとしてのMODxの便利さは十分に体感できる。テンプレート記述に必要なMODxタグは、まずはtitleとcontentの2つである。テンプレートの扱いに慣れたら、チャンクを利用して各部をパーツ化するなど工夫する。静的HTMLファイルをローカルで編集しFTP等で同期をとる従来の方法と違い、サーバ上のリソースを直接編集するダイレクト感を安全かつ手軽に感じられるのが、あえてCMSを利用して通常のサイトを運用するメリットのひとつである。この種のライトな使い方ができるCMSは、MODx以外にはあまり見られない。CMS的な定まった枠に収まらない既存のサイトをCMS化するにも、MODxは向いている。
最新版のMODxは同梱プラグインなどの重量化が進んでいるため大がかりな構成イメージがあるが、基本はシンプルなCMSである。簡単に習得できて、手軽に運用できる。しかし最初から拡張機能に依存した構成とすると、逆にMODxが非常に難解なCMSに感じられることもある。まだしばらく仕様変更が繰り返されるベータ版であるため、最新の拡張機能の採用は慎重に検討する必要がある。またコアと比べ拡張機能の脆弱性チェックは甘い様子で、同梱のスニペット・プラグインですらセキュリティホールが発見されることがある。
[編集] 課題
[編集] 設計思想に由来する問題
優れた設計思想を持つMODxだが、苦手なこともある。たとえば国内で人気があるCMSであるXoopsやWordPressは、コンテンツ管理の仕組みにスタック型を採用しているため、特に意識することなく投稿を積み重ねていくことができる。一方、MODxはツリー型であるため、ドキュメント数がツリーで見渡せる範囲を超えると扱いづらい。Dreamweaverなどで不便を感じないレベルの運用であればMODxでも同様に問題はないが、コミュニティやブログ・通販サイト・画像ギャラリーなど場合によっては数千から数万ものエントリー(コンテンツ)を持つサイトの運用に関しては、今のMODxのUIでは限界が見えてくる。ただしスニペットを利用すればphp文を自由に書けるため、そういう意味では制限がない。SMFやWordPressをシームレスに連携させるインテグレーションなども配布されているが、管理画面までが統合されるわけではない。いずれはMODxをフレームワークとして利用した高機能なフォーラムやブログの登場が期待されている。
すでに、MODxをフレームワーク的に利用したKiweeCommerceやTreasureChest(いずれも通信販売用)のようなモジュールも現れている。
[編集] 日常的な更新のしづらさ
ブログなどシンプルな入力画面を備えるCMSに慣れていると、MODxのページ編集画面の項目構成が冗長に感じられることがある。「タイトル」「内容」以外に、「長いタイトル」「説明」「リンク属性」「要約」などがずらり並ぶ。これらの項目のため、肝心の「内容」は画面ひとつぶんスクロールする必要がある。コア側では項目カスタマイズに対応する予定がないため、任意の項目を非表示にするにはManagerManagerなどのプラグインを利用する必要がある。
[編集] 公式ドキュメントの不備
API等に関するドキュメントがまだ整備されていない(※注・現在は0.9.7用のドキュメント整備に注力している)。スニペット・プラグイン作成のガイドラインなども定められておらず、プログラマ個人の解釈により拡張が作成されているのが現状。
[編集] 日本コミュニティ
2009年1月11日に日本国内の拠点である、MODx日本公式ポータルがオープンした。基本的にはMODx本家サイトに世界中のリソースを集約する考え方のようである。本家サイトには日本語コミュニティもあり、他国と同様、フォーラムが用意されている。コミュニティのモデレータは2009年1月現在5名。フォーラムの情報整理の他、OSCなど国内イベントへの参加なども行なっている。
2008年7月18日、日本コミュニティモデレータチームと本家開発チームのライアン氏との音声対談が実現(Skype利用)。これをきっかけに、公式拠点を国内に整備する流れが加速。対談を通じて、日本の作家が作った数々のリソースやセキュリティ対策が海外で大きく評価されていることも知ることができた。
2009年1月11日にMODx日本公式サイトがオープンした
[編集] 次期バージョン
- MODx097アルファを入れてみたよ!
- MODx097の正式alpha版が入手できます。
- MODx097をインストールしてみました
- MODx 096系からMODx Evolution1.0へ
- MODx 0.9.6.xがMODx Evolution 1.0に変更(MODxBLOG)
- MODx 0.9.7a Elements Tree - YouTube
これまでVer 0.9.7として開発を進めていた次世代版MODxが、MODx2.0・コードネーム「Revolution」として正式リリースを目指すことになった。一方、すでに普及が進んでいるVer0.9.x系はMODx1.0・コードネーム「Evolution」として同じく正式リリースを目指す。つまり2つの正式版が並走開発されることになる。
Ver2系(Revolution)では管理画面のインターフェイスが一新され、今以上にスタイリッシュなものに変わる。全面的にExtJSが採用され、操作性が格段に向上する見通しである。内部構造的にはPDOノウハウを意識しており、xPDO(OpenExpedio)と呼ばれるライブラリ(開発の進捗についてはフォーラム参照)が導入される。スニペットコールなどの書式が一部変わるため、デザインワークに影響する可能性がある。これを考慮し、書式変換ツールが提供される予定。
基本的には、よりフレームワーク志向が強化される。管理画面は枠組みとして提供され、サイトの目的に応じてメニュー構成などを自在に組み立てるものとなる。シンプルなサイトを管理するなら多くのメニューを切り離してシンプルな管理画面とすることができるし、特殊な目的を持つサイトであれば自作のモジュールを組み込むなどして独自のCMSとして仕上げることも可能。このあたりの仕様はまだ策定段階ではあるが、構想としてはこのような方向性を持っており、既存のCMSよりも扱いやすいフレームワークとして独自のジャンルに立つことが期待されている。
[編集] その他の情報
[編集] 解説本
- MODxでつくる! 最強のCMSサイト ISBN 978-4881665732
[編集] 似たタイプのCMS
- CMS Made Simple - 日本語対応も進んでおり注目されている。
- TYPO3 - MODxと比較されることが多い。豊富なリソースと完成度の高さが注目されるTYPO3に比べ、採用技術の新しさと習得のしやすさがMODxのアドバンテージと言える。TYPO3の大きな特長であるTypoScriptは管理効率を大幅にアップさせる優れた言語だが、管理者は多少の学習が必要である。
- SilverStripe
- Syntax Desktop
[編集] CMS AWARDS 2007 受賞
「最も期待できるオープンソースCMS部門」受賞
[編集] 外部リンク
[編集] 情報サイト
- MODx Content Management System
- MODx日本公式サイト
- OpenSourceCMS - MODx管理画面にログインし実際に操作して試すことができる(操作内容は数十分ごとに初期化される)。
- MODx本家フォーラム内・日本語コミュニティ
- 話題の高機能CMS「MODx」 を試す! - 導入からテンプレート作成まで(マイコミジャーナル)
- MODx @ 7bit - 確かなMODx理解に則った技術解説があり、開発の参考になる。
- ボーデンプラッテ - MODx国内普及の草分けとなったサイト。MODx前身のEtomiteの頃から日本語化に取り組んでいる。

