&pgid();
 
 #contents
 
 ** 動画(Ustream) [#h078a3d2]
 
 勉強会の模様をアップしました。たくさんのご参加ありがとうございます。
 動画が潰れてて見れない状態になっててすみませんm(_ _)m
 
 次回以降は改善した状態でお届けします。
 
 #htmlinsert(study/mtplugin-1.html)
 
 Ustreamのチャンネルはこちら。
 http://www.ustream.tv/channel/mt%E3%83%97%E3%83%A9%E3%82%B0%E3%82%A4%E3%83%B3%E5%8B%89%E5%BC%B7%E4%BC%9A
 
 ** 勉強会で解説したプログラムコードのダウンロード [#s88262b7]
 
 &ref(HelloWorld.zip);
 
 *** 使い方(使う人はいないと思うけど) [#g539f546]
 
 + 解凍してできたHelloWorldディレクトリをMT_DIR/plugins/にアップロードします
 + テンプレートの好きな位置に<$MTHelloWorld$>を埋め込みます。
 + 再構築すると、<$MTHelloWorld$>を埋め込んだ場所がHello MT's Worldという文字列に置き換わります。
 ** ネタ [#bf9718df]
 
 - [[MT4.xプラグイン作成>http://www.ark-web.jp/sandbox/wiki/298.html]]
 - [[プラグイン開発のためのファーストステップ:技術情報提供ブログ>http://www.sixapart.jp/pronet/developers/plugin/plugin_development_guide.html]]
 
 
 ** 日時 [#g86debd5]
 
 - 2008/05/23(金) 10:00〜
 
 ** 参加者 [#i0e81651]
 
 
 ** プラグインの種類 [#o0d56132]
 
 - [[MT4.xプラグイン作成>http://www.ark-web.jp/sandbox/wiki/298.html]]
 
 ** プラグインの基本構造(ディレクトリ、ファイル構造) [#f54d314f]
 
  MT_DIR/
  |__ (plugins)/
  |  |__ MyPlugin/ <- プラグイン・スクリプト
  |     |__ *.pl     <- プラグイン本体
  |     |__ *.cgi    <- MT::Bootstarpを使ったCGIプログラム
  |     |__ lib/           <- 独自開発のクラスファイルを格納
  |     |  |__ MT/
  |     |  |   |__ *.pm      <- モデルクラス(MT::Objectのサブクラス)
  |     |  |__ *.pm          <- プラグイン本体やMT::Bootstrapを利用して呼び出されるアプリケーションの実体やユーティリティなど
  |     |__ tmpl/          <- View(テンプレートファイル)を格納
  |     |  |__ *.tmpl
  |     |__ php/           <- ダイナミック・パブリッシング対応スクリプトを格納
  |         |__ lib/
  |         |__ classes/
  |
  |__ mt-static/   <- スタティック・ファイル(画像やJS、CSSなど)
     |__ (plugins)/
        |__ MyPlugin/
           |__ *.css       <- スタイル
           |__ images/     <- 画像
           |__ js/         <- JavaScript
              |__ *.js
 
 この構造を利用するメリット
 
 - 慣習に従うメリット(他のプラグインも読みやすくなり、他の開発者にも理解されやすい)
 - プラグイン・スクリプト、スタティック・ファイルともに [plugins/プラグイン名] というディレクトリ配下にまとめてファイルを置いておくことで、インストール、アンインストールが簡単になる。
 - MT::ObjectのサブクラスをModel、テンプレートファイルをView、プラグイン本体やMT::Bootstrapを利用して呼び出されるアプリケーションの実体をControllerとみなすことで、MVC風(?)アーキテクチャでの開発が可能
 - プラグイン・スクリプトとスタティック・ファイルを分けているので、デザイナとの協業が楽。また、スタティック・ファイルをMT_DIRから移動させることができる((環境変数StaticFilePathで移動先のmt-staticディレクトリのパスを指定する))ので、MT_DIRにBasic認証をかけたりした場合でも、画像やスタイルなどはエンドユーザから認証なしでアクセス可能にできる。
 
 その他のプラグイン作成のよい習慣は[[MovableType拡張プラグラミングに関する10の良い習慣。 (Junnama Online (Mirror))>http://junnama.alfasado.net/online/2007/07/_movablety.html]]を一読されることをオススメ!
 
 ** もっともシンプルなプラグイン例 [#h955e205]
 
 シンプルなテンプレートタグ・プラグイン例としてHelloWorldを表示する、HelloWorldプラグインを解説する。
 
 
 
 
 
 
 ** A-Formではどんなことをやってる? [#te3ed9ae]
 
 A-Form(http://www.ark-web.jp/movabletype/)では、MTプラグインの仕組みを利用して、以下のようなことをやっています。
 
 - 独自モデルオブジェクト、テンプレートの利用
 - ↑を利用したMVC風アーキテクチャによる実装
 - 管理画面の画面追加、メニューの追加、権限設定
 - 国際化(現バージョンでは不完全ですが^^;)
 - グローバルフィルタを利用したエントリー内独自変数の再構築時置換
 - 再構築処理呼び出し
 - MT::Bootstrapを使ったフォームエンジンの実装
 - MT::Bootstrapから組み込み先ブログのヘッダ、フッタ情報取得
 - メール送信処理
 - 動的入力チェック、アクセスレポート、死活監視(この辺りはMTプラグインの仕組みというより、応用ですが・・)
 - セキュリティを意識した設計とテスト
 - 文字コード変換、MT::Bootstrapでの国際化、タイムゾーン設定
 - etc...
 
 次回以降、週次でこれらの技術的Tipsやノウハウを紹介していきます。
 
 ** 次回予定 [#ea075302]
 
 第1回では、基礎知識としてMTプラグインの概要を抑えてもらったと思うので、次回は「A-Formの基本構造」を解説します。「独自オブジェクトの定義方法、国際化の方法」に関してもふれるかもしれません。
 
 #blikifooter(進地);
 
 tag: [[Movable Type>tag/Movable Type]]、[[MT>tag/MT]]、[[MTPlugin>tag/MTPlugin]]、[[勉強会>tag/勉強会]]

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS

アークウェブのサービスやソリューションはこちら