eZ publish勉強会2013年9月「ez publish効率入門」

55
eZ Publish2013年9月勉強会 eZ Publish効率入門」

Transcript of eZ publish勉強会2013年9月「ez publish効率入門」

Page 1: eZ publish勉強会2013年9月「ez publish効率入門」

eZ Publish2013年9月勉強会「eZ Publish効率入門」

Page 2: eZ publish勉強会2013年9月「ez publish効率入門」

eZ Publishの紹介

Page 3: eZ publish勉強会2013年9月「ez publish効率入門」

eZ Publishの紹介

● 2001年から開発されているノルウェー産CMS● 開発元はeZ Systems社

● 「エンタープライズオープンソース」ソフトウェア

● 2つのバージョン

– 有料エンタープライズバージョン「eZ Publishエンタープライズエディション」

– 無料なオープンソースバージョン「eZ Publishコミュニティーエディション」

Page 4: eZ publish勉強会2013年9月「ez publish効率入門」

eZ Publishの紹介

● エンタープライズ級CMS● 全世界で使われています● ヨーロッパでの使用率が高い● メディア業界と機関のプロジェクトは多い● 柔軟性と拡張性は特徴

Page 5: eZ publish勉強会2013年9月「ez publish効率入門」

eZ Publishの紹介 ­ 技術

● PHPベース

● LAMPスタックで動く

● 豊富なデフォルト機能

● CMSでありながらCMF(フレームワーク)でもある

● 柔軟性と拡張性が優れているCMS● シンフォニー2ベース(eZ 5系)

Page 6: eZ publish勉強会2013年9月「ez publish効率入門」

eZ Publishの特徴

● 短所– ドキュメンテーション

– eZ 4 / eZ 5 / eZ 6– 複雑な構造・多くの独自概念

– 管理画面

● 長所– 柔軟なコンテンツ形式

– テンプレートシステム

– 権限システム

– 豊富なデフォルト機能

Page 7: eZ publish勉強会2013年9月「ez publish効率入門」

ドキュメンテーション

Page 8: eZ publish勉強会2013年9月「ez publish効率入門」

短所 ­ ドキュメンテーション

● 豊富な標準機能● 複雑な構造● 2つのメジャーバージョン(4と5)● 2つのドキュメンテーション

– 4系 http://doc.ez.no/eZ-Publish/Technical-manual/4.x/Reference/

– 5系 https://confluence.ez.no/display/EZP/eZ+Publish+Documentation

Page 9: eZ publish勉強会2013年9月「ez publish効率入門」

短所 ­ ドキュメンテーション

● ドキュメントされてない機能はあります● 古いドキュメンテーションもあります● ソースコードを直接確認するは時々最短● ドキュメンテーションは英語のみ● 日本語チュートリアルはすくない

Page 10: eZ publish勉強会2013年9月「ez publish効率入門」

eZ 4 / eZ 5 / eZ 6

Page 11: eZ publish勉強会2013年9月「ez publish効率入門」

短所 ­ バージョン

● 現在の最新バージョンは5.1● 2012年10月にリリース

● 4系とかなり異なります

– 新しいフレームワーク:Symfony 2– 新しいテンプレートエンジン

– 新しいカーネル

– 新しい思考:HMVC● 4系と完全互換性● 純粋な5系機能は未完成

Page 12: eZ publish勉強会2013年9月「ez publish効率入門」

バージョン 5

● 4系の最新バージョンを完全含めてる(ezpublish_legacy/)

● 5系のカーネルは直接4系のカーネルを利用することが多い

● 完全に5系で動くサイトはまだいません● 思考は違いすぎのため、5とレガシー(4)をミック

スするのは難しい

Page 13: eZ publish勉強会2013年9月「ez publish効率入門」

短所 ­ バージョン

Page 14: eZ publish勉強会2013年9月「ez publish効率入門」

バージョン5.1

Page 15: eZ publish勉強会2013年9月「ez publish効率入門」

バージョン 5

● バージョン5はバージョン4と6の橋● バージョン6 = バージョン5の完全版● バージョン6ではレガシーが完全なくなります● バージョン5の立場が難しい

