contao open source cms -- 新しいメジャーリリースとltsリリース
TRANSCRIPT
Contao Open Source CMS新しいメジャーリリースとLTSリリース
オープンソースカンファレンス 2015 @Hokkaido2015年 6月13日
日本Contaoの会: 神戸 隆博
話題(の候補)
• Contaoの概要 • コンテント要素 • Contaoのインストール • リリースの概要 • Contaoの関連リンク
発表者について
• Contaoとの関わり – 2008年7月頃 ブログではないマルチドメインのCMSを求めて • 2.6.BETAの頃
– 2011年2月 日本語の言語ファイル担当
– 2012年3月 Ambassadors in Japan (親善大使)
• オープンソースと私 – NetBSD開発者(pkgsrc)、2000年8月から – (秘かに)日本語翻訳
Contaoの概要
Contaoとは何か
• オープンソースのCMS – 2006年3月12日: 2.0.RCから公開 – LGPL3 – 商用ライセンスあり
• ページのソースでContaoを使用している表示を削除 – metaタグのgenerator
• ソースコードから著作権表示を削除 – 公式サイト: hKps://contao.org/ – 開発元: ドイツ – 元の名前: TYPOlight (2.8まで)
• lightから軽量版とか小規模サイト専用と誤解
数字で見るContao
• ダウンロード – 2015年5月18日で1,038,049 • 2013年8月30日までsourceforge.net • download.contao.orgからのダウンロード
– Contao Check – 公式サイトのダウンロード
• github.comからのダウンロードは除外
• Webサイト – 70,000のサイト • CMSCrawler • Live Update Serverのログ
マーケットシェア
• マーケットシェア (by CMSCrawler) – 770システム中12位(前回: 7位) • ドイツ: 6位(前回: 8位) 2.02% • オーストリア: 5位(前回: 6位) 2.39% • スイス: 6位(前回: 8位) 1.80%
• 人気: 第3位 (by webkrauts) • WordPress 62% • TYPO3 27% • Contao 23% • Drupal 15% • Joomla! 9%
名前の由来
• ベトナム語のconとtạoの造語 – tạo
• 形をなす、創造するといった意味のベトナム語 – con tạo
• 創作者、運命づけるといった意味 • コンテンツにも通じる
– 地名ではない • リリース2.9から改名
Contaoの特徴
• バックエンドとフロントエンド – 公開するサイトに依存しない一貫した画面構成
• 階層構成によるページの管理 • コンテント要素 – コンテンツを複数の種類のパートで構成
• アクセシビリティの考慮 • 機能拡張 – 機能拡張リポジトリによる管理 – 本体の直接変更は不要
事例
• hKps://contao.org/en/case-‐studies.html
大規模な機能拡張の例
• Isotope – 電子商取引 – hKps://isotopeecommerce.org/
動作環境
• Webサーバー – Apache(, IIS)
• スクリプティング言語 – Contao 3.2でPHP 5.3.2以降 – Contao 3.5/4.0でPHP 5.4.0以降
• 必要な拡張: mysqli(またはmysql), dom, gd, mbstring(またはiconv), mcrypt, soap, curl, zlib
• データベース管理システム – MySQL 5.0.3以降
• 他のデータベースのサポートは3.0で一旦廃止
各国語対応
• 言語ファイルは本体に同梱 – Contao 3.4で23、3.5で22の言語
• Transifexで95%以上の翻訳率で採用、95%未満で削除 • 機能拡張で提供も可能
• PHPの配列をベース – メッセージカタログ(geKext)は不使用 – UTF-‐8 – 設定ファイルで翻訳の追加や修正が可能
リリースの種類(1)
• バージョンX.Y.Z – メジャーリリース(X)
• あらゆる変更の可能性 • 概ね2年に1度(2012年10月30日の3)
– マイナーリリース(Y) • API、データ構造、テンプレートに変更の可能性 • 半年、5月と11月(2015年6月の3.5)
– バグ修正リリース(Z) • 基本的にバグ修正だけ • 随時(概ね月に1度程度)
リリースの種類(2)
• 長期間サポートリリース(LTS): 3.5 – 18か月間の保守期間のマイナーリリース
• 基本的にバグ修正だけ – 加えて6か月の移行期間: 3.2
• セキュリティ修正だけ
• 開発版: 4.0 – 2015年6月リリース予定 – 数か月から1年以上の開発期間
現在のリリース
• Contao 3.2 (LTS: 移行段階) – 2015年 6月 5日 3.2.21
• Contao 3.5 (安定版/LTS) – 2015年 6月 5日 3.5.0
• Contao 4.0 (安定版) – 2015年 6月 9日 4.0.0
リリース予定
• hKp://contao.org/release-‐plan.html
バックエンドとフロントエンド
• Webサイトの管理側と公開側 – 管理側: バックエンド(BE) – 公開側: フロントエンド(FE) – バックエンドで管理して、 フロントエンドをプレビュー → 公開
• URL – FE: hKp://www.example.jp/ – BE: hKp://www.example.jp/contao/
フロントエンドの例
• 事例で挙げたのはすべてフロントエンド
バックエンド
ホーム
バックエンドの構成
• 3つの部分 – ヘッダー、左サイド、メイン – ユーザー権限のないものは非表示
• テーマ設定可能 – フロントエンドの表示と無関係 – flexibleバックエンドテーマ
• Contao 3.3以降のデフォルトのテーマ • Contao 3.2までのdefaultに追加 • レスポンシブ
バックエンドのUIの特徴
• 主に3つの表示形式 – リスト表示 – ペアレント表示 – ツリー表示 – それぞれで強力な並べ替え、フィルター、検索
• バックエンド全体の一貫性 – 操作するためのアイコンの持つ意味
リスト表示
ペアレント表示
ツリー表示
編集の表示例
ユーザー設定
プレビュー
新しいウィンドウ
コンテンツ
• 実際のコンテンツを管理 – アーティクル
• ページに表示する内容 – フォームジェネレーター
• フロントエンドのフォームを自由に作成 – コメント
• 他のコンテンツでフロントエンドから入力されたコメントの管理 – その他、特定の種類のコンテンツ
レイアウト
• ページ内の配置や整形のデザイン – テーマ: 以下をまとめて管理
• スタイルシート • フロントエンドモジュール • ページレイアウト
– サイト構造 • ページを階層的に管理
– テンプレート • カスタマイズしたテンプレートのファイルの管理
アカウント管理
• ユーザーに関連の管理 – メンバー
• フロントエンドのユーザー – メンバーグループ
• フロントエンドで保護されたページに使用 – ユーザー
• バックエンドのユーザー – ユーザーグループ
• バックエンドの権限の管理 • ユーザーに対してユーザーグループと組み合わせて権限設定を可能
システム
• 設定やリソースの管理 – ファイル管理
• コンテンツで使用する画像や動画等 • フロントエンドでアップロード • TinyMCEから呼び出し可能
– 設定 • Contaoの全体の設定
– 保守 • キャッシュの消去やライブアップデート
– 機能拡張カタログと機能拡張の管理 • 機能拡張をリポジトリから一覧、インストール、更新
開発者ツール
• 開発者向けのツール – autoloadの作成
• 古い機能拡張でも、autoloadを用意すると動作する場合がある。 – 機能拡張の作成
• 機能拡張の雛形の作成
– 不足ラベル • 未翻訳の言語ラベルの確認
Contaoとコンテンツ
コンテント要素
コンテント要素
• アーティクル、ニュース、イベントの内容 – コンテンツを構成する順序に分けて構成 – コンテント要素に適切なテンプレートの適用
• アクセシビリティ • 内部検索エンジンへの指示
– コンテンツの再利用・効率的な利用 • 同じコンテント要素の共有 • 他のコンテント要素の取り込み
– コンテント要素単位の公開
コンテント要素の種類
• HTMLの要素 – 見出し、テキスト(リッチテキスト編集)、HTML – 箇条書き、表、(プログラムの)コード、Markdown
• リンク – ハイパーリンク、トップリンク
• ファイル – ダウンロード、複数ダウンロード
メディアや表示の制御
• 画像や動画 – 画像、画像ギャラリー、映像や音声、YouTube動画
• コンテント要素の表示制御 – アコーディオン、コンテントスライダー
• 他のコンテンツの取り込み – アーティクル、コンテント要素、モジュール、 アーティクルのティーザー
– フォーム、コメント
Contaoのインストールと更新
インストールの準備
• Apache、PHPの設定 • データベースの準備 – データベースの作成 – データベースのユーザーの作成
• ソフトウェアのダウンロードと展開 – 手作業でダウンロード、展開、アップロード – パッケージシステムの利用(pkgsrc) – Contaoチェックの利用も可能
Contaoチェック
• インストールの支援ツール – Contaoのインストールに関する検査
• Contaoのバージョンに応じたインストールの可否 – インストール後の機能の利用可否
• 機能拡張リポジトリ • ライブアップデート • セーフモード対処の必要性
– Contaoの配布ファイルの取得と展開 • ダウンロード、展開、アップロードといった手順を自動実行 • 展開したファイルの内容の検査 • Contao 4.0には非対応
– PHPのgeKext拡張(多言語表示)
インストール
• インストールツール – hKp://example.jp/contao/install.php – 数段階で設定
• データベースの接続確認やテーブル作成
• アップデートや開発で使う場合 • セキュリティ – 最初にパスワードを設定 – 不安な場合はinstall.phpを削除や名前変更を実施
ライブアップデート
• hKps://update.contao.org/ – iNet Robots社による有償サービス – 年額10ユーロ
• ドイツの売上税19%込み、それを除いた日本円で1200円弱 • インストールした1つのContaoに対して1ライセンスが必要
• マウス数回のクリックで更新 – インストール先のバージョンの選択
• 新しいバグ修正リリース • 新しいマイナーリリース • 以前のリリース
– バックアップの作成
リリースの概要
Contao 3.0
• 2012年10月30日リリース • 内部構成の大幅な変更 • フロントエンド – MooToolsに加えてjQueryのサポート – HTML5の映像・音声、Youtubeのコンテント要素 – 階層的なページのエイリアス(URLパス) – CSSのグラデーション構文をサポート
• バックエンド – 移動端末用に別のページレイアウト – バージョン間の変更の表示(diff)
Contao 3.1
• 2013年5月24日リリース • 言語方言(fr_FR)のサポート • フロントエンド – スライダーのコンテント要素 – エラー画面のテンプレートのカスタマイズ
• バックエンド – TinyMCEでContaoのページ選択やファイル選択 – 挿入タグにフラッグのサポート – クリックして編集
• Ctrl + クリック (Command + クリック) • Ctrl + Shin + クリック (Command + Shin + クリック)
Contao 3.2
• 2013年11月21日リリース – 長期サポートリリース
• proxyサーバーのサポート – フロントエンドのアクセレーター
• ユーザー名で大文字と小文字の区別 • 保守モード
Contao 3.3
• 2014年5月26日リリース • フロントエンド – Markdownコンテント要素 – 外部スタイルシートでSCSSとLESSのサポート
• バックエンド – カスタマイズ可能なテンプレートの範囲の拡大 – TinyMCE 4 – メンバーとしてプレビュー – レスポンシブなテーマの追加: flexible – ドラッグアンドドロップによるアップロード
• Composerの導入の開始
Contao 3.4
• 2014年11月25日リリース • 新規 – SVGとSVGZ画像のサポート • ファイル管理で編集
– レスポンシブ画像のサポート – スタイルシートのエクスポート
• 改善 – 内部と外部のCSSを読み込む順序の選択 – タイミング攻撃の防止
Contao 3.5
• 2015年6月5日リリース: 3.5.0 – 新しい長期サポートリリース – PHP 5.4以降
3.5.0: 短い開きタグ
– PHP 5.4以降でデフォルトで有効 <? • <?php echo
– テンプレートの可読性の向上 今まで:<div class=“<?php echo $this->class; ?>”> <h1><?php echo $this->headline; ?></h1><p class=“<?php echo $this->cssClass; ?>”><?php echo $this->content; ?></p></div>
これから:<div class="<?= $this->class ?>"> <h1><?= $this->headline ?></h1> <p class="<?= $this->cssClass ?>"><?= $this->content ?></p></div>
3.5.0: テンプレート比較
• テンプレートの比較表示 – テンプレートのオリジナルを表示 – カスタマイズ版とオリジナルの比較表示 – 同グループ(カテゴリ)の別のテンプレートと比較
3.5.0: パスワード変更
• パスワード変更のフロントエンドモジュール – 「個人情報」で変更自体は可能 • 現在のパスワードの検証はなし
– 現在のパスワードも検証
シフトキーで選択
• シフトキーを押しながら選択を変更
ニュースレターの宛て先
• 異なるチャンネル間で宛て先を移動 – 別のニュースレターの間でアドレスを移動 – 移動先では手動で追加の扱い • ユーザー自身に登録の場合はダブル・オプトイン必須
内部的な改善
• モデル・レジストリ – データベースの問い合わせの削減
• データベースのインデックスの改善 • IDE互換性
404ページ
• 404 存在しないページ – ページの種類の1つ – 名前の通り、存在しないページ – 使用されない場合があった: • 不正なページのエイリアス • 不正なニュース項目やイベントのエイリアス • ページネーションで不正なページの選択 • 不正な日付
3.5の位置付け
• Contao 3.5: 新しいLTS – 2017年 5月まで
• Contao 3.2: 移行段階 – 6か月、セキュリティ修正だけ
• Contao 3.4: EOL(End Of Life) – 従来の安定版 – 3.5.0のリリースでサポートの終了
Contao 4.0
• 2015年6月9日にリリース: 4.0.0 – PHP 5.4以降 – Symfony統合
• だけじゃない!
• Contao Konferenz 2015の基調講演 – hKps://leofeyer.com/files/slides/2015/konferenz/
• ドイツ語 • Google Translaton拡張で英訳可能
Contao 4.0の特徴
• Symfony以外の特徴 – schema.orgのタグの取り込み – すべてのフォームの項目のマークアップの統合 – CSSのクラスとウィジェットの棟ッ好 – TinyMCEの構成の改善 – 古いリソースの廃止 • セーフモード対処 • XHTML
– その他
なぜSymfony?
• 基本的な問題 – Contaoの開発者が少ない。 – 2012年10月のContao 3.0以降、開発者により追加された新しい機能はわずかである。
– 一方でPHP界では新しい潮流が確立 • パッケージ管理(Composer) • 継続的インテグレーション(PHPUnit, Travis) • コード解析(Scrutnizer, SensioLabsInsight)
開発者の要望
• 新しい技術の利用と追従 • 解決策 – Symfonyを新しいコードベース – 新しいツールを標準として統合 – Symfonyは広く利用され、ドキュメント化 – 現在、2500以上のSyfonyバンドル
結果
• Contao 4はSymfonyのバンドル – SymfonyアプリケーションにCMSの機能を提供
• 利点 – 「最終的な製品」はSymfonyアプリケーションのままである。
– 結果として、それぞれのSymfony開発者はContaoを扱う作業を行える。
– 新しいコードはSymfonyの標準に従ってコーディングとテストがなさえる。
シナジー効果
• Contao 4と、CMS機能が必要な Symfonyアプリケーションの出会い
• 期待 – RedkiteやSimpleCMSのような著名なSymfonyベースのCMSに対して、Contaoが別の選択肢
– 既にSymfonyを扱っている組織がContaoを取り扱い製品に追加
– Contaoの開発に携わる組織が、新しいContaoの開発者を得る
TinyMCEのテンプレート
• 設定ファイルとしてのテンプレート – 従来: ファイルディレクトリにアップロード – 今後: テンプレートの1つ
• 利点 – バックエンドで編集可能 – アップデート時に変更は保持 – DCAの調整が不要
schema.org
• Webページのコンテンツにラベルを付け – 標準化されたマークアップ言語(マイクロデータ)
• 利点 – 検索エンジンによるコンテンツのインデックスを改善
– 検索結果に付加価値(schema.orgのRich Snippetsの使用時)
– Contao 4で標準
表を使用しない
• 「表を使用しないレイアウト」の設定の廃止 – すべてtableを使用しないフォーム – 新しいスタイルシートのフレームワーク
• form.css
– 標準の書式 • 項目の上にラベル
– CSSのクラス: horizontal-‐form • ラベルと同じ行に項目
– CSSのクラス: inline • すべてを同じ行
ドキュメントルート
• Contaoを展開したディレクトリから変更 – 下位のディレクトリ: web
• 利点 – フォルダーの保護に.htaccessに頼らない。 – Apache以外(nginx)への対応
• 注意 – webディレクトリ以下にシンボリックリンク
• シンボリックリンクを辿るアクセスの許可 • PHPでシンボリックリンク作成が可能なこと
廃止
• セーフモード対処 – シンボリックリンク必須につき対応不可
• XHTMLのサポート – HTML5は2011年6月1日のTYPOlight 2.10.beta1から
• IE6への警告 • 要素の前後のスペース – ちゃんとCSSでしようね。
Contao 4.0.0
• 現状の制限 – Contao 3からのアップグレードなし! – Composerによるインストール
% php composer.phar create-‐project contao/standard-‐editon <target> 4.0.0
• Webベースのインストールツールは今後の課題
– Twigテンプレートの利用 – イベントとフックのSymfonyの機構への移行 – 言語ファイルは英語だけ
Semantic Versioning
• Contao 4からのルール – Major.Minor.Bugfix(-‐Pre-‐Release)
• 例: 4.0.0-‐RC1
• ルール – バグ修正リリース
• 上位互換な修正だけ
– マイナーリリース • 上位互換な新機能あり
– APIの変更 • メジャーバージョンを変更
影響
• APIの変更は必ずメジャーバージョンアップ – Contao 5は早まるかもしれない。
• 本を書く人への推奨 – 「Contao 4で…」と書くのは止めとく。
• 最悪の場合出版時にはContao 5が出てるかも。
– 代わりに「Contao 4から互換」といった表現で
ロードマップ
• Contao 4.0.0 2015年5月 6月 • Contao 4.1.0 2015年11月 • Contao 4.2.0 2016年5月 • Contao 4.3.0 LTS 2016年11月
Contaoの関連情報
公式サイト
• 公式サイト: hKps://contao.org/ • 開発サイト: hKps://github.com/contao/ • フォーラム: hKps://community.contao.org/ • Contao Associaton: hKps://associaton.contao.org/ • 事例研究: hKps://contao.org/case-‐studies.html • コミュニティによるWiki: hKp://contaowiki.org/ • ソーシャルネットワーク – Facebook: hKp://www.facebook.com/contao – TwiKer: hKp://twiKer.com/contaocms
書籍
• 書籍: (ほぼ)すべてドイツ語
国内の情報
• hKp://www.contaocms.jp/ – 個人サイト
• hKps://www.facebook.com/groups/contao.jp – 日本Contaoの会: Facebookのグループだけ – hKp://contao.jp/ を予定
• Facebook – 日本Contaoの会の公開グループ
• TwiKer – @contaocms_jp / @contao_cco
日本Contaoの会
• 緩いユーザーグループを指向 • Facebookに公開グループ • Webサイト準備中 • 協力者絶賛募集中
機能拡張の言語ファイル
• contao.orgのオンライン・トランスレーター – contao.orgにアカウント作成 • 未翻訳の言語ファイルを登録 • 自動的に機能拡張に反映
機能拡張の言語ファイル(続き)
• Transifex – 機能拡張に依存 – Transifexにアカウント作成 • 特定の言語(日本語)の翻訳を申請 • 次のリリースに反映
• GitHub – 機能拡張に依存 – 言語ファイルをpull request
協力者絶賛募集中
• Webサイトの立ち上げ • ドキュメント – 公式マニュアルの日本語版
• hKps://docs.contao.org/ にリンク • マニュアル自体はgitbook
– 言語ファイルの改善 – 日本語のドキュメント整備 – 機能拡張の言語ファイル
• 再利用可能なサンプル・サイト