contao open source cms / 3.3と、その向こう

74
Contao Open Source CMS Contao 3.3と、その向こう オープンソースカンファレンス 2014Hiroshima 2014年9月20日 日本Contaoの会: 神戸 隆博

Upload: takahiro-kambe

Post on 05-Jul-2015

204 views

Category:

Software


6 download

DESCRIPTION

2014年9月20日に開催されたオープンソースカンファレンス2014 Hiroshima のセミナーで発表したときに使用した資料です。

TRANSCRIPT

Page 1: Contao Open Source CMS / 3.3と、その向こう

Contao  Open  Source  CMSContao  3.3と、その向こう

オープンソースカンファレンス  2014Hiroshima2014年9月20日

日本Contaoの会:  神戸 隆博

Page 2: Contao Open Source CMS / 3.3と、その向こう

話題

•  Contao  Open  Source  CMSの紹介  – 概要 – インストール

•  Contao  4に向けて •  国内の情報  

Page 3: Contao Open Source CMS / 3.3と、その向こう

発表者について

•  Contaoとの関わり –  2008年7月頃 ブログではないマルチドメインのCMSを求めて •  2.6.BETAの頃

–  2011年2月 日本語の言語ファイル担当

–  2012年3月 Ambassadors  in  Japan  (親善大使)  

Page 4: Contao Open Source CMS / 3.3と、その向こう

Contaoとは何か

•  オープンソースのCMS  –  2006年3月12日:  2.0.RCから公開 –  LGPL3  – 商用ライセンスあり

•  Contaoを使用している表示を削除可能 – 公式サイト:    hJps://contao.org/  – 開発元:  ドイツ – 元の名前:  TYPOlight  (2.8まで)  

Page 5: Contao Open Source CMS / 3.3と、その向こう

名前の由来

•  ベトナム語のconとtạoの造語 –  tạo  

•  形をなす、創造するといった意味のベトナム語 –  con  tạo  

•  創作者、運命づけるといった意味 •  コンテンツにも通じる

– 地名ではない •  リリース2.9から改名

Page 6: Contao Open Source CMS / 3.3と、その向こう

CMSとは何か(1)

•  Content  Management  System  – WebサイトをWebインターフェイスで管理

•  様々な種類のコンテンツ生成 – ニュース(ブログ)、イベント(カレンダー)  

•  柔軟な管理 – 便利なコンテンツの編集 – 素材(画像等)の管理 – コンテンツの再利用

Page 7: Contao Open Source CMS / 3.3と、その向こう

CMSとは何か(2)

•  共同作業の支援  – ユーザーとアクセス権限  

•  動的なページの生成  – 公開時期の制御  – 共同作業  

•  様々なCMS:  星の数ほど...  – WordPress,  Joomla!,  CMS  Made  Simple,  Drupal  –  TYPO3,  Concrete5,  ProcessWire,  Plone  

Page 8: Contao Open Source CMS / 3.3と、その向こう

Contaoの特徴

•  バックエンドとフロントエンド – 公開するサイトに依存しない一貫した画面構成

•  階層構成によるページの管理 •  アクセシビリティの考慮 •  機能拡張 – 機能拡張リポジトリによる管理 – 本体の直接変更は不要

Page 9: Contao Open Source CMS / 3.3と、その向こう

動作環境

•  Webサーバー –  Apache(,  IIS)  

•  スクリプティング言語 –  PHP  5.3.2以降

•  必要な拡張:  mysqli(またはmysql),  dom,  gd,  mbstring(またはiconv),  mcrypt,  soap,  zlib  

•  データベース管理システム – MySQL  5.0.3以降

•  他のデータベースのサポートは3.0で一旦廃止

Page 10: Contao Open Source CMS / 3.3と、その向こう

各国語対応

•  言語ファイルは本体に同梱 –  Contao  3.2/3.3で23の言語

•  Transifexで95%以上の翻訳率で採用、95%未満で削除 •  機能拡張で提供も可能

•  PHPの配列をベース – メッセージカタログ(geJext)は不使用 –  UTF-­‐8  – 設定ファイルで翻訳の追加や修正が可能