Page 16: eZ publish勉強会2013年9月「ez publish効率入門」

eZ Publish 5 のジレンマ

● レガシー(4系)は未来が少ない技術● 純粋な5系はまだ利用できません

● 現在eZ Publishを始める場合は

– レガシ系を勉強するが必要

– これから使い続くためにSymfonyと5系を勉強するが必要

Page 17: eZ publish勉強会2013年9月「ez publish効率入門」

複雑な構造・独自概念

Page 18: eZ publish勉強会2013年9月「ez publish効率入門」

独自概念

● とにかく独自概念が多い– サイトアクセス– ノード・オブジェクト– コンテンツツリー

– コンテンツクラス・データタイプ

– モジュール・ビュー・ファンクション

– ユーザ・ロール・ポリシー・ロール制限– テンプレートオーバーライド– 設定オーバーライド

– テンプレートエンジン・テンプレートオペーレーター

– ワークフローイベント・ワークフロートリガー– 。。。

Page 19: eZ publish勉強会2013年9月「ez publish効率入門」

複雑な構造

● eZ PublishコアベースCMS– デフォルト機能は豊富

– エクステンションの追加はほとんどのプロジェクトで必要ない

● ファイル数が多い

● PHPコードは約130万行(レガシーは約50万行)

● eZ Publish 5とレガシーの関係でさらに複雑

Page 20: eZ publish勉強会2013年9月「ez publish効率入門」

複雑な構造

● テンプレート等のファイルのパスは深い

– 7階層は珍しくない

● オーバーライドシステム関係でファイルは複数のエクステンションで分散されています

● 設定オーバーライドシステム関係で有効設定が間違いやすい

Page 21: eZ publish勉強会2013年9月「ez publish効率入門」

管理画面

Page 22: eZ publish勉強会2013年9月「ez publish効率入門」

管理画面

Page 23: eZ publish勉強会2013年9月「ez publish効率入門」

管理画面

● 情報が多い(多すぎ)● デザイン性に問題・表示バグ● コンテンツ作成ワークフローのステップが多い● ユーザビリティー問題(オンラインエディター)

● 6系での管理画面はかなり改善されている予定

Page 24: eZ publish勉強会2013年9月「ez publish効率入門」

コンテンツエンジン

Page 25: eZ publish勉強会2013年9月「ez publish効率入門」

コンテンツエンジン

● eZ Publishの最強な特徴

● CMS = コンテンツ管理システム

● eZ Publishのコンテンツエンジンはどのコンテンツを管理できます

● GUIだけでコンテンツクラスを追加できる

Page 26: eZ publish勉強会2013年9月「ez publish効率入門」

コンテンツエンジン

● オブジェクト思考● コンテンツクラスはコンテンツ種類を定義する● コンテンツクラスにフィールドは自由に追加できま

す● コンテンツクラスをインスタンスして、コンテンツオ

ブジェクトを作ります

Page 27: eZ publish勉強会2013年9月「ez publish効率入門」

コンテンツエンジン

● コンテンツエンジンはすべて管理します● いつでもフィールドの追加と作成はできます

– モデルマイグレーションは自動的!

● コンテンツのフィールドベースでソートやフィルタリングできます

● 多言語はオブジェクトレベルで管理されます● 自動的にバージョン管理をします

Page 28: eZ publish勉強会2013年9月「ez publish効率入門」

コンテンツエンジン

● 例:神社データベースサイト– コンテンツクラスを作ります「神社」

– フィールド● 名前「テキスト」● 紹介「XMLブロック」● 画像「画像」● 創建「日付」● 位置「ジオロケーション」

● 各属性ベースでソートとフィルタリングできます● 表示はコンテクストと属性ごとでできます

Page 29: eZ publish勉強会2013年9月「ez publish効率入門」

コンテンツエンジン

● デフォルトのフィールド種類は約40● カスタムフィールドタイプは追加できます(PHP)

● コンテンツ関連、コンテンツタグを対応するフィールドもあります

● コンテンツを無理矢理CMSに合わせるのではなく、CMSはどのコンテンツを管理できる

