eZ Publish の特徴

##eZ Publish / eZ Platform Advent Calendar 2016
2日目は eZ Publish の特徴について解説します。

## <i class="fa fa-clone"></i> eZ Publish の特徴
eZ Publish には主に以下のような特徴があります。

* eZ Systems 社による製品の**有償サポート**
* **汎用的なコンテンツ設計**ができるコンテンツタイプ
* コンテンツを視覚的な階層構造で管理できる**ツリー表示**
* ロケーションによる**重複しないコンテンツ配置**
* **階層的にユーザーを整理**できるユーザー管理
* **ユーザー権限の詳細な設定**が可能な権限管理
* 同一コンテンツとして複数の翻訳言語を登録できる**多言語対応**
* **同一コンテンツに複数のテンプレート**を持たせられるサイトアクセス
* フレームワークに **Symfony** のフルスタックを採用

## ベンダーによる有償サポート
同じオープンソース CMS の WordPress や Drupal などと大きく異なるのは、 eZ Systems 社という開発元の企業がおり、製品本体に問題が生じた場合に責任を持って対応してもらえるという安心がある点です。
また、契約サブスクリプションに応じてコンサルティングを受けることが出来るので、eZ Systems 社が把握するベストプラクティスに従うことが出来ます。
eZ Platform では有償サブスクリプションの場合 eZ Studio を利用することが出来ます。

## 汎用的にコンテンツを設計できるコンテンツタイプ
eZ Publish は**コンテンツタイプ** (eZ Publish 5.4 ではまだ**クラス**と呼ばれています) という概念でコンテンツ (Webページやブログ記事) を管理しています。

![](https://doc.ez.no/download/attachments/31431277/content_model_simplified_diagram.png)

コンテンツの種類 (Webページやブログ記事) によってそれぞれ1つのコンテンツタイプを作成します。フォルダーやユーザーですらコンテンツタイプとして管理されています。
この概念により eZ Publish では CMS で管理するデータを汎用的に設計、管理することが可能となっています。
コンテンツタイプの追加、変更は管理画面から行うことが出来ます。

Drupal では**エンティティ**、WordPress では**カスタム投稿タイプ**などが近い概念になりますが、フォルダーやユーザーまでは対象となっておらず、eZ Publish におけるコンテンツタイプの汎用性の高さが際立ちます。

例えば CMS に登録させる各ユーザーに性別や住所などの項目を追加したいときに、ユーザーコンテンツタイプにその**フィールド** (eZ Publish 5.4 ではまだ**属性**と呼ばれています) を追加するだけで対応することが出来ます。

## コンテンツツリーによる視覚的な階層管理
管理画面において、Microsoft Windows のエクスプローラーなどでお馴染みのツリー表示に対応しています。

コンテンツ量の多い大規模サイトでは、ツリー表示されていないとページが埋もれて見つかりにくくなってしまいますが、WordPress や Drupal、Movable Type では標準で対応していません。

### eZ Platform のコンテンツツリー
![ezstudio_tree.png](https://qiita-image-store.s3.amazonaws.com/0/15175/1f40f873-d41a-2cb6-23fd-4c8d6ea66ea6.png)
### eZ Publish 5 のコンテンツツリー
![ezpublish_tree.png](https://qiita-image-store.s3.amazonaws.com/0/15175/77951ac8-f8f4-dccf-282d-046cc222ec01.png)

## ロケーションによる重複しないコンテンツ配置
![](https://doc.ez.no/var/doc/storage/images/ez_publish/technical_manual/4_0/images/concepts_and_basics/objects_node_and_the_content_node_tree_multiple_locations/1201-1-eng-GB/objects_node_and_the_content_node_tree_multiple_locations_doc.png)

![](https://doc.ez.no/var/doc/storage/images/ez_publish/technical_manual/4_0/images/concepts_and_basics/content_tree_with_multiple_locations/1217-2-eng-GB/content_tree_with_multiple_locations_doc.png)

## 階層的なユーザー管理
eZ Publish では**ユーザー**もデータ上の扱いはコンテンツと同じなので、同様に**ツリー表示**することができます。
また、他の CMS ではユーザーのグルーピング機能がないことが多いのですが、**ユーザーグループ**というコンテンツタイプで自由に多段階層を作成できます。
これにより、ユーザー数や部署数が多い企業でも混乱せずに安心して利用することができます。
あるいは、編集者や管理者などいまいちな権限グループによるグルーピングではなく、組織やサイトにあったグループを自由に作成することができます。

## ユーザー権限の詳細な設定が可能な権限管理
![](https://doc.ez.no/var/doc/storage/images/ez_publish/technical_manual/4_0/images/concepts_and_basics/user_group_policy_role/1239-6-eng-GB/user_group_policy_role_doc.png)

## 同一コンテンツとして複数の翻訳言語を登録できる多言語対応
![](https://doc.ez.no/var/doc/storage/images/ez_publish/technical_manual/4_0/images/concepts_and_basics/object_structure_basic_versions_and_translations/29976-2-eng-GB/object_structure_basic_versions_and_translations_doc.png)

## 同一コンテンツに複数のテンプレートを持たせられるサイトアクセス
![](https://doc.ez.no/var/doc/storage/images/ez_publish/technical_manual/4_0/images/concepts_and_basics/siteaccess/1257-5-eng-GB/siteaccess_doc.png)

## Symfony フレームワーク
![Symfony](https://symfony.com/images/v5/logos/header-logo.svg)

eZ Publish は 5.0 からフレームワークに Symfony を採用しました。
Drupal も 8 から Symfony を採用していますが、あちらはライブラリー的な利用に留まるのに対して、eZ Publish ではフルスタックで利用しています。