SlideShare a Scribd company logo
1 of 48
Download to read offline
Movable Typeの
Webアプリケーションフレームワークの基本

藤本 壱

2010/12/18
MTDDC HOKKAIDO



                        1
今日のアジェンダ
自己紹介
取り上げる事例
プラグイン/Bootstrapアプリケーションの基本
独自オブジェクトの作成(データベースの拡張)
独自の管理画面の追加
Listing Framework
Bootstrapアプリケーションの作成
まとめ
                             2
自己紹介




       3
自己紹介
藤本 壱(ふじもと はじめ)
群馬県前橋市在住
フリーライター
Movable Type関連の書籍も執筆
Twitter : @hjfuji




                       4
ブログやってます(もちろんMT5で)




    http://www.h-fj.com/blog/
                                5
取り上げる事例




          6
MyTouch
(MTで作った位置情報記録アプリケーション)
現在いる場所をMovable Typeに記録するアプリ
ケーション(Foursquareやロケタッチのまね)
場所の情報の追加/編集はMTの管理画面上で
行う(プラグイン)
場所の記録はMTのフレームワークを使った独自
アプリケーションで行う(Bootstrapアプリケーショ
ン)


                               7
デモをご覧ください




            8
プラグイン/Bootstrap
アプリケーションの基本




                  9
プラグインとは?
Movable Typeに機能を追加するプログラム
基本的にPerlで記述
さまざまな拡張が可能
 テンプレートタグの追加
 管理画面のカスタマイズ/独自の管理画面の追加
 コールバック(MT本体の処理の節目にプラグインの
 処理を追加)


                            10
Bootstrapアプリケーションとは?
Movable Typeのフレームワークを利用した独自
のアプリケーション(CGI)
MT::Bootstrapモジュールによって起動
Movable Typeコアの各種の機能を利用できる
mt.cgi/mt-comments.cgi等もBootstrapアプリ
ケーション



                                       11
プラグイン/Bootstrapアプリケーションの
ファイル構成
Movable Typeのディレクトリ
     pluginsディレクトリ
     プラグイン毎のディレクトリ
             config.yaml     プラグインの各種定義を記述
            l10n_xxx.yaml    多言語対応用の辞書
               xxx.cgi       Bootstrapアプリケーションの
                             ローダー
            libディレクトリ
                  xxx.pm     プラグイン/アプリケーションの本体
            tmplディレクトリ
                  xxx.tmpl   管理画面のテンプレート
                                                  12
MyTouchのファイル構成
Movable Typeのディレクトリ
     pluginsディレクトリ
           MyTouch
             config.yaml     プラグインの各種定義を記述
             l10n_ja.yaml    日本語用の辞書
            mt-mytouch.cgi   Bootstrapアプリケーションの
                             ローダー
             libディレクトリ
                   xxx.pm    プラグイン/アプリケーションの本体
            tmplディレクトリ
                  xxx.tmpl   管理画面のテンプレート
                                                  13
config.yamlファイル

 プラグインの各種情報を記述
  プラグインの名前や作者等の情報
  管理画面に追加するメニューの情報
  mt.cgiに追加する処理の情報
  追加するテンプレートタグの情報
  追加するオブジェクトの情報
  etc.
 yaml形式で記述
                     14
config.yamlの例
name: My Touch
id: MyTouch
author_name: <__trans phrase="Hajime Fujimoto">
author_link: http://www.h-fj.com/blog/
description: <__trans phrase="Sample of location imformation service.">
plugin_link: http://www.h-fj.com/blog/mt5plgdoc/mytouch.php
doc_link: http://www.h-fj.com/blog/mt5plgdoc/mytouch.php
l10n_lexicon:
  ja: l10n_ja.yaml
version: 1.00
・・・




                                                                          15
独自オブジェクトの作成
(データベースの拡張)




              16
オブジェクトの概要
オブジェクト=プログラムの構成要素
Movable Typeはオブジェクト指向のプログラム
Movable Typeの個々の構成要素がオブジェクト
 ブログ(MT::Blog)
 ブログ記事(MT::Entry)
 アイテム(MT::Asset)
 カテゴリ(MT::Category)
 etc.
                          17
独自オブジェクトの追加
Movable Typeに標準ではないオブジェクトをプラ
グインで追加可能
独自オブジェクトとMovable Type標準のオブジェ
クトを連携した各種の処理が可能
独自オブジェクト追加に必要な作業
 オブジェクトを定義するパッケージ(Perlのコード)の作
 成
 config.yamlにオブジェクトの情報を追加
 SQLは不要
                            18
オブジェクトを定義するパッケージ
package MyTouch::Location;

