Más contenido relacionado
Similar a Contao Open Source CMS / 3.3と、その向こう (20)
Contao Open Source CMS / 3.3と、その向こう
- 1. Contao Open Source CMS
Contao 3.3と、その向こう
オープンソースカンファレンス 2014Hiroshima
2014年9月20日
日本Contaoの会:
神戸 隆博
- 2. 話題
• Contao
Open
Source
CMSの紹介
– 概要
– インストール
• Contao
4に向けて
• 国内の情報
- 3. 発表者について
• Contaoとの関わり
– 2008年7月頃
ブログではないマルチドメインのCMSを求めて
• 2.6.BETAの頃
– 2011年2月
日本語の言語ファイル担当
– 2012年3月
Ambassadors
in
Japan
(親善大使)
- 4. Contaoとは何か
• オープンソースのCMS
– 2006年3月12日:
2.0.RCから公開
– LGPL3
– 商用ライセンスあり
• Contaoを使用している表示を削除可能
– 公式サイト:
hJps://contao.org/
– 開発元:
ドイツ
– 元の名前:
TYPOlight
(2.8まで)
- 5. 名前の由来
• ベトナム語のconとtạoの造語
– tạo
• 形をなす、創造するといった意味のベトナム語
– con
tạo
• 創作者、運命づけるといった意味
• コンテンツにも通じる
– 地名ではない
• リリース2.9から改名
- 6. CMSとは何か(1)
• Content
Management
System
– WebサイトをWebインターフェイスで管理
• 様々な種類のコンテンツ生成
– ニュース(ブログ)、イベント(カレンダー)
• 柔軟な管理
– 便利なコンテンツの編集
– 素材(画像等)の管理
– コンテンツの再利用
- 7. CMSとは何か(2)
• 共同作業の支援
– ユーザーとアクセス権限
• 動的なページの生成
– 公開時期の制御
– 共同作業
• 様々なCMS:
星の数ほど...
– WordPress,
Joomla!,
CMS
Made
Simple,
Drupal
– TYPO3,
Concrete5,
ProcessWire,
Plone
- 9. 動作環境
• Webサーバー
– Apache(,
IIS)
• スクリプティング言語
– PHP
5.3.2以降
• 必要な拡張:
mysqli(またはmysql),
dom,
gd,
mbstring(またはiconv),
mcrypt,
soap,
zlib
• データベース管理システム
– MySQL
5.0.3以降
• 他のデータベースのサポートは3.0で一旦廃止
- 10. 各国語対応
• 言語ファイルは本体に同梱
– Contao
3.2/3.3で23の言語
• Transifexで95%以上の翻訳率で採用、95%未満で削除
• 機能拡張で提供も可能
• PHPの配列をベース
– メッセージカタログ(geJext)は不使用
– UTF-‐8
– 設定ファイルで翻訳の追加や修正が可能
- 11. リリースの種類(1)
• バージョンX.Y.Z
– メジャーリリース(X)
• あらゆる変更の可能性
• 概ね2年に1度(2012年10月30日の3)
– マイナーリリース(Y)
• API、データ構造、テンプレートに変更の可能性
• 半年、5月と11月(2014年5月の3.3)
– バグ修正リリース(Z)
• 基本的にバグ修正だけ
• 随時(概ね月に1度程度)
- 13. 現在のリリース
• 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
- 15. バックエンドとフロントエンド
• Webサイトの管理側と公開側
– 管理側:
バックエンド(BE)
– 公開側:
フロントエンド(FE)
– バックエンドで管理して、
フロントエンドをプレビュー →
公開
• URL
– FE:
hJp://www.example.jp/
– BE:
hJp://www.example.jp/contao/
- 17. フロントエンドの構成
• バックエンドでのデザイン次第
• コア
配布にサンプルのサイトなし
– official_demo
• 機能拡張リポジトリから入手可能、公式デモサイトと同じ内容
• Contaoの説明(英文)
• 公式サイトの事例研究
– hJps://contao.org/case-‐studies.html
- 20. バックエンドの構成
• 3つの部分
– ヘッダー、左サイド、メイン
– ユーザー権限のないものは非表示
• テーマ設定可能
– フロントエンドの表示と無関係
– flexibleバックエンドテーマ
• Contao
3.3のデフォルトのテーマ
• Contao
3.2までのdefaultに追加
• レスポンシブ
- 28. コンテンツ
• 実際のコンテンツを管理
– アーティクル
• ページに表示する内容
– フォームジェネレーター
• フロントエンドのフォームを自由に作成
– コメント
• 他のコンテンツでフロントエンドから入力されたコメントの管理
– その他、特定の種類のコンテンツ
- 29. レイアウト
• ページ内の配置や整形のデザイン
– テーマ:
以下をまとめて管理
• スタイルシート
• フロントエンドモジュール
• ページレイアウト
– サイト構造
• ページを階層的に管理
– テンプレート
• カスタマイズしたテンプレートのファイルの管理
- 30. アカウント管理
• ユーザーに関連の管理
– メンバー
• フロントエンドのユーザー
– メンバーグループ
• フロントエンドで保護されたページに使用
– ユーザー
• バックエンドのユーザー
– ユーザーグループ
• バックエンドの権限の管理
• ユーザーに対してユーザーグループと組み合わせて権限設定を可能
- 31. システム
• 設定やリソースの管理
– ファイル管理
• コンテンツで使用する画像や動画等
• フロントエンドでアップロード
• TinyMCEから呼び出し可能
– 設定
• Contaoの全体の設定
– 保守
• キャッシュの消去やライブアップデート
– 機能拡張カタログと機能拡張の管理
• 機能拡張をリポジトリから一覧、インストール、更新
- 32. 開発者ツール
• 開発者向けのツール
– autoloadの作成
• 古い機能拡張でも、autoloadを用意すると動作する場合がある。
– 機能拡張の作成
• 機能拡張の雛形の作成
– 不足ラベル
• 未翻訳の言語ラベルの確認
- 35. サイト構造とページ
• 最上位は「ウェブサイトのルート」
– 複数を作成可能
• サポートするドメイン毎
• サポートする言語毎
• ブラウザーの言語と一致しない場合:
「言語の代替」が有効な「ウェブサイトのルート」を使用
• 階層構造の持つ意味
– ナビゲーションメニューの生成
– 親のページの項目の継承
- 38. ページの種類
• 通常ページ
• 外部リダイレクト
• 内部リダイレクト
• 403
アクセス拒否
• 404
存在しないページ
• ウェブサイトのルート
- 39. ページレイアウト
• ページの構成を定義
– カラム(行と列)の配置
– スタイルシートの指定
• フレームワーク
• Contaoで(データベース内に作成した)スタイルシート
• データベース外にファイルとして置いたスタイルシート
– モジュールの配置
• フロントエンドモジュール
• アーティクル
– その他
• 文書型定義、JavaScriptフレームワークや独自のコード
- 40. フロントエンドモジュール
• コンテンツを表示する手段
– 他のCMSでの「ブロック」に近い
– ナビゲーション
• ナビゲーションメニュー、ぱんくずナビゲーション、サイトマップ
など
– フロントエンドのユーザー(メンバー)支援
• ログイン、個人データ、ユーザー登録、パスワード紛失、自動ログ
アウトなど
– 様々なコンテンツの表示
• フォーム、検索エンジン、コメント
• Flash動画、ランダムな画像、カスタムHTML、RSSリーダーなど
• ニュース、イベント、FAQ、ニュースレターの表示
- 41. コンテンツの種類
• アーティクル
– それぞれのページに固有のコンテンツ
– ページの表示先の位置(カラム)を指定
– ページと独立した公開設定
• ニュース、イベント、FAQ、ニュースレター
– ページと無関係なコンテンツ管理
– フロントエンドモジュールを通して公開
- 42. コンテンツ要素
• アーティクル、ニュース、イベントの内容
– コンテンツを構成する順序に分けて構成
– コンテンツ要素に適切なテンプレートの適用
• アクセシビリティ
• 内部検索エンジンへの指示
– コンテンツの再利用・効率的な利用
• 同じコンテンツ要素の共有
• 他のコンテンツ要素の取り込み
– コンテンツ要素単位の公開
- 43. コンテンツ要素の種類
• HTMLの要素
– 見出し、テキスト(リッチテキスト編集)、HTML
– 箇条書き、表、(プログラムの)コード、Markdown
• リンク
– ハイパーリンク、トップリンク
• ファイル
– ダウンロード、複数ダウンロード
- 44. メディアや表示の制御
• 画像や動画
– 画像、画像ギャラリー、映像や音声、YouTube動画
• コンテンツ要素の表示制御
– アコーディオン、コンテントスライダー
• 他のコンテンツの取り込み
– アーティクル、コンテンツ要素、モジュール、
アーティクルのティーザー
– フォーム、コメント
- 45. テンプレート
• すべての出力はテンプレート経由
– バックエンドとフロントエンドの両方
• カスタマイズ可能
– 直接変更するといった野蛮なことはしない
– テンプレートのコピーを作成してカスタマイズ →
カスタマイズしたコピーを優先して使用
- 46. ファイル管理
• 組み込みのファイル管理
– ファイルのアップロード、名前変更、削除、複製
– テキストのファイルの編集
• 対象のファイルはデータベース管理
– 名前でなくIDで参照
• ファイル名の変更によるリンク切れが起きない。
– メタデータ
• 言語に応じたタイトル等
- 47. テーマ
• 以下をまとめたもの
– スタイルシート
– フロントエンドモジュール
– ページレイアウト
– カスタマイズしたテンプレート
– その他のファイルのリソース
- 48. ここまでのまとめ
• サイト構造:
ページ
– ページレイアウト、アクセス権
– アーティクル
• テーマ:
ページレイアウト
– スタイルシート、フロントエンドモジュール、JavaScript
• コンテンツ:
– アーティクル、ニュース項目、イベント
• コンテンツ要素
- 49. 挿入タグ
と }}
で囲んだ内容を展開
– 殆どのところで使用可能
• {{
• ページをキャッシュとも仲良し
– 様々な展開
• 他のコンテンツへのリンク
• メンバーの属性
• 環境変数
• 他のコンテンツの挿入
• 日付
• ページの言語に依存した表示
• 画像のサムネイル
- 51. 機能拡張
• 本体のファイルを変更しない拡張
– フック関数
– コールバック関数
• namespace
– 本体のPHPのクラスも置き換え可能
• モジュール構成による容易な作成
– バックエンドとフロントエンドの分離
– 統一的なバックエンドのインターフェイス
- 55. 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 ''
);
- 58. 拡張のまとめ
• 標準の配布にないファイルを追加
• バージョンアップに影響を受けない:
– 機能拡張のディレクトリ名が衝突しない限り
– ContaoのAPIの互換性がある限り
• 機能拡張リポジトリに登録すると:
– 互換性のあるバージョンの範囲を指定
– 誰かが他の言語のラベルに翻訳してくれるかも?
- 59. インストールの準備
• Apache、PHPの設定
• データベースの準備
– データベースの作成
– データベースのユーザーの作成
• ソフトウェアのダウンロードと展開
– 手作業でダウンロード、展開、アップロード
– パッケージシステムの利用(pkgsrc)
– Contaoチェックの利用も可能
- 60. Contaoチェック
• インストールの支援ツール
– Contaoのインストールに関する検査
• Contaoのバージョンに応じたインストールの可否
– インストール後の機能の利用可否
• 機能拡張リポジトリ
• ライブアップデート
• セーフモード対処の必要性
– Contaoの配布ファイルの取得と展開
• ダウンロード、展開、アップロードといった手順を自動実行
• 展開したファイルの内容の検査
- 61. インストール
• インストールツール
– hJp://example.jp/contao/install.php
– 数段階で設定
• データベースの接続確認やテーブル作成
• アップデートや開発で使う場合
• セキュリティ
– 最初にパスワードを設定
– 不安な場合はinstall.phpを削除や名前変更を実施
- 62. ライブアップデート
• iNet
Robots社による有償サービス
– 年額9.9ユーロ
• ドイツの売上税19%込み、それを除いた日本円で1200円弱
• 1つインストールしたContaoに対して必要
• マウス数回のクリックで更新
– インストール先のバージョンの選択
• 新しいバグ修正リリース
• 新しいマイナーリリース
– 修正しているテンプレートと機能拡張には注意
- 63. Contao 3.4
• 2014年11月リリース予定
• 新規
– SVGとSVGZ画像のサポート
• ファイル管理で編集
– スタイルシートのエクスポート
• 改善
– 内部(データベース上)と外部のCSSを読み込む
順序の選択
– その他細かな修正
- 64. Contao 4
• 2015年5月に4.0.0をリリース予定
– 現在:
4.0.0-‐alpha2
– 同時に長期サポートリリース:
3.5
• 互換性のない変更
– Symfonyの採用
– Composerのさらなる活用
• どこまで統合が進むかどうかは未定
- 65. Symfonyの導入
• 継続性
– 断ち切って、新たに始めることはしない。
• 段階的な移行
– SymfonyのシステムレベルをContaoに統合し、
– Symfonyのコンポーネントをベースとしたものに、
Contaoのフレームワークを徐々に移行
• 概念実証:
githubに提示
• hJps://github.com/contao/core/tree/feature/contao-‐with-‐symfony
- 66. Symfonyのための準備
• 4月24日の公開討論で合意
– 可能な限りリソースをコードから分離
– Contaoのフレームワークの中で
Symfonyのコンポーネントを使用
– 依存関係を導入するコンテナの早期で総合的な統合
• 技術的な検討はGitHubのチケット
– hJps://github.com/contao/contao/issues/9
- 68. 計画の変更
• 2014年9月11日の方針変更
– 年内のSymfonyの統合が間に合わない可能性
– 4.0には見送り?
• 開発ブランチ:
feature/symfony
Symfony統合のコード
• 開発ブランチ:
develop
Symfony統合のコードを除去
• Symfony統合のTo
Do
List
– hJps://github.com/contao/symfony-‐todo
- 69. Contao 4.0の新機能
• Apache依存の廃止
– .htaccessに非依存 →
ngnix等への対応
• 旧来への依存の廃止
– セーフモード対処の廃止
– XHTMLのサポートの廃止
• マークアップとCSSのクラスの統合
• 内部的(開発者向け)改良
– Composerによる構成管理
– コールバックの引数の順序の統一
– contao-‐components(GitHub)での構成要素の管理
- 70. 公式サイト
• 公式サイト:
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
- 71. 開発: 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
- 72. 国内の情報
• hJp://www.contaocms.jp/
– 個人サイト
• hJp://www.contao.jp/
– 日本Contaoの会:
Facebookのグループだけ
• Facebook
– 日本Contaoの会の公開グループ
• TwiJer
– @contaocms_jp
/
@contao_cco