Page 11: Contao Open Source CMS / 3.3と、その向こう

リリースの種類(1)

•  バージョンX.Y.Z  – メジャーリリース(X)  

•  あらゆる変更の可能性 •  概ね2年に1度(2012年10月30日の3)  

– マイナーリリース(Y)  •  API、データ構造、テンプレートに変更の可能性 •  半年、5月と11月(2014年5月の3.3)  

– バグ修正リリース(Z)  •  基本的にバグ修正だけ •  随時(概ね月に1度程度)  

Page 12: Contao Open Source CMS / 3.3と、その向こう

リリースの種類(2)

•  長期間サポートリリース(LTS):  3.2  –  18か月間の保守期間のマイナーリリース

•  基本的にバグ修正だけ – 加えて6か月の移行期間

•  セキュリティ修正だけ

•  開発版:  4.0  – メジャーやマイナーリリースの前 – 数か月から1年以上の開発期間

Page 13: Contao Open Source CMS / 3.3と、その向こう

現在のリリース

•  Contao 3.2 (LTS) – 2014年8月27日 3.2.14

•  Contao 3.3 (安定版) – 2014年8月27日 3.3.5

•  Contao 4.0 (開発版) – 2014年6月18日 4.0.0-alpha2

Page 14: Contao Open Source CMS / 3.3と、その向こう

リリース予定

•  hJp://contao.org/release-­‐plan.html

Page 15: Contao Open Source CMS / 3.3と、その向こう

バックエンドとフロントエンド

•  Webサイトの管理側と公開側 – 管理側:  バックエンド(BE)  – 公開側:  フロントエンド(FE)  – バックエンドで管理して、 フロントエンドをプレビュー →  公開

•  URL  –  FE:  hJp://www.example.jp/  –  BE:  hJp://www.example.jp/contao/

Page 16: Contao Open Source CMS / 3.3と、その向こう

フロントエンドの例

Page 17: Contao Open Source CMS / 3.3と、その向こう

フロントエンドの構成

•  バックエンドでのデザイン次第 •  コア  配布にサンプルのサイトなし –  official_demo  

•  機能拡張リポジトリから入手可能、公式デモサイトと同じ内容 •  Contaoの説明(英文)  

•  公式サイトの事例研究 –  hJps://contao.org/case-­‐studies.html

Page 18: Contao Open Source CMS / 3.3と、その向こう

バックエンド

Page 19: Contao Open Source CMS / 3.3と、その向こう

ホーム

Page 20: Contao Open Source CMS / 3.3と、その向こう

バックエンドの構成

•  3つの部分 – ヘッダー、左サイド、メイン – ユーザー権限のないものは非表示

•  テーマ設定可能 – フロントエンドの表示と無関係 –  flexibleバックエンドテーマ

•  Contao  3.3のデフォルトのテーマ •  Contao  3.2までのdefaultに追加 •  レスポンシブ

Page 21: Contao Open Source CMS / 3.3と、その向こう

バックエンドのUIの特徴

•  主に3つの表示形式 – リスト表示 – ペアレント表示 – ツリー表示

•  バックエンド全体の一貫性 – 操作アイコンの持つ意味

Page 22: Contao Open Source CMS / 3.3と、その向こう

リスト表示

Page 23: Contao Open Source CMS / 3.3と、その向こう

ペアレント表示

Page 24: Contao Open Source CMS / 3.3と、その向こう

ツリー表示

Page 25: Contao Open Source CMS / 3.3と、その向こう

編集の表示例

Page 26: Contao Open Source CMS / 3.3と、その向こう

ユーザー設定

Page 27: Contao Open Source CMS / 3.3と、その向こう

プレビュー

新しいウィンドウ

Page 28: Contao Open Source CMS / 3.3と、その向こう

コンテンツ

•  実際のコンテンツを管理 – アーティクル

•  ページに表示する内容 – フォームジェネレーター

•  フロントエンドのフォームを自由に作成 – コメント

•  他のコンテンツでフロントエンドから入力されたコメントの管理 – その他、特定の種類のコンテンツ

