MODX Revolution

新しいコア
ゼロから書き起こされた新設計のコア。この新しいコアはデータベースモデリングフレームワークである「xPDO(オープンエクスペディオ)」を採用しています。xPDOはMODXの主要開発メンバーでもあるジェイソンが指揮をとって開発を進めているプロジェクトです。
フレキシブルなシステム構成
必要に応じてドキュメントルート外にコアをインストールしたり、manager・assetsディレクトリをそれぞれ任意のディレクトリ名に変更して運用したりすることができます。これにより、ひとつのシステムで複数のサイトを管理することができます。管理画面のメニュー構成は自由にカスタマイズできます。
新設計のリソースパーサー
正規表現やeval処理を用いるため多少のクセを持つEvolutionのパーサと違い、Revolutionのパーサはシンプルかつタイトな展開処理となっており、タグ記述の柔軟性をさらに高めることに成功しました。
タグ表現の仕様をシンプルに統一
複数行に渡るタグ表現をサポート。キャッシュ制御の副作用もなく、複雑な入れ子記述でも意図どおりに展開できます。またPHxのような修飾子(モディファイ ア)を、テンプレート変数・スニペットコール・チャンクタグなど全エレメントを通じて同じように用いることができます。Evolutionで時々悩まされるPHxまわりの副作用はRevolutionでは解決されました。
新設計のキャッシュプロセッサ
現在のEvolutionでは管理リソースが5000ページを超えると、キャッシュ処理に起因するパフォーマンス上の問題が生じます(※改善を予定しています)。これを解決するため、Revolutionではキャッシュプロセッサを改善しました。キャッシュの有効無効はテンプレート変数・チャンクを含むひととおりのエレメント単位またはリソース単位で指定できます(Evolutionではスニペット・リソース単位のみ)。また新設計のキャッシュプロセッサはmemcachedベースのキャッシュマネージャの仕組みを実装しており、php処理プロセス層に及ぶ高度なキャッシュ処理を実現しています。
オーバーライド可能なシステム構造
シンプルかつ簡単にMODXコア構造をオーバーライドできます。もちろん、アップデート時に不整合が発生しないよう考慮されています。
コンテキストベースのサイト管理
異なるコンテキストを必要なだけ用意しコアに渡すだけで、自由にViewをコントロールできます。つまり、ドキュメントルートよりも上の領域にインストールしたひとつのコアを通じて、ドメインが異なる複数のサイトをコントロールできることを意味します。
データとしての再利用性が高い、本格的なロギング機能
さまざまなエラーレベル表現を返すことができます(Evolutionでは3種類のみ)。ECHO・HTML・FILEなど各種の出力先を指定できます。管理操作ログ・エラーログ・デバッグなど、さまざまなニーズに対応し、アドオンなどで使用することもできます。
MODxで作られた管理画面
新しいコアとAPIの柔軟性を実証するために、管理画面それ自体をMODXの仕組みを用いて組み立てました。ExtJS・Smartyも利用しています。


▲リソースの移動・並べ替えや、テンプレート変数やスニペットコールの貼り付けはマウス操作で行なえます。

▲テンプレート変数セクションはタブとして独立しました。(上記画像は最新のRevolution2.2系)
新設計のユーザ管理体系及びACL
強固な権限コントロール。属性ベースのACL概念(Attribute Based Access Control / ABAC)を採用。Evolutionでは2つのユーザ管理体系(ウェブユーザと管理ユーザ)に分かれていましたが、Revolutionではひとつのユーザ管理体系として統合されます。外部認証の実装も想定された拡張性の高い設計となっています。
エレメントプロパティ
プラグインとスニペットだけでなく、チャンク・テンプレート変数・テンプレートなど全てのエレメントタイプにプロパティを実装しました。
プロパティセット
複雑なスニペットコールを何度も無駄にコピーする必要がなくなりました。エレメントにプロパティセットを適用すれば呼び出しパラメータをワンタッチで変更できます。プロパティセットはいくつでも作成できます。プロパティセット的な仕様は一部のスニペットが独自に備えていましたが、Revolutionではコアレベルでサポートします。
lexicon(語彙管理)
システムで利用する文言は、すべて管理画面で管理できます(Evolutionでは言語ファイルを直接編集します)。もちろん多言語対応です。利用対象は管理画面だけではなく、サイト構築でも使えますので、多言語対応のWEBアプリの構築に威力を発揮します。
パッケージトランスポートシステム
カスタムプロバイダー(MODx本家開発サイトまたはサードパーティ)から拡張機能やテンプレートを管理画面の中から直接ゲットし、ほとんどマウス操作だけでインストールできます。従来のようにFTPクライアントやテキストエディタなどを用いることはありません。



