[要約]MovableType Developers and Designers Conference_01と02

#### はじめに
* [2017年度のMovableType Developers and Designers Conference](https://www.sixapart.jp/movabletype/news/2017/08/21-1100.html)のセッション動画から、MovableType7（MT7）についてのもの2つをピックアップして視聴したので、自分メモを兼ねてご紹介いたします。
* 動画をベースにまとめているので、内容はカンファレンスが催された **2017/10/06時点のもの** です。
* SixApartさんのYoutubeチャンネルは[こちら](https://www.youtube.com/user/SixApartKK/)

# [01] 基調講演：生まれかわる Movable Type 7 のコンセプトと概要
* 取締役CTO 平田大治
* 動画URL　https://www.youtube.com/watch?v=uo-uTot9028

## MTの変遷
- MT3
  - ブログツールとして誕生、普及
- MT4
  - 企業向け需要の増大、カスタムフィールド
- MT5
  - WEBサイト管理ツール
- MT6
  - DATA APIの装備、コンテンツパブリッシングプラットフォーム
- MovableType.net
  - サービス化

## MT7の新機能～コンテンツタイプ
### 概要
- 従来の「記事」に相当
- 0からすべての要素を設計可能
- コンテンツタイプデザインのエクスポート／インポート可能
- コンバートのサポート
- サポートするフィールドタイプは以下の通り
  - 数値
  - 文字列
  - 画像
  - ファイル
  - 日時
  - プラグイン拡張も可能
- ブロックエディタ
  - マルチデバイス、シンジケーション対応
  - プラグイン拡張も可能

### メリット
- 様々な情報をすべて「本文」に入れる必要がなくなる
- 「エントリー」「ページ」以外の名称をつけることができる
- タイトルを必須としないコンテンツが作れる
- コンテンツとデザインを分離できる
- プラグインやアドオンなしでコンテンツタイプが作れる
- 特定のメディアセットの参照ができるようになる
- 使い回しができるコンテンツの管理がしやすくなる

### ベースとなるCSSフレームワーク
- Bootstrap4


## MT6とMT7とのWEBサイト構造の違い
### MT6
- WEBサイト　＝　ドメイン名
  - ページ
  - エントリー
  - ブログ
      - ページ　⇔　カスタムフィールド
      - エントリー　⇔　カスタムフィールド
      - テンプレート
  - メディアセット

### MT7
- サイトグループ
  - コンテンツタイプ
      - フィールド（他との共用可能）
  - 共通アセット
  - 共通テンプレート
  - WEBサイト
      - コンテンツタイプ　⇔　メディアセット
          - フィールド

## MT7のその他変更点
### Data API v4
- コンテンツタイプに対応

### 内部コードのブラッシュアップ
- 新しいPerlへの対応、パフォーマンス改善

### 新しいテーマ
- Jungfrau

### ライセンス体系の変更
- MT7の年間メンテナンス(年額30,000円)
  - MT6を既に持っている場合、こちらだけでMT7を入手可能
  - 今後のver.up(メジャー含む)の提供
  - テクニカルサポート

## 今後のMT7への追加機能予定
### アセット管理機能の強化
- ライフサイクル、バージョン管理

### ワークフロー機能の搭載
- チームでの仕事をしやすくするための機能を中心に
- 社内外とのコラボレーション


## 質疑応答
### Advanced版の提供
- 半年～1年遅れ

### AWS、クラウド版での提供
- 個々のユーザと相談して順次アップデート

### MT6からの移行
- まるごとアップデート移行できるようにはする
- 移行の際は、記事→記事というかたちになる（記事→コンテンツタイプは不可）


# [02] 詳説 Movable Type 7〜Movable Type 7 で始めるコンテンツとウェブの新しい関係〜
* Movable Type プロダクトマネージャー・リードエンジニア 高山裕司
* 動画URL　https://www.youtube.com/watch?v=kAbsZ24i_5A

## ターゲットゾーンの引き上げ
### 従来
- 中規模

### MT7
- 中規模～大規模高価格

## コンテンツタイプ
### 特徴
- 記事、WEBページに代わる第三のコンテンツのかたち
- 必要なフィールドを自由に設計
- コンテンツタイプ自体を他のコンテンツタイプにリンクできる
- コンテンツタイプごとに個別・リストのアーカイヴを作れる
- コンテンツタイプ毎の権限管理、フィールド単位での編集権限の設定ができる

### 構成要素
- エンティティ（Content Field）
  - 情報の最小単位
  - すべてのコンテンツを構成するための部品
  - 例
      - テキスト
      - 画像
      - 動画
      - 地図
      - など
- コンテンツ（Content Type）
  - エンティティが組み合わさったもの
  - 他のコンテンツをエンティティとして組み合わせることもできる
  - 例
      - 記事
      - 製品ページ
      - 会社概要
- サイト（Site）
  - 複数のコンテンツが集まった集合体
  - 例
      - サイト
      - アプリ
      - キオスク

### 従来の記事とWEBページについて
- これまで通り使える
- ただし、過去の互換姓として残っているもの、として捉えるべき
- 記事とWEBページでできることはコンテンツタイプでもできる
- 既存のサイトにおいては、徐々にコンテンツタイプに変更していくべき

### 柔軟なコンテンツ管理を実現する機能
- コンテンツ設計（Content Designer）
  - 新しいコンテンツタイプの作成、複製、管理
- コンテンツマイグレーション（Content Migration）
  - 既存のコンテンツを別のコンテンツタイプへ変換
- 版管理（Versioning）
  - 公開中のコンテンツの新版作成、公開

### 柔軟なコンテンツ管理を実現する機能
- ライフサイクル管理（Content Lifecycle Management）
  - コンテンツの公開、非公開
  - スケジュール公開、非公開
- コンテンツタイプ共有（Content Type Library）
  - コンテンツタイプをテンプレートとして管理
  - Content Type Repository Service
- 変更履歴管理（Audit Trail）
  - 変更内容の確認
  - 変更日時や担当者の確認


## コンテンツタイプ関連のテンプレートタグ（代表的なもの）
### mt:Contents
- コンテンツデータを一覧するブロックタグ
- type=<content type unique_id> または name=<content type name> を指定

```
    <mt:Contents blog_id="1" name="text xontent type">
      <mt:ContentId>
    </mt:Contents>
```

### mt:ContentField
- Content Data の各フィールドに登録されたデータを表示するためのタグ
- unique_id=<Content Field Unique ID> または content_field_id=<Content Field ID> または label=<Content Field Label> を与えることで、フィールド指定
- フィールドタイプがAssets, Categories, Tags, Content Types の場合は、それぞれのコンテクストを用意し、コンテクストに合ったテンプレートタグが利用できる

```
    <mt:Contents blog_id="1" name="text xontent type">
      <mt:ContentFiled label="Image">
        <img src="<mt:AssetThumbnailUrl height='70' square='1'>" width="70" height="70">
      </mt:ContentField>
    </mt:Contents>
```

### mt:ContentPermalink
- Content Data のパーマリンクを返すファンクションタグ

```
    <mt:Contents blog_id="1" name="text xontent type">
      <a href="<mt:ContentPermalink>"><mt:ContentID></a>
    </mt:Contents>
```

## コンテンツタイプ以外の変更点
### ダッシュボードの刷新
- 3階層構造
  - System Dashboard
      - User Dashboard
          - Site Dashboard
- System Dashboard
  - システム系の権限を有するユーザーのみ利用可能
  - すべてのサイトのデータを串刺しにすることはできない
- 新しいウィジェット
  - 例
      - Site List
      - Updates
      - Activity Logs
      - System Information
  - 過去のver.からのアップデート時には、ユーザーごとのウィジェット設定は出荷時デフォルトに初期化される
- Blog Stats 完全廃止

### メニュー構成の刷新
- Content Type 関連のメニューが追加
- 既存のメニューも再整理

### ブログをやめた
- mt:SiteXXX というタグを用意
  - mt:BlogXXX, mt:WebsiteXXX タグは引き続き利用可能だが、将来のver.で無くなる予定
- Website - Blog という関係はなくなる
  - 親Site - 子Site という関係になる
  - 運用面では特に変化なし

### 複数のカテゴリ群を管理するカテゴリセット
- 階層化されたカテゴリを用途に応じて用意できる
- 1階層は用途、2階層はカテゴリといった運用ルールに縛られない
- コンテンツタイプで利用可能
- コンテンツタイプの中で複数のカテゴリセットを利用可能

### 新しいシステム権限
- CMS と Data API のサインイン権限
  - CMS へのサインインを認めず Data API 専用のユーザーを作成する運用が可能
- すべてのコンテンツタイプとコンテンツデータを管理する権限
- ユーザーとグループを管理する権限

### 新しい権限とロール
- Content Designer
  - コンテンツタイプの管理とカテゴリセット管理およびサンプル作成のためのコンテンツデータの管理権限を保有
- Site Administrator
  - 従来の Website Administrator / Blog Administrator の代わり
  - Manage Website with Blogs 権限は廃止
- Create sites
  - 親サイトでこの権限を保有する場合に子サイトを作成できる
  - Create Blog システム権限を廃止
- Manage Category Set
  - 新しい要素であるカテゴリセットの管理権限
- Manage Content Types
  - コンテンツタイプの管理権限
- Manage Content Data
  - コンテンツデータの管理権限
- コンテンツタイプごとの権限
  - Manage Content Data
  - Create Content Data
  - Publish Content Data
  - Edit All Content Data
- コンテンツフィールドごとの権限
  - Manage XXXX field

### その他
- カテゴリトラックバックの廃止
- コンテンツタイプ用のテーマを標準同梱
  - Mont-Blanc
  - Jungfrau
- 「バックアップ＆復元」を「インポート＆エクスポート」へ変更


## 今後のMT7への追加機能予定
### アセット管理システムを実現する機能（2018年度末？）
- アセット一覧（Listing Framework）
  - スムーズに情報を一覧、確認できて検索できる
- ライフサイクル管理（Asset Lifecycle Management）
  - 関連するコンテンツと連動したアセットの公開・非公開
- 版管理（Versioning）
  - アセットの更新に応じた版管理
- 変更履歴管理（Audit Trail）
  - 変更内容の確認
  - 更新日や担当者の確認
- 著作権管理機能（Digital Rights Management）
  - アセットのウォーターマーク
  - Exif や Geotag といった情報の保護
- 画像編集（Image Editor）
  - より使いやすく
- 外部アセット連携（External Asset）
  - 外部サービスで管理しているアセットもアップロードしたアセットと変わらない管理を実現

### ワークフロー管理を実現する機能（2019年度初頭？）
- プレビュー（On-demand Preview）
  - リアルタイムプレビュー
  - マルチディスプレイ対応
- 通知（Message Center）
  - フローに応じてメッセージをユーザーに通知
- ダッシュボード（Dashboard）
  - レビュー依頼やタスクをダッシュボードで確認


## Developer Preview 版の注意事項・制限事項
### 注意事項
- まだ未実装のところがあります
- デザインは大幅に変更される可能性を秘めています
- 本番サイトやステージングサイトでのご利用はご遠慮ください
  - プラグインやアドオンが対応していないために動かない可能性があります
- 同梱している一部の機能、プラグインが本当にプラグインになるかもしれません

### 制限事項
- Community.Pack は同梱されていません
  - 製品版でも同梱されない可能性があります


## MT7 仕様（予定）
### Perl
- 5.10.1 - 5.24.x
- 推奨：5.18.x

### MySQL / MariaDB
- MySQL 5.1以上 / MariaDB 5.5以上
- 推奨：MariaDB 10.1

### nginx / Apache httpd / psgi server
- 推奨：nginx + starman

### HTML::Entities が必須モジュール
- XSモジュールが利用されているため extlib に含まれていない