Page 29: Contao Open Source CMS / 3.3と、その向こう

レイアウト

•  ページ内の配置や整形のデザイン – テーマ:  以下をまとめて管理

•  スタイルシート •  フロントエンドモジュール •  ページレイアウト

– サイト構造 •  ページを階層的に管理

– テンプレート •  カスタマイズしたテンプレートのファイルの管理

Page 30: Contao Open Source CMS / 3.3と、その向こう

アカウント管理

•  ユーザーに関連の管理 – メンバー

•  フロントエンドのユーザー – メンバーグループ

•  フロントエンドで保護されたページに使用 – ユーザー

•  バックエンドのユーザー – ユーザーグループ

•  バックエンドの権限の管理 •  ユーザーに対してユーザーグループと組み合わせて権限設定を可能

Page 31: Contao Open Source CMS / 3.3と、その向こう

システム

•  設定やリソースの管理 – ファイル管理

•  コンテンツで使用する画像や動画等 •  フロントエンドでアップロード •  TinyMCEから呼び出し可能

– 設定 •  Contaoの全体の設定

– 保守 •  キャッシュの消去やライブアップデート

– 機能拡張カタログと機能拡張の管理 •  機能拡張をリポジトリから一覧、インストール、更新

Page 32: Contao Open Source CMS / 3.3と、その向こう

開発者ツール

•  開発者向けのツール –  autoloadの作成

•  古い機能拡張でも、autoloadを用意すると動作する場合がある。 – 機能拡張の作成  

•  機能拡張の雛形の作成  

– 不足ラベル  •  未翻訳の言語ラベルの確認  

Page 33: Contao Open Source CMS / 3.3と、その向こう

機能拡張カタログ

•  機能拡張の閲覧、表示、インストール

Page 34: Contao Open Source CMS / 3.3と、その向こう

機能拡張リポジトリ

•  インストールした機能拡張の管理

Page 35: Contao Open Source CMS / 3.3と、その向こう

サイト構造とページ

•  最上位は「ウェブサイトのルート」 – 複数を作成可能

•  サポートするドメイン毎 •  サポートする言語毎 •  ブラウザーの言語と一致しない場合:  

 「言語の代替」が有効な「ウェブサイトのルート」を使用

•  階層構造の持つ意味 – ナビゲーションメニューの生成 – 親のページの項目の継承

Page 36: Contao Open Source CMS / 3.3と、その向こう

ページの継承する項目

•  アクセス権限 – フロントエンドとバックエンドのそれぞれ

•  ページレイアウトの指定 •  キャッシュの設定 •  内部の検索機能の対象の有無

Page 37: Contao Open Source CMS / 3.3と、その向こう

サイト構造の例

Page 38: Contao Open Source CMS / 3.3と、その向こう

ページの種類

•  通常ページ •  外部リダイレクト •  内部リダイレクト •  403  アクセス拒否 •  404  存在しないページ •  ウェブサイトのルート

Page 39: Contao Open Source CMS / 3.3と、その向こう

ページレイアウト

•  ページの構成を定義 – カラム(行と列)の配置 – スタイルシートの指定

•  フレームワーク •  Contaoで(データベース内に作成した)スタイルシート •  データベース外にファイルとして置いたスタイルシート

– モジュールの配置 •  フロントエンドモジュール •  アーティクル

– その他 •  文書型定義、JavaScriptフレームワークや独自のコード

Page 40: Contao Open Source CMS / 3.3と、その向こう

フロントエンドモジュール

•  コンテンツを表示する手段 – 他のCMSでの「ブロック」に近い – ナビゲーション

•  ナビゲーションメニュー、ぱんくずナビゲーション、サイトマップなど

– フロントエンドのユーザー(メンバー)支援 •  ログイン、個人データ、ユーザー登録、パスワード紛失、自動ログアウトなど

– 様々なコンテンツの表示 •  フォーム、検索エンジン、コメント •  Flash動画、ランダムな画像、カスタムHTML、RSSリーダーなど •  ニュース、イベント、FAQ、ニュースレターの表示

Page 41: Contao Open Source CMS / 3.3と、その向こう