静的なリソースタイプを追加
ファイルシステム上のファイルをサイトツリー内で管理できます。ドキュメントルート外のファイルも扱えます。ウェブリンクと違い、実ファイルのURLへリダイレクトしません。phpのreadfile関数のような働きを持ちます。
シンボリックリンクとして利用できるリソースタイプを追加
サイトツリー上のリソースの複製を作ることができます。ウェブリンクと違い、複製元のリソースのURLへリダイレクトしません。
※以下の情報は、2010年8月のニュースリリース記事をほぼそのまま転記しています。現在のMODX Revolutionの状況をそのまま現した内容ではないためご注意ください。
MODX Revolutionの経緯とEvolutionとの今後の関係
MODX Revolution 2.0 は、ショーン・ジェイソンの2人がメインデベロッパーとして開発しています。ファウンダーであるライアンより、開発開始が宣言されたのは2008年7月。この時2つのニュースが同時に明示されました。ひとつは、長くベータの時代が続いていたMODXをいよいよ正式版としてリリースするために開発を本格化させるという話。これが今でいう「Evolution」にあたります。
もうひとつのニュースが、これとは別系統でサンプル的に進行していたいわゆる「0.9.7系」を実用的に使えるものにして、自分たちが本当に作りたかったMODXを作ってみようじゃないかという話。これが今回のRevolutionにあたります。0.9.7は0.9.5の処理構造をベースとしつつも、管理画面のUIにExt JSを採用し、これまでのMODXとは全く違う斬新な操作体験を感じさせる作りになっていました。
まず最初にEvolutionが正式版としてリリースされたのがちょうど一年前の話でした。そしてまた一年たって、無事にRevolutionのリリースを果たすことができました。同じ世界観を持つ2つのCMSが、今後並走し本格普及を目指します。
動作環境
http://modx.jp/docs/install/env.html
Revolutionを稼働させるために必要な環境(サーバ・クライアント)は上記のとおり。Evolutionと比べるとやや高度な構成が要求されますが、WordPressの動作が確認されているサーバであれば問題ないでしょう。
Revolutionは搭載できるサーバをある程度選びますが、条件さえ揃えば、サーバが持つポテンシャルを十分に発揮できる高度な処理構造を備えています。
リリース文
本家コアチームのリリース文を翻訳したものに対し、さらに日本チームの解釈を加味したものを、以下にリリース文としてご案内させていただきます。なお、主な翻訳はenoguさん・下条さんのお二人に提供いただきました。ありがとうございます。
さあ、革命の始まりだ。
何千時間以上にも及ぶ膨大な開発作業と100万ドルの資金援助により、ここにMODX Revolution 2.0 のリリースを宣言する。
何が変わったのか?
敢えて言うなら全部だ。RevolutionはMODXのスピリットを引き継ぎながら、通常のウェブサイト作成にとどまらずリッチアプリケーションの開発基盤としても使える、素晴らしいプラットフォームになっている。MODX Revolutionは、大規模サイトはもちろん、複数のサイトの管理も単独のコアでこなすパワーと柔軟性・再利用性を備えている。
Revolutionの新機能は、この記事ではとうていリストアップしきれない。ここではとっておきの機能だけを駆け足で説明する。もっと詳しい内容はチェンジログに書いてあるので、気になるならそちらも読んで欲しい。
- MODX Revolution 2.0には新設計のキャッシュシステムが導入された。新しいキャッシュは、MODXが持つおよそ全ての動的要素をキャッシュできる。これにより、巨大かつ広大なサイトを良好なパフォーマンスを保って構築できるようになった。もっとスケーラビリティを求められる用途のために、このキャッシュシステムの代わりにmemcached相当の仕組みを使うことができるようにもなっている(※日本チーム注:memcachedの拡張classが実際に内蔵されているらしい)。
- およそあらゆるコア要素のセッティングを自由に上書き・拡張・カスタマイズできる。これにはシステムセッティング(Evolutionでいうところのグローバル設定)・ユーザー設定・語彙管理(従来の言語ファイルの機能に相当)やセッション情報も含まれる。MODXのルーツとも言えるテンプレート変数の思想を、投稿画面だけでなくシステム全体に波及させ、さらにManagerManager相当のカスタマイズ機能を加えたものと考えると分かりやすいだろう。また、これは他のアプリケーションとの相互運用機能を手軽に組み込めることも意味している。
- 開発者に朗報だ。Revolutionには拡張機能の配布及びインストールを体系的に行うために、優れたインターフェイスを持つパッケージ管理機能が実装されている。
- 「コンテキスト」によって複数のサイトを管理できるようになった。コンテキストとは、サイト単位のシステム設定(Evolutionでいうところのグローバル設定)のようなもので、サブディレクトリ単位・サブドメイン単位はもちろんだが、MODXコアをウェブルートよりも上の領域に置いて、内部でコンテキストキーを関連付けたコントローラ (index.php)をサイトごとに設置して接続すれば、ひとつの管理画面で複数のサイトの運用が可能だ。ドメインが異なるサイトでも問題なく管理できる。サイトのルートディレクトリごとにCMSをインストールするのはもう時代遅れだ。複数のサイトのシステムアップデートも一度で済む。
- 新しいコアは再利用性が高く十分な情報量を持つエラーログ機構を内蔵している。多種のエラーレベル (Evolutionでは3種類のみ)と複数の出力先がサポートされているから、欲しいトレースログを手軽に得られる。もちろん拡張機能のデバッグやエラーログとしても利用できる。
(※Evolutionでも1.0.5J-r11でログ機構を改善しました) - タグの文法は統一された。改行入りのタグが書けるようになり、どのタグにでもキャッシュ出力をタグの内側・外側どちらでも意図どおりに指示できるようになり、タグを複雑に入れ子に書き込んでも不具合は起こらない。スニペットコールを入れ子にする場合も、外側をキャッシュオフにする必要がなくなった。また、Evolutionではスニペットコールの引数の値として使えなかった「?」「=」「&」が自由に使えるようになった。Evolutionではこれらの文字をそれぞれ「|xq|」「|xe|」「|xa|」などに置き換えるしかなく(※Evolution 1.0.5J-r7で改善されました)、たとえばRSSフィードをコントロールするスニペットなどで不自由を強いられた。
さらに、修飾子感覚でパラメータを指定し出力を自由にコントロールすることが可能になった。つまりEvolutionで言うところのPHxプラグインみたいなことがデフォルトでできるが、Revolutionはそれを上回る。たとえば日付の出力だったら、「今日」「きのう」といった表現ができるようになっている。もちろんテンプレート変数だけでなく、スニペットそしてチャンクでもできる。 - MODXの新しいマネージャー(管理画面)はMODXコアとExtJS、および Smartyを用いて組み立てられている。実のところインストール直後のMODXはすでに、君がこれから構築するウェブサイトと、それを管理するマネージャーの二つを、それぞれ異なるコンテキストを関連付けた異なる2つのサイトとして管理しているのだ。この事実を確認するには、コンテキストの設定とコントローラであるindex.phpを見るだけでよい。サーバ運用の基本をマスターしていれば、ひとつのコアであらゆるサイトコントロールが可能であることが理解できるよ。
- ウェブユーザーと管理画面ユーザーの間には、もはや明確な違いはない。ユーザーシステムには外部の認証システムも使えるようになった。さらにアクセス権限の設定は属性型アクセス制御リスト(ABAC)に基づくとても堅固かつ柔軟なモデルになっている。
- スニペットコールのたびに同じプロパティを何度も書いていないか?プロパティセットを保存すればどこにでも何度でも同じプロパティの組み合わせを手軽に呼び出して適用できるよ。
- それと、スニペット以外のタグにおいてもプロパティを指定できるようになった。チャンク、テンプレート変数、テンプレート、プラグインなど、あらゆるエレメントはプロパティを持つ。
- ラベルやイベントごとのメッセージを含むおよそ全てのテキストは、システマチックに管理する仕組みになった。複数の言語を自由にインストールして辞書マネージャーで管理することができる。
- 拡張機能はパッケージマネージャーを用いてインストールする。管理画面内でリポジトリと直接通信し、欲しいパッケージをその場で探してマウス操作で選びインストールできる。管理画面と配布サイトの間を行ったり来たりする必要はもうない。FTP・圧縮展開ソフト・テキストエディタも不要になった。
- 新しいリソースタイプ「静的リソース」を使えばファイルシステムもサイトツリーの管理対象となり、他のリソースと同じ次元でコントロールできる。任意のファイルのクローンとして振る舞うものだとイメージすれば分かりやすいだろう。webroot領域外にあるファイルも管理できる。
- 「シムリンク」と呼ばれるリソースタイプが追加された。サイトツリー内にある他のリソースのクローンを、いくつでも必要なだけ必要な場所に作ることができる。もちろんオリジナルを書き換えれば、それはクローンにも反映される。MODXのリソースはシムリンクで、それ以外のオブジェクト(外部サイトや通常のhtmlページなど)は従来どおりウェブリンクで紐づけよう。
スクリーンショット
http://modx.jp/news/2010/245.html
上記の記事を参照してください。RC3リリースの記事ですが、ほとんど同じです。
Evolutionとの互換性について
- Evolutionで構築したサイトをRevolutionに移行するための手段・ツールは現時点では存在しません。アップグレードインストールもできません。
- タグの記述の違いについてはこちらに記述してあります。
- DittoやWayfinderなどの主要スニペットの対応および代替に関してはこちらに。
その他参考ページ
MODX Revolutionのコンセプトと概念の整理
(フォーラム記事)