use base qw( MT::Object );                          MT::Objectを継承したクラスを作る
__PACKAGE__->install_properties({
    column_defs => {
       'id' => 'integer not null auto_increment',
       'blog_id' => 'integer not null',             プロパティ(=テーブルの列)の定義
       'name' => 'string(255)',
       ・・・
    },
    indexes => {
       blog_id => 1,
       ・・・                                          インデックスの定義
    },
    child_of => 'MT::Blog',                         MT::Blogの子オブジェクトにする
    datasource => 'location',                       オブジェクトをmt_locationテーブルに保存
    primary_key => 'id',                            主キーはid列
    class_type => 'location',                       オブジェクトのクラスは「location」
    audit => 1,
                                                    オブジェクトの生成日時/生成者の
});
                                                    自動記録                   19
config.yamlに追加する内容
name: My Touch
id: MyTouch
・・・                             オブジェクトの追加や
schema_version: 1.00            更新の際に
object_types:                   schema_versionを上げる
  location: MyTouch::Location

      オブジェクトの定義は「MyTouch::Location」パッケージにある

「location」というクラスのオブジェクトを追加


                                                 20
独自の管理画面の追加




             21
管理画面の追加
mt.cgiに独自の管理画面を追加できる
 例:MyTouchの場所の管理(編集)
管理画面追加に必要な作業
 config.yamlにメニューの情報を追加
 config.yamlに管理画面のハンドラ(処理を行うプログ
 ラム)の情報を追加
 管理画面のハンドラの作成
 管理画面のテンプレートの作成

                              22
config.yamlにメニューの情報を追加
name: My Touch
id: MyTouch
・・・
applications:
  cms:
   menus:
    locations:
      label: Locations    「場所」のトップレベルメニューを追加
      order: 450
    locations:manage:
      label: Manage       「場所」→「一覧」のサブメニューを追加
      order: 100
      mode: list          「場所」→「一覧」のサブメニューが選ばれたときに、
      args:               「http://・・・/mt.cgi?__mode=list&_type=location」を
        _type: location   呼び出す
      view: blog
・・・                                                                  23
config.yamlにハンドラの情報を追加
name: My Touch
id: MyTouch
・・・
applications:
  cms:
   menus:
・・・
  methods:
    view_location: $MyTouch::MyTouch::CMS::edit
    save_location: $MyTouch::MyTouch::CMS::save




                                                  24
管理画面表示のハンドラの一般的な流れ
URLのクエリストリングやフォームのフィールドから情報を得る
→ 変数 = $app->query(‘名前’);
管理画面表示に必要なオブジェクトを読み込む
→ MT->model(クラス名)->load(条件);
テンプレートに渡す情報をハッシュに代入
  例:blog_idという情報に値「1」を代入
 → $params{blog_id} = 1;