コンテンツの種類

•  アーティクル – それぞれのページに固有のコンテンツ – ページの表示先の位置(カラム)を指定 – ページと独立した公開設定 •  ニュース、イベント、FAQ、ニュースレター – ページと無関係なコンテンツ管理 – フロントエンドモジュールを通して公開

Page 42: Contao Open Source CMS / 3.3と、その向こう

コンテンツ要素

•  アーティクル、ニュース、イベントの内容 – コンテンツを構成する順序に分けて構成 – コンテンツ要素に適切なテンプレートの適用

•  アクセシビリティ •  内部検索エンジンへの指示

– コンテンツの再利用・効率的な利用 •  同じコンテンツ要素の共有 •  他のコンテンツ要素の取り込み

– コンテンツ要素単位の公開

Page 43: Contao Open Source CMS / 3.3と、その向こう

コンテンツ要素の種類

•  HTMLの要素 – 見出し、テキスト(リッチテキスト編集)、HTML  – 箇条書き、表、(プログラムの)コード、Markdown  

•  リンク – ハイパーリンク、トップリンク

•  ファイル – ダウンロード、複数ダウンロード

Page 44: Contao Open Source CMS / 3.3と、その向こう

メディアや表示の制御

•  画像や動画 – 画像、画像ギャラリー、映像や音声、YouTube動画

•  コンテンツ要素の表示制御 – アコーディオン、コンテントスライダー

•  他のコンテンツの取り込み – アーティクル、コンテンツ要素、モジュール、 アーティクルのティーザー

– フォーム、コメント

Page 45: Contao Open Source CMS / 3.3と、その向こう

テンプレート

•  すべての出力はテンプレート経由 – バックエンドとフロントエンドの両方

•  カスタマイズ可能 – 直接変更するといった野蛮なことはしない – テンプレートのコピーを作成してカスタマイズ →    カスタマイズしたコピーを優先して使用

Page 46: Contao Open Source CMS / 3.3と、その向こう

ファイル管理

•  組み込みのファイル管理 – ファイルのアップロード、名前変更、削除、複製 – テキストのファイルの編集

•  対象のファイルはデータベース管理 – 名前でなくIDで参照

•  ファイル名の変更によるリンク切れが起きない。 – メタデータ

•  言語に応じたタイトル等

Page 47: Contao Open Source CMS / 3.3と、その向こう

テーマ

•  以下をまとめたもの – スタイルシート – フロントエンドモジュール – ページレイアウト – カスタマイズしたテンプレート – その他のファイルのリソース

Page 48: Contao Open Source CMS / 3.3と、その向こう

ここまでのまとめ

•  サイト構造:  ページ – ページレイアウト、アクセス権 – アーティクル

•  テーマ:  ページレイアウト –  スタイルシート、フロントエンドモジュール、JavaScript  

•  コンテンツ:  – アーティクル、ニュース項目、イベント

•  コンテンツ要素

Page 49: Contao Open Source CMS / 3.3と、その向こう

挿入タグ

•  {{  と }}  で囲んだ内容を展開 – 殆どのところで使用可能

•  ページをキャッシュとも仲良し – 様々な展開

•  他のコンテンツへのリンク •  メンバーの属性 •  環境変数 •  他のコンテンツの挿入 •  日付 •  ページの言語に依存した表示 •  画像のサムネイル

Page 50: Contao Open Source CMS / 3.3と、その向こう

挿入タグの例

•  アクセス日時を元に置き換え

Page 51: Contao Open Source CMS / 3.3と、その向こう

機能拡張

•  本体のファイルを変更しない拡張 – フック関数 – コールバック関数

•  namespace  – 本体のPHPのクラスも置き換え可能

•  モジュール構成による容易な作成 – バックエンドとフロントエンドの分離 – 統一的なバックエンドのインターフェイス

Page 52: Contao Open Source CMS / 3.3と、その向こう

簡単な拡張例

•  メンバーに項目「メンバーID」を追加 – メンバーの個人データに追加

Page 53: Contao Open Source CMS / 3.3と、その向こう

機能拡張として実装