Page 30: eZ publish勉強会2013年9月「ez publish効率入門」

テンプレートシステム

Page 31: eZ publish勉強会2013年9月「ez publish効率入門」

テンプレートシステム

● 柔軟なテンプレート管理● テンプレートオーバーライドを活用すれば、開発

時間は大きく短縮できます

● smartyベーステンプレート言語

Page 32: eZ publish勉強会2013年9月「ez publish効率入門」

テンプレートシステム

● 一つのページは複数のテンプレートを利用します

– ezwebinパッケージのトップページは41種類のテンプレートを利用します

● コンテンツエンジンと連携しています● 考えとしては:

– 一つのオブジェクトには一つのテンプレートを使います– 一つの属性に一つのテンプレートを使います

– コンテクスト毎にテンプレートを設定できます

Page 33: eZ publish勉強会2013年9月「ez publish効率入門」

テンプレートシステム

● eZ Publishはデフォルトコンテンツクラスとフィールドタイプのテンプレートをすべて提供します

● テンプレートオーバーライド機能で複数のエクステンションからテンプレートを参照できます

● デフォルトテンプレートを利用した上で、ピンポイントでテンプレートを作るはコツである

Page 34: eZ publish勉強会2013年9月「ez publish効率入門」

テンプレート言語

● 多くのテンプレートオペーレーターを提供する● テンプレートオペーレーターを追加できます● 柔軟なコンテンツ取得ファンクション● イメージとしては:

– 他のテンプレートをインクルード(ナビゲーション等)

– コンテンツを取得する

– 取得したコンテンツオブジェクトをレンダリング● 属性をレンダリング

– テンプレートロジック追加

Page 35: eZ publish勉強会2013年9月「ez publish効率入門」

テンプレートオーバーライド

● テンプレートオーバーライドは特定な条件に対して、特定なテンプレートを利用するシステム

● コンテンツオブジェクトとフィールドレンダリングの際に使われます

● 条件の種類は多くあります● 例:

– 特定なページに対して特定なテンプレートを利用する

– /company/profile にアクセスした場合 profile.tpl を利用する

Page 36: eZ publish勉強会2013年9月「ez publish効率入門」

テンプレートシステム

● コンテンツオブジェクトベースのテンプレート管理ができます

● オブジェクト毎、フィールド毎にテンプレートがあります

● オンラインエディターの各タグにもテンプレートがあります!

● フェッチとレンダリング仕組みの理解は初心者の最重要な課題

Page 37: eZ publish勉強会2013年9月「ez publish効率入門」

権限システム

Page 38: eZ publish勉強会2013年9月「ez publish効率入門」

権限システム

● 細かく権限を設定できます– 行動別

– コンテンツ別

– 言語別

● ワークフロー提供– デフォルトで多段階承認できます

– 複数なトリガーを利用できます

● 完全GUIで管理できます

Page 39: eZ publish勉強会2013年9月「ez publish効率入門」

イメージ

● ユーザはユーザグループで管理をします

– 編集者グループにAさんを入れます

● ロールを作成、ユーザに割り当てます

– Aさんに編集者ロールをあてます

● ロールには権限を追加します– 編集者ロールに記事を作成権限をあげます

Page 40: eZ publish勉強会2013年9月「ez publish効率入門」

豊富なデフォルト機能

Page 41: eZ publish勉強会2013年9月「ez publish効率入門」

デフォルト機能

● マルチサイト・マルチドメイン・マルチデータベース● ハイパーフォーマンス検索エンジン● コンテンツバージョニング● 多言語

● REST API ・ AJAX API● 画像の編集と自動リサイズ● ブログ● 掲示板

● Webdav● LDAP● ページネーション

Page 42: eZ publish勉強会2013年9月「ez publish効率入門」

デフォルト機能

● 高度なキャッシュエンジン● ファイルの一括アップロード● シングルサインオン● サイトマップ自動生成● 画像ギャラリー● タグクラウド

● RSS自動生成

● フォーム機能● メール送信● リンク切れ自動チェック

Page 43: eZ publish勉強会2013年9月「ez publish効率入門」

eZ Publish入門

