eZ Publish と WordPress / Drupal / Movable Type の比較

様々な **CMS** がある中で、**eZ Publish** とそれ以外のオープンソースの CMS ではどのような違いがあるのか、具体的な内容を**比較**してみたいと思います。

## 比較対象の CMS
比較対象の CMS は以下の通りです。

| CMS              | 説明 |
|------------------|------|
| <i class="fa fa-clone" aria-hidden="true"></i> eZ Publish    |  |
| <i class="fa fa-wordpress" aria-hidden="true"></i> WordPress | **最もシェアが高い**。国内でもここ数年で台頭した。PHP で独自に開発。管理画面が見やすく、<br>構築に小回りがきく。 |
| <i class="fa fa-drupal" aria-hidden="true"></i> Drupal       | 世界のシェアは2~3番手。国内ではまだマイナー。管理画面はとっつきづらい。8 からPHP<br>フレームワークに **Symfony** を採用。eZ Publish と同様に**汎用性が高い**。 |
| Movable Type | WordPress が台頭するまでは国内で知名度が高かった。Perl で独自に開発。管理画面が見や<br>すく、テンプレートで頑張るのに向いている。静的HTMLを出力するため、**参照系のパフォー<br>マンスは最強**。 |


## シェア

#### CMS Market Share - OpenSourceCMS [^opensourcecms]
| CMS | 順位 |
|:---------------|--:|
| <i class="fa fa-wordpress" aria-hidden="true"></i> WordPress  | 1位  |
| <i class="fa fa-drupal" aria-hidden="true"></i> Drupal        | 3位  |
| <i class="fa fa-clone" aria-hidden="true"></i> **eZ Publish** | 14位 |
| Movable Type   | 16位 |

[^opensourcecms]: http://www.opensourcecms.com/general/cms-marketshare.php

## 機能
WordPress や Drupal は特にプラグインやモジュールの追加で機能を拡張する前提となっていますが、ここでは原則的に標準機能で比較します。

### 多言語対応
**eZ Publish** の強みの一つです。元々の設計でデータ構造的に対応しており、標準で無理なく利用できます。
項目単位で翻訳データを保持可能で、バージョン履歴も残ります。
他の CMS は標準では多言語に対応しておらず、プラグイン等で擬似的に対応する必要があります。

| CMS              | 説明 |
|------------------|------|
| <i class="fa fa-clone" aria-hidden="true"></i> **eZ Publish**| 標準で対応。初期状態で項目単位で翻訳データが保持可能。 |
| <i class="fa fa-wordpress" aria-hidden="true"></i> WordPress | プラグイン追加で対応。 |
| <i class="fa fa-drupal" aria-hidden="true"></i> Drupal       | モジュール追加で対応。 |
| Movable Type | プラグイン追加で対応。 |

### ユーザーと権限の管理
**eZ Publish** では、ユーザーをコンテンツツリーで構造的に管理でき、またその権限もコンテンツ単位など複雑な条件で自由に権限を管理することが出来ます。

| CMS              | 説明 |
|------------------|------|
| <i class="fa fa-clone" aria-hidden="true"></i> **eZ Publish**| ユーザーグループが作成可能。「ロール」と「ポリシー」があり、標準でコンテンツ<br>タイプごとやコンテンツの諸条件で権限を細かく設定可能。構造的な権限管理に有利。 |
| <i class="fa fa-wordpress" aria-hidden="true"></i> WordPress | 標準でユーザーのグルーピング機能はない。標準で5つの「権限グループ」がある。<br>User Role Editorプラグインなどで調整。 |
| <i class="fa fa-drupal" aria-hidden="true"></i> Drupal       | 標準でユーザーのグルーピング機能はない。「役割」を管理可能。モジュール側で<br>用意された「権限」を「役割」に割り当てることしかできない。 |
| Movable Type | Advanced で「グループ」機能がある。「ロール」と「権限」があり、用意された<br>「権限」を「ロール」に割り当てることしか出来ない。 |

### コンテンツ管理
WordPress や Movable Type はブログから出発しているためか、データ管理が構造的でなく記事単位をベースにしています。
特に Drupal ではカテゴリーの概念自体がないので、フィールド追加などで対応する必要があります。

| CMS              | 説明 |
|------------------|------|
| <i class="fa fa-clone" aria-hidden="true"></i> **eZ Publish**| コンテンツツリーで構造的に管理可能。また「ロケーション」でコンテンツを複製せずに<br>親子関係を紐付けることが可能。 |
| <i class="fa fa-wordpress" aria-hidden="true"></i> WordPress | 「投稿」「固定ページ」「メディア」の単位で一覧表示して管理。絞り込み検索で絞り<br>込む。 |
| <i class="fa fa-drupal" aria-hidden="true"></i> Drupal       | 「コンテンツ」で一元的に管理。絞り込み検索で絞り込む。 |
| Movable Type | 「ウェブサイト」「ブログ」で階層化され、「記事」「ウェブページ」の単位で一覧<br>表示して管理。フィルタで絞り込む。 |

### コンテンツの種類の定義
コンテンツの種類の定義に関して、eZ Publish と Drupal は汎用的に設計されており、WordPress は手を入れることで対応可能、Movable Type は PowerCMS を利用しないと対応できません。

| CMS              | 説明 |
|------------------|------|
| <i class="fa fa-clone" aria-hidden="true"></i> **eZ Publish**| 「コンテンツタイプ」と「フィールドタイプ」によって汎用的にコンテンツの種類を定義<br>可能。 |
| <i class="fa fa-wordpress" aria-hidden="true"></i> WordPress | 「投稿」「固定ページ」「メディア」での管理が基本で、「カスタム投稿タイプ」と「カス<br>タムフィールド」によってコンテンツの種類を定義可能だが、標準では管理画面で管理でき<br>ない。 |
| <i class="fa fa-drupal" aria-hidden="true"></i> Drupal       | 「コンテンツタイプ」と「フィールドタイプ」によって汎用的にコンテンツの種類を定義<br>可能。 |
| Movable Type | 「記事」「ウェブページ」「アイテム」での管理が基本で、「カスタムフィールド」に<br>よってコンテンツの項目を定義可能。コンテンツの種類は PowerCMS の「カスタム<br>オブジェクト」でないと追加できない。 |


| CMS              | 説明 |
|------------------|------|
| <i class="fa fa-clone" aria-hidden="true"></i> eZ Publish    |  |
| <i class="fa fa-wordpress" aria-hidden="true"></i> WordPress |  |
| <i class="fa fa-drupal" aria-hidden="true"></i> Drupal       |  |
| Movable Type |  |


## 概念

| <i class="fa fa-clone" aria-hidden="true"></i> eZ Publish | <i class="fa fa-wordpress" aria-hidden="true"></i> WordPress | <i class="fa fa-drupal" aria-hidden="true"></i> Drupal | Movable Type |
|------------------------|-----------------|--------------|--------------|
|コンテンツタイプ (クラス) |カスタム投稿タイプ|コンテンツタイプ|(カスタムオブジェクト)|
|サイトアクセス           |—                |—              |—            |
|ステート                 |                 |              |            |
|ロケーション (ノード)             |                 |              |カテゴリ (複数指定可)|
|フィールドタイプ (属性)   |カスタムフィールド|フィールドタイプ|カスタムフィールド|
|バンドル (エクステンション)|プラグイン|モジュール|プラグイン|
|URLエイリアス            |スラッグ        |スラッグ              | フォルダやファイル名、<br>アーカイブマッピング|
|eep            |wp-cli           |drush              |            |