•  system/modules以下に作成 – 追加モジュールのディレクトリ:  member_field  

•  モジュールの基本ディレクトリ –  config  (今回は省略)  –  dca  –  languages/en  –  languages/ja  –  (その他は必要に応じて)

Page 54: Contao Open Source CMS / 3.3と、その向こう

languages/en/tl_member.php  

languages/ja/tl_member.php  

言語ファイル

$GLOBALS['TL_LANG']['tl_member']['id_number'] = array( 'Member ID', 'Please enter the 8-digit member ID number.');

$GLOBALS['TL_LANG']['tl_member']['id_number'] = array( 'メンバーID', 'メンバーIDの8桁の番号を入力してください。');

Page 55: Contao Open Source CMS / 3.3と、その向こう

DCAへの追加 dca/tl_member.php  <?php// Modify the palette$GLOBALS['TL_DCA']['tl_member']['palettes']['default'] = str_replace( 'gender', 'gender,id_number', $GLOBALS['TL_DCA']['tl_member']['palettes']['default']); // Add the field meta data$GLOBALS['TL_DCA']['tl_member']['fields']['id_number'] = array( 'label' => &$GLOBALS['TL_LANG']['tl_member']['id_number'], 'exclude' => true, 'inputType' => 'text', 'eval' => array('maxlength'=>8, 'rgxp'=>'digit', 'tl_class'=>'w50', 'feEditable'=>true, 'feViewable'=>true, 'feGroup'=>'personal'), 'sql' => "varchar(8) NOT NULL default ''");

Page 56: Contao Open Source CMS / 3.3と、その向こう

データベースの更新

Page 57: Contao Open Source CMS / 3.3と、その向こう

拡張の結果

Page 58: Contao Open Source CMS / 3.3と、その向こう

拡張のまとめ

•  標準の配布にないファイルを追加 •  バージョンアップに影響を受けない:  – 機能拡張のディレクトリ名が衝突しない限り –  ContaoのAPIの互換性がある限り

•  機能拡張リポジトリに登録すると:  – 互換性のあるバージョンの範囲を指定 – 誰かが他の言語のラベルに翻訳してくれるかも?  

Page 59: Contao Open Source CMS / 3.3と、その向こう

インストールの準備

•  Apache、PHPの設定 •  データベースの準備 – データベースの作成 – データベースのユーザーの作成

•  ソフトウェアのダウンロードと展開 – 手作業でダウンロード、展開、アップロード – パッケージシステムの利用(pkgsrc)  –  Contaoチェックの利用も可能

Page 60: Contao Open Source CMS / 3.3と、その向こう

Contaoチェック

•  インストールの支援ツール –  Contaoのインストールに関する検査

•  Contaoのバージョンに応じたインストールの可否 – インストール後の機能の利用可否

•  機能拡張リポジトリ •  ライブアップデート •  セーフモード対処の必要性

–  Contaoの配布ファイルの取得と展開 •  ダウンロード、展開、アップロードといった手順を自動実行 •  展開したファイルの内容の検査

Page 61: Contao Open Source CMS / 3.3と、その向こう

インストール

•  インストールツール –  hJp://example.jp/contao/install.php – 数段階で設定

•  データベースの接続確認やテーブル作成

•  アップデートや開発で使う場合 •  セキュリティ – 最初にパスワードを設定 – 不安な場合はinstall.phpを削除や名前変更を実施

Page 62: Contao Open Source CMS / 3.3と、その向こう

ライブアップデート

•  iNet  Robots社による有償サービス – 年額9.9ユーロ

•  ドイツの売上税19%込み、それを除いた日本円で1200円弱 •  1つインストールしたContaoに対して必要

•  マウス数回のクリックで更新 – インストール先のバージョンの選択

•  新しいバグ修正リリース •  新しいマイナーリリース

– 修正しているテンプレートと機能拡張には注意

Page 63: Contao Open Source CMS / 3.3と、その向こう

Contao 3.4

•  2014年11月リリース予定  •  新規  – SVGとSVGZ画像のサポート  • ファイル管理で編集  

– スタイルシートのエクスポート    