Page 44: eZ publish勉強会2013年9月「ez publish効率入門」

ワーストプラクティス

● 初心者はよくする失敗:– 標準ファイルやエクステンションファイルを変更する

– フェッチに制限をかけない

– レンダリングファンクションを使わずに、直接includeを利用する

– テンプレートに条件分岐でテンプレートをレンダリング

– 管理画面で設定ファイルの変更

Page 45: eZ publish勉強会2013年9月「ez publish効率入門」

デフォルトファイル

● デフォルトファイル(PHP、CSS、画像、設定など)に一切てを加えない– デフォルトファイルを変更するバージョンのアップグ

レードは難しくなり、ファイルを管理しにくい

– settings/override/* と settings/siteaccess/* は例外

● ベストプラクティス– 必ずエクステンションを作ります

– 変更したいファイルは元の場所から自分のエクステンションにコピーしてから変更をします

Page 46: eZ publish勉強会2013年9月「ez publish効率入門」

エクステンション

● エクステンションを作るには extension/ 以下にフォルダーを作る

● エクステンションをグローバル設定やサイトアクセス設定で有効にします

● エクステンションの種類によって、エクステンション以下のsettingsに設定を追加する必要があります– テンプレートファイルやデザインを提供する場合には

design.ini● エクステンションの設定は管理画面のシステム設

定で確認できます

Page 47: eZ publish勉強会2013年9月「ez publish効率入門」

フェッチ制限

● テンプレートで使うフェッチファンクションはかなりリソースを使います

● そのため、必ず最大件数等を定義する

Page 48: eZ publish勉強会2013年9月「ez publish効率入門」

レンダリングファンクション

● レンダリングファンクションはコンテンツオブジェクトとコンテクストを定義して、テンプレート選択はeZ Publishのオーバーライドシステムに任せる

● インクルードは直接テンプレートパスを指定する● レンダリングファンクションを利用したほうがテンプ

レートがわかりやすく、テンプレートオーバーライドシステムは多くの可能性を持っています

● テンプレートオーバーライドはoverride.iniにまとめます

Page 49: eZ publish勉強会2013年9月「ez publish効率入門」

レンダリングファンクション

● テンプレートで条件分岐を使わずにテンプレートオーバーライド条件を活用します

● コンテクストも自由に追加できますので、コンテクストを活用しましょう– 自動サイトマップ生成はテンプレートコンテクストです

Page 50: eZ publish勉強会2013年9月「ez publish効率入門」

管理画面と設定ファイル

● 管理画面で設定ファイルを編集することができます

● 管理画面で表示する設定ファイルは実際複数の設定ファイルを合わせたもの

● 管理画面で設定を変更するとどのファイルにその設定が入るがわかりにくい

● さらに、管理画面で設定ファイルを変更する場合にファイルを再生性するためにコメントが失われます

Page 51: eZ publish勉強会2013年9月「ez publish効率入門」

eZ Publish入門お勧めのステップ

Page 52: eZ publish勉強会2013年9月「ez publish効率入門」

最短コース

● コンテンツクラスの作成 ☆● エクステンションの作成方法 ☆● 設定システム・サイトアクセス ★★● テンプレートシステム・テンプレートオーバーライド

 ★★★★

Page 53: eZ publish勉強会2013年9月「ez publish効率入門」

本格的コース

● 設定システム・サイトアクセス ★★● ビューとモジュール ★★● 管理画面 ☆

● URL ★● 権限システム・セクション ★★● ワークフロー ★● オンラインエディター ★★● キャッシュエンジン ★★★● テンプレートシステム・テンプレートオーバーライド ★★★★

● エクステンション ★★★

Page 54: eZ publish勉強会2013年9月「ez publish効率入門」

まとめ

● 最大のハードルはテンプレートシステムとテンプレートオーバーライドであります

● さらにドキュメンテーションは少ないため、さらにハードルが高い

● ですが、オーバーライドシステムを理解すれば、eZ Publishでの開発は面白いぐらい楽になります

Page 55: eZ publish勉強会2013年9月「ez publish効率入門」

ご清聴ありがとうございました!