build_pageメソッドでテンプレートを読み込み、ハッシュのリファレ
ンスを渡して、ビルドした結果を出力
→ $app->build_page(‘テンプレートのファイル名', ¥%params);


                                            25
ハンドラの例
sub edit {
  my $app = shift;                               アプリケーションのオブジェクトを得る
  my $blog_id = $app->param('blog_id');          URLからblog_idを得て
                                                 変数$blog_idに代入
    my %params;
    $params{blog_id} = $app->param('blog_id');   $params{blog_id}にblog_idの値を代入
    my $id = $app->param('id');                  URLからidを得て変数$idに代入
    if ($id) {
        my $class = MT->model('location');       指定されたIDのlocationオブジェクトを
        my $location = $class->load($id);        読み込む
        $params{id} = $location->id;             $params{id}に
                                                 オブジェクトのidプロパティを代入
      $params{name} = $location->name;           $params{name}に
      ・・・                                        オブジェクトのnameプロパティを代入
    }
    ・・・
    $app->build_page('edit_location.tmpl',       「edit_loctions.tmpl」テンプレートを
                     ¥%params);                  読み込んで出力
}                                                                         26
管理画面のテンプレートの基本的な書き方

ブログのテンプレートと同様の書き方(ただしプラ
グインのディレクトリにファイルとして保存)
テンプレートの先頭と最後にMTIncludeタグで
「include/header.tmpl」と「include/footer.tmpl」を
インクルード
ハンドラで設定したハッシュの値は、MTGetVarタ
グで出力
フォームの入力要素(input等)はMTApp:Setting
タグで囲む
                                           27
テンプレートの例
<mt:include name="include/header.tmpl">
・・・
<form method="post" action="<mt:var name="script_url">">
   <input type="hidden" name="__mode" value="save" />
   <input type="hidden" name="_type" value="location" />
   ・・・
   <input type="hidden" name="blog_id" value="<mt:var name="blog_id">" />
   <mtapp:setting
      id="name"
      label="<__trans phrase="Name">"
      hint="<__trans phrase="Name of this location.">"
      show_hint="1">
      <input name="name" id="name“
             value="<mt:var name="name" escape="html">“
             size="50" class="full-width" />
   </mtapp:setting>
   ・・・
   <mt:include name="include/actions_bar.tmpl" bar_position="bottom" hide_pager="1">
</form>
・・・
<mt:include name="include/footer.tmpl">                                                28
Listing Framework




                    29
Listing Frameworkとは?
 Movable Type 5.1の新機能
 オブジェクト一覧の管理画面を出力するフレーム
 ワーク
 管理画面のハンドラ/テンプレートを作る必要が
 ない(Movable Typeのコアが処理してくれる)
 主な設定はconfig.yamlの「listing_screen」と
 「list_properties」に記述
 特殊な出力が必要な部分だけPerlで記述
                                  30
config.yamlに「listing_screens」を追加
name: My Touch
id: MyTouch
・・・
listing_screens:
  location:                  locationクラスの一覧画面を追加
    primary: name            主フィールドは「name」
    object_label: Location   オブジェクトのラベルは「Location」
    default_sort_key: name   デフォルトの並べ替えキーは
                             nameフィールド
  view: blog                  ブログの管理画面だけに表示
  scope_mode: this            個々のブログに属する
・・・                           オブジェクトのみ表示

                                                 31
config.yamlに「list_properties」を追加

 オブジェクトの各プロパティの出力方法を定義
  ラベル
  順序
  必須/オプション
  etc.
 特殊な出力方法が必要な場合は、Perlで出力方
 法を記述


                                   32
list_propertiesの部分の例
name: My Touch
id: MyTouch
・・・
listing_screens:
・・・
list_properties:
  location:           locationクラスのオブジェクトの出力方法を定義
    name:             一覧に「name」というフィールドを出力する
     auto: 1          出力値の元になるプロパティを自動選択
     label: Name      フィールドのラベルは「Name」
     display: force   このフィールドは強制的に出力
     order: 100       フィールドの並び順の指定(数が小さい順)
・・・
                                              33
Bootstrapアプリケーションの作成




                       34
BootStrapアプリケーション作成に必要な作業

 以下のファイル等を作成
  ローダー(xxx.cgi)
  各処理のハンドラ
  各処理の管理画面用のテンプレート
 ハンドラをconfig.yamlに定義
 ハンドラ/テンプレートの作成の流れは、プラグイ
 ンで管理画面を追加する場合とほぼ同じ

                            35
MyTouchで定義する処理
 「http://・・・/mt/plugins/mt-
 mytouch.cgi?__mode=○○○・・・」の「○○○」で処理
 を振り分け
モード        内容
main            メインページ(最近タッチした場所の
                一覧等を表示)
search_location 現在地/地図の中心の付近にある
                場所を一覧表示
touch_location 選ばれた場所にタッチ
save_touch      タッチの情報を保存
                                       36
config.yamlにハンドラを定義
name: My Touch
id: MyTouch
・・・
applications:
  cms:
・・・
 mytouch:
   handler: MT::App::MyTouch
   methods:
    main: $MyTouch::MT::App::MyTouch::main
    search_location: $MyTouch::MT::App::MyTouch::search_location
    touch_location: $MyTouch::MT::App::MyTouch::touch_location
    save_touch: $MyTouch::MT::App::MyTouch::save_touch



                                                                   37
ローダー(xxx.cgi)の例
#!/usr/bin/perl -w

use strict;
use lib $ENV{MT_HOME}
    ? "$ENV{MT_HOME}/lib“
    : 'lib';                 ライブラリのパスを指定
use lib '../../lib';
use MT::Bootstrap App        MT::App::MyTouchで各種の処理を行う
    => 'MT::App::MyTouch';




                                                   38
ハンドラ/テンプレートの事例
タッチのページ
「http://・・・/mt/plugins/mt-
mytouch.cgi?__mode=touch_location&id=場所
のID・・・」にアクセスしたときに表示されるページ




                                      39
ハンドラの中身
sub touch_location {
  my $app = shift;
  my %param;
  my $blog_id = $app->param('blog_id');     URLからブログのID(blog_id)を得る
  my $author = $app->user;                  ログイン中のユーザーを得る
  ・・・
  my $location_id = $app->param('id');      URLから場所のオブジェクトのID(id)を得る
  my $location = MT->model('location')      場所のオブジェクトを読み込む
                 ->load($location_id);
  ・・・
  $param{blog_id} = $blog_id;
  $param{id}     = $location->id;           テンプレートに渡す情報をハッシュに代入
  $param{name} = $location->name;
  ・・・
  $app->build_page('touch_location.tmpl',   touch_location.tmplテンプレートに沿って
                     ¥%param);              ページを表示
}

                                                                      40
テンプレートの中身
<!DOCTYPE html>
<html lang="ja">
<head>
 <meta charset="UTF-8" />
 <title><__trans phrase="Touch [_1]" params="<mt:var name="name">"></title>
</head>
<body>
<h1><__trans phrase="Touch [_1]" params="<mt:var name="name">"></h1>
<form name="touch" action="<mt:var name="app_uri">" method="post">
 <input type="hidden" name="__mode" value="save_touch" />
 <input type="hidden" name="magic_token" value="<mt:var name="magic_token">" />
 <input type="hidden" name="blog_id" value="<mt:var name="blog_id">" />
 <input type="hidden" name="id" value="<mt:var name="id">" />
 <p><__trans phrase="Leave comment."><br />
   <textarea name="comment" rows="5" cols="80"></textarea>
 </p>
 <p>
   <input type="submit" name="submit" value="<__trans phrase="Touch">" />
 </p>
</form>
</body>
</html>                                                                           41
まとめ




      42
まとめ
プラグインで以下のようなことが可能
 独自オブジェクトの追加
 独自の管理画面の追加
MTのフレームワークを利用した独自アプリケー
ションも開発可能

 MTでいろいろなアプリケーションを
     作ってみてください!
                         43
One More Thing




                 44
Movable Type 5 Webサイト制作ガイド
Volume 1

            MT5の基本操作からテンプ
            レート作成までを解説
            定価2,500円
            MTDDC参加者特典2,300円




                               45
Movable Type 5 Webサイト制作ガイド
Volume 2
            ウェブサイト/テーマ/カスタ
            ムフィールド/変数など、
            Movable Type 4および5の新
            機能を中心に解説
            定価3,000円
            MTDDC参加者特典2,700円
            Volume 1&2セットで5,000円

                               46
Movable Type Developer’s Guide Volume 1

                    Movable Typeをベースに
                    した開発の基本
                    オブジェクトの操作からテン
                    プレートタグ追加のプラグイ
                    ンの開発まで
                    定価3,800円
                    MTDDC参加者特典3,500
                    円
                                          47
ご清聴ありがとうございました




                 48

More Related Content

Viewers also liked

EPUBプラグインで、Movable Typeで電子書籍
EPUBプラグインで、Movable Typeで電子書籍EPUBプラグインで、Movable Typeで電子書籍
EPUBプラグインで、Movable Typeで電子書籍Hajime Fujimoto
 
アジャイルメトリクス実践ガイド
アジャイルメトリクス実践ガイドアジャイルメトリクス実践ガイド
アジャイルメトリクス実践ガイドHiroyuki Ito
 
なんたって”DevQA” アジャイル開発とQAの合体が改善を生む - 永田 敦 氏 #postudy
なんたって”DevQA” アジャイル開発とQAの合体が改善を生む - 永田 敦 氏 #postudyなんたって”DevQA” アジャイル開発とQAの合体が改善を生む - 永田 敦 氏 #postudy
なんたって”DevQA” アジャイル開発とQAの合体が改善を生む - 永田 敦 氏 #postudyPOStudy
 
[RSGT2017] つらい問題に出会ったら
[RSGT2017] つらい問題に出会ったら[RSGT2017] つらい問題に出会ったら
[RSGT2017] つらい問題に出会ったらTakahiro Kaihara
 
導入に困っているあなたに贈る スクラム導入コミュニケーション術
導入に困っているあなたに贈る スクラム導入コミュニケーション術導入に困っているあなたに贈る スクラム導入コミュニケーション術
導入に困っているあなたに贈る スクラム導入コミュニケーション術Kouki Kawagoi
 
エンジニアだけどもっとユーザーに価値を届けたいからスクラムマスター始めました
エンジニアだけどもっとユーザーに価値を届けたいからスクラムマスター始めましたエンジニアだけどもっとユーザーに価値を届けたいからスクラムマスター始めました
エンジニアだけどもっとユーザーに価値を届けたいからスクラムマスター始めましたYusuke Amano
 
共感する開発のことだけ考えた。
共感する開発のことだけ考えた。共感する開発のことだけ考えた。
共感する開発のことだけ考えた。shoji_yamada
 
「実録!となりのJenkins2.0」 - 第7回大阪 / 第9回(東京)Jenkins勉強会 #jenkinsstudy
「実録!となりのJenkins2.0」 - 第7回大阪 / 第9回(東京)Jenkins勉強会 #jenkinsstudy「実録!となりのJenkins2.0」 - 第7回大阪 / 第9回(東京)Jenkins勉強会 #jenkinsstudy
「実録!となりのJenkins2.0」 - 第7回大阪 / 第9回(東京)Jenkins勉強会 #jenkinsstudyKazuhito Miura
 
世界と事例から学ぶ、プロダクトオーナーの「素養」としてのアジャイルメトリクス
世界と事例から学ぶ、プロダクトオーナーの「素養」としてのアジャイルメトリクス世界と事例から学ぶ、プロダクトオーナーの「素養」としてのアジャイルメトリクス
世界と事例から学ぶ、プロダクトオーナーの「素養」としてのアジャイルメトリクスHiroyuki Ito
 
アジャイルコーチが現場で学んだプロダクトオーナーの実際と勘所 POの二番目に大事なことと
アジャイルコーチが現場で学んだプロダクトオーナーの実際と勘所 POの二番目に大事なこととアジャイルコーチが現場で学んだプロダクトオーナーの実際と勘所 POの二番目に大事なことと
アジャイルコーチが現場で学んだプロダクトオーナーの実際と勘所 POの二番目に大事なこととYasui Tsutomu
 

Viewers also liked (10)

EPUBプラグインで、Movable Typeで電子書籍
EPUBプラグインで、Movable Typeで電子書籍EPUBプラグインで、Movable Typeで電子書籍
EPUBプラグインで、Movable Typeで電子書籍
 
アジャイルメトリクス実践ガイド
アジャイルメトリクス実践ガイドアジャイルメトリクス実践ガイド
アジャイルメトリクス実践ガイド
 
なんたって”DevQA” アジャイル開発とQAの合体が改善を生む - 永田 敦 氏 #postudy
なんたって”DevQA” アジャイル開発とQAの合体が改善を生む - 永田 敦 氏 #postudyなんたって”DevQA” アジャイル開発とQAの合体が改善を生む - 永田 敦 氏 #postudy
なんたって”DevQA” アジャイル開発とQAの合体が改善を生む - 永田 敦 氏 #postudy
 
[RSGT2017] つらい問題に出会ったら
[RSGT2017] つらい問題に出会ったら[RSGT2017] つらい問題に出会ったら
[RSGT2017] つらい問題に出会ったら
 
導入に困っているあなたに贈る スクラム導入コミュニケーション術
導入に困っているあなたに贈る スクラム導入コミュニケーション術導入に困っているあなたに贈る スクラム導入コミュニケーション術
導入に困っているあなたに贈る スクラム導入コミュニケーション術
 
エンジニアだけどもっとユーザーに価値を届けたいからスクラムマスター始めました
エンジニアだけどもっとユーザーに価値を届けたいからスクラムマスター始めましたエンジニアだけどもっとユーザーに価値を届けたいからスクラムマスター始めました
エンジニアだけどもっとユーザーに価値を届けたいからスクラムマスター始めました
 
共感する開発のことだけ考えた。
共感する開発のことだけ考えた。共感する開発のことだけ考えた。
共感する開発のことだけ考えた。
 
「実録!となりのJenkins2.0」 - 第7回大阪 / 第9回(東京)Jenkins勉強会 #jenkinsstudy
「実録!となりのJenkins2.0」 - 第7回大阪 / 第9回(東京)Jenkins勉強会 #jenkinsstudy「実録!となりのJenkins2.0」 - 第7回大阪 / 第9回(東京)Jenkins勉強会 #jenkinsstudy
「実録!となりのJenkins2.0」 - 第7回大阪 / 第9回(東京)Jenkins勉強会 #jenkinsstudy
 
世界と事例から学ぶ、プロダクトオーナーの「素養」としてのアジャイルメトリクス
世界と事例から学ぶ、プロダクトオーナーの「素養」としてのアジャイルメトリクス世界と事例から学ぶ、プロダクトオーナーの「素養」としてのアジャイルメトリクス
世界と事例から学ぶ、プロダクトオーナーの「素養」としてのアジャイルメトリクス
 
アジャイルコーチが現場で学んだプロダクトオーナーの実際と勘所 POの二番目に大事なことと
アジャイルコーチが現場で学んだプロダクトオーナーの実際と勘所 POの二番目に大事なこととアジャイルコーチが現場で学んだプロダクトオーナーの実際と勘所 POの二番目に大事なことと
アジャイルコーチが現場で学んだプロダクトオーナーの実際と勘所 POの二番目に大事なことと
 

Similar to Movable TypeのWebアプリケーションフレームワークの基本

Firefox DevTools
Firefox DevToolsFirefox DevTools
Firefox DevToolsdynamis
 
SpringMVCとmixer2で作るWebアプリのキホン 2013-01-24 Spring勉強会 #jsug
SpringMVCとmixer2で作るWebアプリのキホン 2013-01-24 Spring勉強会 #jsugSpringMVCとmixer2で作るWebアプリのキホン 2013-01-24 Spring勉強会 #jsug
SpringMVCとmixer2で作るWebアプリのキホン 2013-01-24 Spring勉強会 #jsugY Watanabe
 
僕がやったXaml戦略
僕がやったXaml戦略僕がやったXaml戦略
僕がやったXaml戦略Hiroyuki Mori
 
Djangoによるスマホアプリバックエンドの実装
Djangoによるスマホアプリバックエンドの実装Djangoによるスマホアプリバックエンドの実装
Djangoによるスマホアプリバックエンドの実装Nakazawa Yuichi
 
EC-CUBEプラグイン講義
EC-CUBEプラグイン講義EC-CUBEプラグイン講義
EC-CUBEプラグイン講義ria1201
 
QML を用いた YouTube クライアントの作成 - 関東 Qt 勉強会
QML を用いた YouTube クライアントの作成 - 関東 Qt 勉強会QML を用いた YouTube クライアントの作成 - 関東 Qt 勉強会
QML を用いた YouTube クライアントの作成 - 関東 Qt 勉強会Jumpei Ogawa
 
I Log On Saa S
I Log On Saa SI Log On Saa S
I Log On Saa Stotty jp
 
2005 07 30_xwj_customizinig
2005 07 30_xwj_customizinig2005 07 30_xwj_customizinig
2005 07 30_xwj_customizinigTom Hayakawa
 
PHP 2大 web フレームワークの徹底比較!
PHP 2大 web フレームワークの徹底比較!PHP 2大 web フレームワークの徹底比較!
PHP 2大 web フレームワークの徹底比較!Shohei Okada
 
第142回Smalltalk勉強会 - PharoJSで作るWebアプリケーション
第142回Smalltalk勉強会 - PharoJSで作るWebアプリケーション第142回Smalltalk勉強会 - PharoJSで作るWebアプリケーション
第142回Smalltalk勉強会 - PharoJSで作るWebアプリケーションMasashi Umezawa
 
Mixer2 で作るカスタムテンプレートエンジン #渋谷java
Mixer2 で作るカスタムテンプレートエンジン #渋谷javaMixer2 で作るカスタムテンプレートエンジン #渋谷java
Mixer2 で作るカスタムテンプレートエンジン #渋谷javaJun Futagawa
 
DjangoでさくっとWeb アプリケーション開発をする話
DjangoでさくっとWeb アプリケーション開発をする話DjangoでさくっとWeb アプリケーション開発をする話
DjangoでさくっとWeb アプリケーション開発をする話Nakazawa Yuichi
 
Apexコアデベロッパーセミナー070726 配布用
Apexコアデベロッパーセミナー070726 配布用Apexコアデベロッパーセミナー070726 配布用
Apexコアデベロッパーセミナー070726 配布用stomita
 
Html5 Web Applications
Html5  Web ApplicationsHtml5  Web Applications
Html5 Web Applicationstotty jp
 
Xamarin.formsで作成する翻訳機能付きtwitterクライアント
Xamarin.formsで作成する翻訳機能付きtwitterクライアント Xamarin.formsで作成する翻訳機能付きtwitterクライアント
Xamarin.formsで作成する翻訳機能付きtwitterクライアント Shinichi Hirauchi
 
20091030cakephphandson 01
20091030cakephphandson 0120091030cakephphandson 01
20091030cakephphandson 01Yusuke Ando
 
Windows ストア lob アプリ開発のためのガイダンスとフレームワークのご紹介 rev
Windows ストア lob アプリ開発のためのガイダンスとフレームワークのご紹介 revWindows ストア lob アプリ開発のためのガイダンスとフレームワークのご紹介 rev
Windows ストア lob アプリ開発のためのガイダンスとフレームワークのご紹介 revShotaro Suzuki
 

Similar to Movable TypeのWebアプリケーションフレームワークの基本 (20)

Firefox DevTools
Firefox DevToolsFirefox DevTools
Firefox DevTools
 
Apache Tapestry
Apache TapestryApache Tapestry
Apache Tapestry
 
SpringMVCとmixer2で作るWebアプリのキホン 2013-01-24 Spring勉強会 #jsug
SpringMVCとmixer2で作るWebアプリのキホン 2013-01-24 Spring勉強会 #jsugSpringMVCとmixer2で作るWebアプリのキホン 2013-01-24 Spring勉強会 #jsug
SpringMVCとmixer2で作るWebアプリのキホン 2013-01-24 Spring勉強会 #jsug
 
僕がやったXaml戦略
僕がやったXaml戦略僕がやったXaml戦略
僕がやったXaml戦略
 
Djangoによるスマホアプリバックエンドの実装
Djangoによるスマホアプリバックエンドの実装Djangoによるスマホアプリバックエンドの実装
Djangoによるスマホアプリバックエンドの実装
 
EC-CUBEプラグイン講義
EC-CUBEプラグイン講義EC-CUBEプラグイン講義
EC-CUBEプラグイン講義
 
Inside Movable Type
Inside Movable TypeInside Movable Type
Inside Movable Type
 
QML を用いた YouTube クライアントの作成 - 関東 Qt 勉強会
QML を用いた YouTube クライアントの作成 - 関東 Qt 勉強会QML を用いた YouTube クライアントの作成 - 関東 Qt 勉強会
QML を用いた YouTube クライアントの作成 - 関東 Qt 勉強会
 
20120118 titanium
20120118 titanium20120118 titanium
20120118 titanium
 
I Log On Saa S
I Log On Saa SI Log On Saa S
I Log On Saa S
 
2005 07 30_xwj_customizinig
2005 07 30_xwj_customizinig2005 07 30_xwj_customizinig
2005 07 30_xwj_customizinig
 
PHP 2大 web フレームワークの徹底比較!
PHP 2大 web フレームワークの徹底比較!PHP 2大 web フレームワークの徹底比較!
PHP 2大 web フレームワークの徹底比較!
 
第142回Smalltalk勉強会 - PharoJSで作るWebアプリケーション
第142回Smalltalk勉強会 - PharoJSで作るWebアプリケーション第142回Smalltalk勉強会 - PharoJSで作るWebアプリケーション
第142回Smalltalk勉強会 - PharoJSで作るWebアプリケーション
 
Mixer2 で作るカスタムテンプレートエンジン #渋谷java
Mixer2 で作るカスタムテンプレートエンジン #渋谷javaMixer2 で作るカスタムテンプレートエンジン #渋谷java
Mixer2 で作るカスタムテンプレートエンジン #渋谷java
 
DjangoでさくっとWeb アプリケーション開発をする話
DjangoでさくっとWeb アプリケーション開発をする話DjangoでさくっとWeb アプリケーション開発をする話
DjangoでさくっとWeb アプリケーション開発をする話
 
Apexコアデベロッパーセミナー070726 配布用
Apexコアデベロッパーセミナー070726 配布用Apexコアデベロッパーセミナー070726 配布用
Apexコアデベロッパーセミナー070726 配布用
 
Html5 Web Applications
Html5  Web ApplicationsHtml5  Web Applications
Html5 Web Applications
 
Xamarin.formsで作成する翻訳機能付きtwitterクライアント
Xamarin.formsで作成する翻訳機能付きtwitterクライアント Xamarin.formsで作成する翻訳機能付きtwitterクライアント
Xamarin.formsで作成する翻訳機能付きtwitterクライアント
 
20091030cakephphandson 01
20091030cakephphandson 0120091030cakephphandson 01
20091030cakephphandson 01
 
Windows ストア lob アプリ開発のためのガイダンスとフレームワークのご紹介 rev
Windows ストア lob アプリ開発のためのガイダンスとフレームワークのご紹介 revWindows ストア lob アプリ開発のためのガイダンスとフレームワークのご紹介 rev
Windows ストア lob アプリ開発のためのガイダンスとフレームワークのご紹介 rev
 

More from Hajime Fujimoto

Movable Typeでロボットを動かす?AIスピーカーをしゃべらせる?Data APIでMovable TypeとIoTをFUSION
Movable Typeでロボットを動かす?AIスピーカーをしゃべらせる?Data APIでMovable TypeとIoTをFUSIONMovable Typeでロボットを動かす?AIスピーカーをしゃべらせる?Data APIでMovable TypeとIoTをFUSION
Movable Typeでロボットを動かす?AIスピーカーをしゃべらせる?Data APIでMovable TypeとIoTをFUSIONHajime Fujimoto
 
コンテンツタイプの活用と拡張
コンテンツタイプの活用と拡張コンテンツタイプの活用と拡張
コンテンツタイプの活用と拡張Hajime Fujimoto
 
Objecttreeプラグイン&ObjectRelationプラグインのご紹介
Objecttreeプラグイン&ObjectRelationプラグインのご紹介Objecttreeプラグイン&ObjectRelationプラグインのご紹介
Objecttreeプラグイン&ObjectRelationプラグインのご紹介Hajime Fujimoto
 
PHPやVBAでMovable Typeを操作しようData API Library for PHP/VBAのご紹介
PHPやVBAでMovable Typeを操作しようData API Library for PHP/VBAのご紹介PHPやVBAでMovable Typeを操作しようData API Library for PHP/VBAのご紹介
PHPやVBAでMovable Typeを操作しようData API Library for PHP/VBAのご紹介Hajime Fujimoto
 
Movable Typeの権限と承認フロー
Movable Typeの権限と承認フローMovable Typeの権限と承認フロー
Movable Typeの権限と承認フローHajime Fujimoto
 
2つの「Layout」プラグインでMovable Typeをパワーアップ
2つの「Layout」プラグインでMovable Typeをパワーアップ2つの「Layout」プラグインでMovable Typeをパワーアップ
2つの「Layout」プラグインでMovable TypeをパワーアップHajime Fujimoto
 
はじめよう!MovableType.net ハンズオン
はじめよう!MovableType.net ハンズオンはじめよう!MovableType.net ハンズオン
はじめよう!MovableType.net ハンズオンHajime Fujimoto
 
JavaScriptテンプレートエンジンで活かすData API
JavaScriptテンプレートエンジンで活かすData APIJavaScriptテンプレートエンジンで活かすData API
JavaScriptテンプレートエンジンで活かすData APIHajime Fujimoto
 
JavaScriptテンプレートエンジンで活かすData API
JavaScriptテンプレートエンジンで活かすData APIJavaScriptテンプレートエンジンで活かすData API
JavaScriptテンプレートエンジンで活かすData APIHajime Fujimoto
 
Data APIの背景と活用方法 MTCafe Nagoya Ver.
Data APIの背景と活用方法 MTCafe Nagoya Ver.Data APIの背景と活用方法 MTCafe Nagoya Ver.
Data APIの背景と活用方法 MTCafe Nagoya Ver.Hajime Fujimoto
 
Movable Type 6.0をできるだけ安く使う方法
Movable Type 6.0をできるだけ安く使う方法Movable Type 6.0をできるだけ安く使う方法
Movable Type 6.0をできるだけ安く使う方法Hajime Fujimoto
 
Movable Type 6の新機能 Data APIの活用法
Movable Type 6の新機能 Data APIの活用法Movable Type 6の新機能 Data APIの活用法
Movable Type 6の新機能 Data APIの活用法Hajime Fujimoto
 
WordPress on Movable Type
WordPress on Movable TypeWordPress on Movable Type
WordPress on Movable TypeHajime Fujimoto
 
Data APIの背景と活用方法
Data APIの背景と活用方法Data APIの背景と活用方法
Data APIの背景と活用方法Hajime Fujimoto
 
WordPress on Movable Type
WordPress on Movable TypeWordPress on Movable Type
WordPress on Movable TypeHajime Fujimoto
 
WordPress on Movable Type
WordPress on Movable TypeWordPress on Movable Type
WordPress on Movable TypeHajime Fujimoto
 

More from Hajime Fujimoto (20)

Movable Typeでロボットを動かす?AIスピーカーをしゃべらせる?Data APIでMovable TypeとIoTをFUSION
Movable Typeでロボットを動かす?AIスピーカーをしゃべらせる?Data APIでMovable TypeとIoTをFUSIONMovable Typeでロボットを動かす?AIスピーカーをしゃべらせる?Data APIでMovable TypeとIoTをFUSION
Movable Typeでロボットを動かす?AIスピーカーをしゃべらせる?Data APIでMovable TypeとIoTをFUSION
 
コンテンツタイプの活用と拡張
コンテンツタイプの活用と拡張コンテンツタイプの活用と拡張
コンテンツタイプの活用と拡張
 
PowerCMSとIoTの連携
PowerCMSとIoTの連携PowerCMSとIoTの連携
PowerCMSとIoTの連携
 
Connect with Data API
Connect with Data APIConnect with Data API
Connect with Data API
 
Objecttreeプラグイン&ObjectRelationプラグインのご紹介
Objecttreeプラグイン&ObjectRelationプラグインのご紹介Objecttreeプラグイン&ObjectRelationプラグインのご紹介
Objecttreeプラグイン&ObjectRelationプラグインのご紹介
 
PHPやVBAでMovable Typeを操作しようData API Library for PHP/VBAのご紹介
PHPやVBAでMovable Typeを操作しようData API Library for PHP/VBAのご紹介PHPやVBAでMovable Typeを操作しようData API Library for PHP/VBAのご紹介
PHPやVBAでMovable Typeを操作しようData API Library for PHP/VBAのご紹介
 
Movable Typeの権限と承認フロー
Movable Typeの権限と承認フローMovable Typeの権限と承認フロー
Movable Typeの権限と承認フロー
 
2つの「Layout」プラグインでMovable Typeをパワーアップ
2つの「Layout」プラグインでMovable Typeをパワーアップ2つの「Layout」プラグインでMovable Typeをパワーアップ
2つの「Layout」プラグインでMovable Typeをパワーアップ
 
はじめよう!MovableType.net ハンズオン
はじめよう!MovableType.net ハンズオンはじめよう!MovableType.net ハンズオン
はじめよう!MovableType.net ハンズオン
 
JavaScriptテンプレートエンジンで活かすData API
JavaScriptテンプレートエンジンで活かすData APIJavaScriptテンプレートエンジンで活かすData API
JavaScriptテンプレートエンジンで活かすData API
 
JavaScriptテンプレートエンジンで活かすData API
JavaScriptテンプレートエンジンで活かすData APIJavaScriptテンプレートエンジンで活かすData API
JavaScriptテンプレートエンジンで活かすData API
 
Data APIの背景と活用方法 MTCafe Nagoya Ver.
Data APIの背景と活用方法 MTCafe Nagoya Ver.Data APIの背景と活用方法 MTCafe Nagoya Ver.
Data APIの背景と活用方法 MTCafe Nagoya Ver.
 
Movable Type 6.0をできるだけ安く使う方法
Movable Type 6.0をできるだけ安く使う方法Movable Type 6.0をできるだけ安く使う方法
Movable Type 6.0をできるだけ安く使う方法
 
Movable Type 6の新機能 Data APIの活用法
Movable Type 6の新機能 Data APIの活用法Movable Type 6の新機能 Data APIの活用法
Movable Type 6の新機能 Data APIの活用法
 
Data APIの基本
Data APIの基本Data APIの基本
Data APIの基本
 
WordPress on Movable Type
WordPress on Movable TypeWordPress on Movable Type
WordPress on Movable Type
 
Data APIの背景と活用方法
Data APIの背景と活用方法Data APIの背景と活用方法
Data APIの背景と活用方法
 
WordPress on Movable Type
WordPress on Movable TypeWordPress on Movable Type
WordPress on Movable Type
 
Vagrantのすすめ
VagrantのすすめVagrantのすすめ
Vagrantのすすめ
 
WordPress on Movable Type
WordPress on Movable TypeWordPress on Movable Type
WordPress on Movable Type
 

Recently uploaded

新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptxsn679259
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Gamesatsushi061452
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...Toru Tamaki
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイスCRI Japan, Inc.
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルCRI Japan, Inc.
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsWSO2
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video UnderstandingToru Tamaki
 

Recently uploaded (10)

新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 

Movable TypeのWebアプリケーションフレームワークの基本