•  改善  – 内部(データベース上)と外部のCSSを読み込む  順序の選択  

– その他細かな修正

Page 64: Contao Open Source CMS / 3.3と、その向こう

Contao 4

•  2015年5月に4.0.0をリリース予定 – 現在:  4.0.0-­‐alpha2  – 同時に長期サポートリリース:  3.5  

•  互換性のない変更 –  Symfonyの採用 –  Composerのさらなる活用

•  どこまで統合が進むかどうかは未定

Page 65: Contao Open Source CMS / 3.3と、その向こう

Symfonyの導入

•  継続性 – 断ち切って、新たに始めることはしない。

•  段階的な移行 –  SymfonyのシステムレベルをContaoに統合し、 –  Symfonyのコンポーネントをベースとしたものに、 Contaoのフレームワークを徐々に移行

•  概念実証:  githubに提示 •  hJps://github.com/contao/core/tree/feature/contao-­‐with-­‐symfony  

Page 66: Contao Open Source CMS / 3.3と、その向こう

Symfonyのための準備

•  4月24日の公開討論で合意 – 可能な限りリソースをコードから分離 –  Contaoのフレームワークの中で Symfonyのコンポーネントを使用

– 依存関係を導入するコンテナの早期で総合的な統合 •  技術的な検討はGitHubのチケット –  hJps://github.com/contao/contao/issues/9  

Page 67: Contao Open Source CMS / 3.3と、その向こう

リリース計画

•  2015年5月の意義 –  2年間のContao  3と4を並行運用 –  Symfonyを統合しても後方互換を保つ

だったが…

Page 68: Contao Open Source CMS / 3.3と、その向こう

計画の変更

•  2014年9月11日の方針変更 – 年内のSymfonyの統合が間に合わない可能性 –  4.0には見送り?  

•  開発ブランチ:  feature/symfony   Symfony統合のコード •  開発ブランチ:  develop        Symfony統合のコードを除去

•  Symfony統合のTo  Do  List – hJps://github.com/contao/symfony-­‐todo  

Page 69: Contao Open Source CMS / 3.3と、その向こう

Contao 4.0の新機能

•  Apache依存の廃止 –  .htaccessに非依存 →  ngnix等への対応

•  旧来への依存の廃止 – セーフモード対処の廃止 –  XHTMLのサポートの廃止

•  マークアップとCSSのクラスの統合 •  内部的(開発者向け)改良 –  Composerによる構成管理 – コールバックの引数の順序の統一 –  contao-­‐components(GitHub)での構成要素の管理

Page 70: Contao Open Source CMS / 3.3と、その向こう

公式サイト

•  公式サイト:  hJps://contao.org/  •  開発サイト:  hJps://github.com/contao/ •  フォーラム:  hJps://community.contao.org/  •  Contao  Associaron:  hJps://associaron.contao.org/  •  コミュニティによるWiki:  hJp://contaowiki.org/  •  ソーシャルネットワーク –  Facebook:  hJp://www.facebook.com/contao –  TwiJer:  hJp://twiJer.com/contaocms  

Page 71: Contao Open Source CMS / 3.3と、その向こう

開発: GitHub

•  Contao  3  –  hJps://github.com/contao/core  

•  Contao  4  –  hJps://github.com/contao/contao  –  hJps://github.com/contao/contao-­‐library  –  hJps://github.com/contao/contao-­‐bundle  –  hJps://github.com/contao/module-­‐*  

•  core,  calendar,  comments,  devtools,  faq,  lisrng,  news,  newsleJer,  repository  

•  ブランチにも注意:  開発はdevelop  

Page 72: Contao Open Source CMS / 3.3と、その向こう

国内の情報

•  hJp://www.contaocms.jp/ – 個人サイト

•  hJp://www.contao.jp/  – 日本Contaoの会:  Facebookのグループだけ

•  Facebook  – 日本Contaoの会の公開グループ

•  TwiJer  – @contaocms_jp  /  @contao_cco

Page 73: Contao Open Source CMS / 3.3と、その向こう

質疑応答

Page 74: Contao Open Source CMS / 3.3と、その向こう

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