MODX Revolution
Evolutionとは異なるコア
ゼロから書き起こされた新設計のコア。データベースモデリングフレームワークである「xPDO(オープンエクスペディオ)」を採用しています。xPDOはMODXの主要開発メンバーでもあるジェイソンが指揮をとって開発を進めているプロジェクトです。
フレキシブルなシステムファイル構成
必要に応じてドキュメントルート外にコアをインストールしたり、manager・assetsディレクトリをそれぞれ任意のディレクトリ名に変更して運用したりすることができます。これにより、ひとつのシステムで複数のサイトを管理することができます。管理画面のメニュー構成は自由にカスタマイズできます。
新設計のリソースパーサー
Revolutionのパーサは精密な処理を行ないます。タグ記述の柔軟性をさらに高めました。
タグ表現の仕様をシンプルに統一
PHxのような修飾子(モディファイ ア)を、テンプレート変数・スニペットコール・チャンクタグなど全エレメントを通じて同じように用いることができます。
※Evolutionでも解決の方向に向かっています。
新設計のキャッシュプロセッサ
キャッシュの有効無効はテンプレート変数・チャンクを含むひととおりのエレメント単位またはリソース単位で指定できます(Evolutionではスニペット・リソース単位のみ)。また新設計のキャッシュプロセッサはmemcachedベースのキャッシュマネージャの仕組みを実装しており、php処理プロセス層に及ぶ高度なキャッシュ処理を実現しています。
※大規模サイトの運用を検討する場合は、事前に念入りなテストを行なってください。2015年現在も検証不足です。
オーバーライド可能なシステム構造
オブジェクト指向に則った構造。簡単にMODXコア構造をオーバーライドできます。APIを知り尽くしたMODXファンにとっては理想的な構造です。アップデート時に不整合が発生しないよう考慮されています。
※Evolutionのようなカジュアルな開発はやりづらくなっています。簡単なスニペットを作る場合もオブジェクト指向ノウハウを必要とすることが多いため、導入の際はよく確認してください。
コンテキストベースのサイト管理
異なるコンテキストを必要なだけ用意しコアに渡すだけで、自由にViewをコントロールできます。ドメインが異なる複数のサイトを、ひとつのコアでコントロールできます。
※各サイトを完全に独立して運用するためには細かい調整が必要です。製作者として複数サイトを管理する場合には便利ですが、サービスとして複数のクライアントに納品する場合はクライアント間の情報漏洩などセキュリティ面に配慮する必要があります。
MODXで作られた管理画面
新しいコアとAPIの柔軟性を実証するために、管理画面それ自体をMODXの仕組みを用いて組み立てました。ExtJS・Smartyも利用しています。
▲リソースの移動・並べ替えや、テンプレート変数やスニペットコールの貼り付けはマウス操作で行なえます。
▲テンプレート変数セクションはタブとして独立しました。(上記画像は最新のRevolution2.2系)
新設計のユーザ管理体系及びACL
強固な権限コントロール。属性ベースのACL概念(Attribute Based Access Control / ABAC)を採用。Evolutionでは2つのユーザ管理体系(ウェブユーザと管理ユーザ)に分かれていましたが、Revolutionではひとつのユーザ管理体系として統合されます。外部認証の実装も想定された拡張性の高い設計となっています。
※仕組みが複雑過ぎて理解しにくいという声も多く、MODX3ではシンプルな形に改善される予定です。
エレメントプロパティ
プラグインとスニペットだけでなく、チャンク・テンプレート変数・テンプレートなど全てのエレメントタイプにプロパティを実装しました。
プロパティセット
複雑なスニペットコールを何度も無駄にコピーする必要がなくなりました。エレメントにプロパティセットを適用すれば呼び出しパラメータをワンタッチで変更できます。プロパティセットはいくつでも作成できます。プロパティセット的な仕様は一部のスニペットが独自に備えていましたが、Revolutionではコアレベルでサポートします。
lexicon(語彙管理)
システムで利用する文言は、すべて管理画面で管理できます(Evolutionでは言語ファイルを直接編集します)。もちろん多言語対応です。利用対象は管理画面だけではなく、サイト構築でも使えますので、多言語対応のWEBアプリの構築に威力を発揮します。
パッケージトランスポートシステム
カスタムプロバイダー(MODx本家開発サイトまたはサードパーティ)から拡張機能やテンプレートを管理画面の中から直接ゲットし、マウス操作だけでインストールできます。従来のようにFTPクライアントやテキストエディタなどを用いることはありません。
静的なリソースタイプを追加
ファイルシステム上のファイルをサイトツリー内で管理できます。ドキュメントルート外のファイルも扱えます。ウェブリンクと違い、実ファイルのURLへリダイレクトしません。phpのreadfile関数のような働きを持ちます。
シンボリックリンクとして利用できるリソースタイプを追加
サイトツリー上のリソースの複製を作ることができます。ウェブリンクと違い、複製元のリソースのURLへリダイレクトしません。
※以下の情報は、2010年8月のニュースリリース記事をほぼそのまま転記しています。現在のMODX Revolutionの状況をそのまま現した内容ではないためご注意ください。
MODX Revolutionの経緯とEvolutionとの今後の関係
MODX Revolution 2.0 は、ショーン・ジェイソン・マークの3人がメインデベロッパーとして開発しています。ファウンダーであるライアンより、2008年7月に開発開始が宣言されました。同時に、0.9系はEvolution 1.0として完成度を高め、サポートをしばらく継続することになりました。
Revolutionの開発が始まって数年経ちましたが、細部の調整が進まず、2012年頃からEvolutionの開発再開を求める声が強くなってきました。その後メインデベロッパーであるショーンとマークがチームを離脱し、Revolutionの開発は滞り気味になっています。
Evolutionは2013年から開発再開が宣言されました。
もともとRevolutionはEvolutionのアップデート対象として開発が進められていたため、MODXを新規導入する場合は最初からRevolutionを選ぶのがよいとされていましたが、現在は状況が変わっています。
動作環境
https://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などの主要スニペットの対応および代替に関してはこちらに。
今後の開発について
2012年5月25日、MODX LLC代表ライアンより「MODX3」の開発開始が宣言されました。MODX3はRevolutionの後継CMSという位置づけですが、複雑にはならず、現在のRevolutionよりもシンプルでフレンドリーな構成を目標としています。MODX3のリリースに代わってRevolutionの開発は段階的に終了することになっています。
その他参考ページ
MODX Revolutionのコンセプトと概念の整理
(フォーラム記事)