Movable Type as a Playground

Preview:

DESCRIPTION

MTDDC Meetup TOKYO 2014 のセッションでの資料です。 MT を MT たらしめている機能とはなんでしょうか。答は利用シーンによって異なると思いますが、私は代表的な機能として以下のようなものがあると考えています。 * コンテンツを書き出すためのツールであり、またコミュニティの共通言語である MTML * コンテンツとURLを結びつける枠組みである Static Publishing と Dynamic Publishing * Webサイトに雛形である Theme * ブラウザ以外の環境からのアクセスの土台である Data API このセッションではこれらの機能それぞれにスポットライトをあてて振り返りながら、プラグインを使って(実用的に)どのように遊ぶことができるかという点について、一緒に考えていきます。

Citation preview

Movable Type as a

Playground

Taku AMANO MTDDC Meetup TOKYO 2014

Movable Type as a Playground

Movable Type as a Framework

Movable Type as a 一定のルールに従って自由に

遊べる場所

Movable Type as a ルール

Movable Type as a 場所

ルールがあり 場所があるので

情報や成果を共有できる

Movable Type のルールについて 振り返りつつ

活用できる可能性を考える

今からでも間に合う

http://www.movabletype.jp/blog/mt-pludemy-award-2014.html

はじまります

MTML

<mt:Entries> <$mt:EntryDate format="%x"$> <a href="<$mt:EntryPermalink$>"> <$mt:EntryTitle$> </a></mt:Entries>

コンテンツを書き出すツールであり コミュニティの共通言語

<mt:Entries> <$mt:EntryDate format="%x"$> <a href="<$mt:EntryPermalink$>"> <$mt:EntryTitle$> </a></mt:Entries>

余談

裏側で難しいことを やっていたとしても

MTタグになっていれば 誰でも使える

新しいMTタグを覚えるだけで 今までと同じように書いて 新しいことができる

これを利用している 代表的な プラグイン

DynamicMTML

https://github.com/PowerCMS/DynamicMTML

•指定したタグの中身を動的に

•それ以外を静的に

<mt:DynamicMTML><mt:Entries> <$mt:EntryDate format="%x"$> <a href="<$mt:EntryPermalink$>"> <$mt:EntryTitle$> </a></mt:Entries><mt:DynamicMTML>

<mt:DynamicMTML><mt:Entries> <$mt:EntryDate format="%x"$> <a href="<$mt:EntryPermalink$>"> <$mt:EntryTitle$> </a></mt:Entries><mt:DynamicMTML>

<mt:DynamicMTML><mt:Entries> <$mt:EntryDate format="%x"$> <a href="<$mt:EntryPermalink$>"> <$mt:EntryTitle$> </a></mt:Entries><mt:DynamicMTML>

もう一つの例 (プラグイン)

FastestPreview

ユーザーが カスタマイズしたテンプレート

でもそのまま使える

MTMLがあるから 実現できた

<div><mt:EntryTitle /></div>

普通の書き出しのとき

<div>タイトル</div>

プレビュー用の出力のとき

<div><span data-field=“title”>タイトル</span></div>

同じ mt:EntryTitle タグから 公開用のときと

プレビュー用のときで 異なる結果を出力している

MTでは既存のタグの 動作を変更できる

<div><mt:IfPreview></mt:IfPreview><mt:EntryTitle /><mt:IfPreview></mt:IfPreview></div>

<div><mt:IfPreview></mt:IfPreview><mt:EntryTitle /><mt:IfPreview></mt:IfPreview></div>

テンプレートには 変更を加えることなく 機能を追加できる

コミュニティの共通言語

Static Publishing Dynamic Publishing

優れているところ

•安定した書き出し機能

•プログラマのいない「Web制作会社」でも

•共用のレンタルサーバーでも

•簡単に任意のURLにマッピングできる

いまいちなところ

•拡張するのがかなり面倒くさい

•カスタムフィールドアーカイブとか

•拡張できなくはないが

•プログラムをたくさん書かなければいけない

なんとかできないか

アーカイブマッピング

• 日別・週別・月別・年別 • ユーザー別 • カテゴリ別

「公開されるパス」 が同じ記事のまとまり

年別

ユーザー別

カテゴリ別

<mt:EntryDate format=“%Y” />

ユーザー別

カテゴリ別

<mt:EntryDate format=“%Y” />

<mt:EntryAuthor />

カテゴリ別

<mt:EntryDate format=“%Y” />

<mt:EntryAuthor />

<mt:EntryCategory />

「公開されるパス」 が同じなら

同じアーカイブファイル

MTでは「パス」欄に

好きなだけMTタグを書ける

MappingBasedArchive

Theme

Since 5.0

•ブログの雛形を提供する機能

•テンプレートとアーカイブマッピングの定義

•カスタムフィールドの定義

•静的なファイルの配置

• StyleCatcher •管理画面のUIを変更する機能

他にも

•ブログの設定の変更

•カテゴリの作成

•ページの雛形の作成

•など

多くの使われ方としては ブログの雛形を提供する機能

もっとできるんじゃないか

•テンプレートの開発をサポートする

•運用開始後の編集もサポートする

「ファイルへのリンク」機能 と

組み合わせる

Theme と

「ファイルへのリンク」

SyncedTheme

嬉しいこと

•テンプレートをまとめてリンク

•1つずつリンクする必要がない

•「テーマ」単位で管理できる

•複数のブログのデザインを同時に更新

Data API

Since 6.0

デフォルトの Data API Ver. 1で できること

•認証

•ユーザー情報の取得と更新

•記事の作成と更新

•アイテムのアップロード

•など

Data API Ver. 1 の 課題

•遅い

•特に CGI 環境で

•エンドポイントが少ない

•Ver. 2 ではかなり増えるらしい

APIの価値

•プログラムから利用可能な認証機能

•拡張可能なインターフェイス

Playground

MAUS

http://alfasado.net/apps/maus-ja.html

•プレビュー機能付きの Markdown エディタ

•既存記事の管理

•HTMLビュー機能

•ファイルのアップロード

•などhttp://alfasado.net/apps/maus-ja.html

MTSyncTheme.app

•テーマをローカルからMTへ同期

•ローカルに保存したテーマからプレビュー

•複数のファイルにまたがる変更にも対応

•同じテーマのブログをまとめて再構築

•など

MTSyncTheme.app の 仕組み

• SyncedTheme で Data API のエンドポイントを追加

• App でファイルの変更を監視

•変更があったらエンドポイントにリクエスト

まとめ

MTML

Static/Dynamic Publishing

Theme

Data API

Movable Type as a Playground

ありがとうございました