Movable Type 
プラグイン制作入門以前 
hiroshi yamato / Alliance Port, LLC 
Board Director, Business Development
自己紹介 
• 大和比呂志 
• 合同会社アライアンス・ポー 
ト:共同創業者、取締役事業 
開発マネージャ 
• なんでもやるエンジニア 
• 元シックス・アパートの社員 
番号2番
お断り 
• このプレゼンだけではプラグインを書けるよう 
にはなりません。 
• ゴールは「プラグインを書く前に知っておくと良 
いことを共有しておこう」です。 
• 野田さんはこのセッション中は仕事しててくだ 
さい。
プラグイン書いたこと 
ありますか?
「そもそもプログラム書いたことないよ」 
「でもMTタグなら<mt:if>も<mt:for>も 
<mt:loop>」も使ったことあるでしょ?」
そんな人が対象です
結論:「誰でも書けます」 
(やる気があれば)
道具 
• Perlについての基礎的な知識 
• テキストエディタ
Perlについて 
• 理解度的には「初めてのPerl」(488ページ)と「続・初め 
てのPerl」(432ページ)あたりまで知ってれば大体困りま 
せん 
• でも、社会人が仕事と平行して勉強するの大変ですよ 
ね、、、オライリーの本読み難いし、、、2ヶ月だと一 
日15ページノルマ、、、 
• なのでいきなり仕事にしてしまいました。ほんとマジ死 
ぬかとおもった、、、
基礎的なPerl力を付けるには 
1. http://dotinstall.com/lessons/basic_perl 
2. http://yusukebe.com/archives/20130315/ 
104846.html (ページ数が多くない!! 入門すると 
きには超大事!!) 
3. ここまでやれば「続・初めてのPerl」は読みす 
すめられるので常に鞄に入れておきましょう
(誤解を恐れずに言う) 
MTの正体
• MTが起動するとメモリにハッシュ配列を作ります。 
• そのハッシュ配列の中に「設定」だとか「ユーザー情報」だとか管理 
画面に設定されてるような情報を格納します。 
• その格納されたハッシュ配列が簡単に言うとMTです (厳密に言えば 
mt.cgiですが)。 
• プラグインではそのハッシュ配列の情報を利用したり書き換えたりし 
ます。 
• MTオブジェクトと呼ばれるものは大体そんな感じです。 
• なのでPerlの勉強するときは配列/ハッシュ配列の操作や理解を深めて 
おくと吉です!!!
実際に見てみよう
MTのプラグインで 
出来ること
• オレオレMTタグが作れます (ブロックタグ、ファン 
クションタグ、グローバル・モディファイア等々) 
• 管理画面が拡張できます (オレオレ管理画面も作れ 
ます) 
• MTの機能をつかったCGIアプリケーションが作れ 
ます(メールフォームetc) 
• オレオレAPIが作れます (new!!)
プラグイン制作の「地図」
大きくわけて2つ 
• config.yamlに「プラグインで利用するイベント 
を登録」 
• perlで「イベントに対応した処理を記述」
操作/結果mt.cgi イベントプラグイン 
mt.cgiが起動 
イベントが発生 
対応した処理を呼ぶ 
処理結果を戻す 
出力 
処理 
mt.cgiが終了 
コールバック 
フックポイント
【朗報】
参考になる公式の 
ドキュメントがあります!!
• https://movabletype.org/documentation/ 
developer/ (英語のドキュメント。下記の日本語 
に比べるとこちらのほうがくわしい) 
• https://github.com/movabletype/Documentation/ 
wiki/Japanese-developer-guide (日本語。step 
by stepで書かれているのでとても良いです) 
• DataAPIとかは割愛しますが有ります。
「よしわかった! 
作ってみよう!」
「まぁ、待て」
mtpluginstarter 
• ゼロから作らない。 
• 最新の機能はフォローされてないけど全然充分 (branches 
の中にあるmt-plugin-start_yaml.plを使いましょう) 
• http://sourceforge.jp/projects/mtpluginstarter/ 
• インストールとか使いかたは今日はフォローしません。 
こういうものがある、ということだけ持ち替えってくだ 
さい!!
mtpluginstarterで出来ること 
←名前を決めれる 
←ドキュメントの雛形を用意してくれる 
←MTオブジェクトの拡張の雛形を用意してくれる 
←プラグインの設定のUIとサブルーチンを用意してくれる 
←スケジュールタスクのイベント登録とサブルーチンを用意してくれ 
る 
←管理画面の拡張のイベント登録とサブルーチンを用意してくれる 
←MTタグのイベント登録とサブルーチンを用意してくれる 
←グローバル・モディファイアのイベント登録とサブルーチンを用意 
してくれる 
←アプリケーション・コールバックのイベント登録とサブルーチンを 
用意してくれる 
←管理画面の機能の追加とそのUIの雛形を用意してくれる 
Your new plugin settings are… 
Plugin Name : test 
include documentation link : yes 
using MT::Object : yes 
using config template : yes 
using scheduled tasks : yes 
using transformer : yes 
using template tags : yes 
using text filters : yes 
using app callbacks : yes 
using methods : yes
時間があればデモ
人のcodeを読んでみよう 
https://github.com/allianceport/OneTimeTask 
https://github.com/allianceport/RebuildOncetimePerDay 
https://github.com/movabletype/Documentation/wiki/ 
Japanese-plugin-dev-2-1
まとめ
• Perlは my ($app, $hoge) = @_; ってのを見て意味が解る程 
度で大体オーケー (あとはグーグル先生がなんとかしてくれ 
ます) 
• MTプラグインは「イベントとその処理」を記述するだけ。 
作法を覚えたらそれでおしまい。 
• できることは「イベントに登録できること」だけ (実際は他 
にもあります。プラグインの設定とか) 
• 人のコードが読めるようになれば理解は急激に深まります 
(最終的にはMTのコードを読めるようになります)
だれでも作れます!!
この資料でフォローさ 
れていないこと
• デバッグについて: 
https://github.com/movabletype/Documentation/wiki/Japanese-plugin-dev-2-4 
• プラグイン設定について: 
https://github.com/movabletype/Documentation/wiki/Japanese-plugin-dev-3-1 
• MTオブジェクトについて: 
https://github.com/movabletype/Documentation/wiki/Japanese-plugin-dev-3-4 
http://www.sixapart.jp/movabletype/manual/object_reference/ 
• DataAPIについて: 
https://github.com/movabletype/Documentation/wiki/Movable-Type-Data-API 
• リスティング・フレームワークについて: 
https://github.com/movabletype/Documentation/wiki/Ja-dev-listing-framework-overview 
• などなど
One more thing 
(言ってみたかった!!)
• 先程紹介したmtpluginstarterですが、ライセンスが変 
更になります (メンテや開発に参加も出来るかも!!)。 
• シックス・アパート高山さんが「toolsの下に入れら 
れるように検討します!!」と言ってくれました!! (そ 
うなればMTのパッケージに含まれて、より使いやす 
く!!) 
• なので懇親会では最低一人一回は高山さんに「(tools 
に)入れてください!!」ってお願いしましょう!!
ありがとうございました!

MTプラグイン入門以前