SlideShare a Scribd company logo
1 of 62
MT meets PHP
PHP Extension for Movable Type
Junnama Noda @ Alfasado, Inc.
About  Me  (野⽥田  純⽣生)
•アルファサード株式会社  代表取締役
•CMS/受託開発を通じてクライアントを爆速化
•Movable  Type  エバンジェリスト
•http://junnama.alfasado.net/online/
•http://twitter.com/junnama
• https://www.facebook.com/junnama.noda
http://alfasado.net/
http://powercms.jp/
どのくらいMTが好きか
http://www.amazon.co.jp/dp/4774147109
http://www.amazon.co.jp/dp/4839927537
https://github.com/alfasado
http://2012.osaka.wordcamp.org/
http://2012.osaka.wordcamp.org/
http://2012.osaka.wordcamp.org/speakers/sumio-noda/
エイプリルフールのネタではない!
http://powercms.alfasado.net/blog/2011/04/wordpressmovable_type.html
Movable  Typeについて
http://movabletype.org
https://github.com/movabletype
http://movabletype.fogbugz.com
http://communities.movabletype.jp
Movable  Type
•2001年年リリース(現在12年年⽬目)
• ブログエンジン→Web  CMSへ
• 現在バージョン5.2
• GPL版と商⽤用版のデュアルライセンス
• 2011年年から⽇日本の法⼈人へ売却、⽇日本製
• ⽇日本で最も使われている商⽤用CMS
Movable  Type
• マルチサイトの管理理機能
• 強⼒力力なテンプレートエンジン(MTML)
• プラグインによる拡張
• テーマの作成
• パートナー企業によるサードパーティ製品
• 開発⾔言語はPerl
開発⾔言語はPerl
Perl
Perl
MT  meets  PHP
MT  meets  PHP
•Ver.3.1でダイナミックパブリッシングサポート
• class  MT
• class  MTDatabase
• class  BaseObject  extends  ADOdb_̲Active_̲Record
• class  MTViewer  extends  Smarty
• PHPでプラグインによる拡張が可能
Example  1
<?php
$blog_id = 2;
include('/path/to/mt/php/mt.php');
$mt = MT::get_instance($blog_id,
'/path/to/mt/mt-config.cgi');
$blog = $mt->db()->fetch_blog($blog_id);
echo $blog->name . "n";
?>
Example  2
<?php
require_once( 'class.mt_entry.php' );
$_entry = new Entry;
$where = "entry_status=2 and
entry_blog_id=2";
$where .= " order by entry_authored_on
DESC ";
$extra['limit'] = 10;
$entries = $_entry->Find( $where, FALSE,
FALSE, $extra );
foreach ( $entries as $entry ) {
echo $entry->title . "n";
}
?>
Example  3
<?php //class.mt_log.php
require_once( "class.baseobject.php" );
class Log extends BaseObject {
public $_table = 'mt_log';
protected $_prefix = "log_";
}
?>
<?php
require_once( 'class.mt_log.php' );
$_log = new Log;
$_log->message = “This is test.”;
$ts = gmdate( "YmdHis" );
$_log->created_on = $ts;
$_log->modified_on = $ts;
$_log->Save();
?>
MTML
Movable  Type  Markup  Language
MTML=Movable  Type  
Markup  Language
•MTML=Viewを担当するもの
•MTIf  MTElse  MTLoopなど、実はロジックも書け
る
•テンプレートにプログラムは書けない(完全に分
離離している)=>デザイナに敷居が低い
•<MTFoo>  でも  <mt:foo>  でも  <mtfoo  />  で
も  <$MTFoo$>  でも良良い(緩い)
<ul>
<?php
$myposts =
get_posts('posts_per_page=10');
foreach($myposts as $post) :
setup_postdata($post);
?>
<li><a href="<?php the_permalink(); ?>">
<?php the_title(); ?></a></li>
<?php endforeach; ?>
</ul>
Template  for  WordPress
<ul>
<MT:Entries limit="10">
<li><a href="<MT:EntryPermalink>">
<MT:EntryTitle></a></li>
</MT:Entries>
</ul>
Template  for  Movable  Type
MTMLの拡張
• ダイナミックパブリッシングのタグはPHPで書く
• mt_̲dir/plugins/PluginName/php/以下に設置
• block.mtfoo.php,  function.mtloop.php(命名規則)
• Smartyのプラグインとして書く
• MTがSmartyプラグインをMTMLに内部変換して実⾏行行
モディファイア
<?php
// modifier.addstring.php
function smarty_modifier_addstring
( $text, $arg ) {
return "{$text}{$arg}";
}
//<mt:foo addstring= “ただしイケメンに限る。”>
?>
ファンクションタグ
<?php
//function.mtrand.php
function smarty_function_mtrand( $args, &$ctx ) {
$min = $args['min'];
$max = $args['max'];
return rand( $min, $max );
}
//<mt:rand min=”1” max=”10”>
?>
条件タグ
<?php
//block.mtifrand.php
function smarty_block_mtifrand
($args, $content, &$ctx, &$repeat) {
$rand = (rand(0, 1)) ? TRUE : FALSE;
return $ctx->_hdlr_if
($args, $content, $ctx, $repeat, $rand);
}
//<mt:ifRand><mt:else></mt:if>
?>
ブロックタグ(1)
<?php
//block.mtsampleblock.php
function smarty_block_mtsampleblock
( $args, $content, &$ctx, &$repeat ) {
! $from = $args['from'];
! $to = $args['to'];
! $glue = $args['glue'];
! if (! isset( $content ) ) {
! ! $vars =& $ctx->__stash['vars'];
! ! $ctx->stash( '__counter__', $from );
! ! $ctx->__stash['vars']['__counter__'] = $from;
! } else {
ブロックタグ(2)
! } else {
! ! $out = $ctx->stash('__out');
! ! $counter = $ctx->__stash['vars']
['__counter__'] + 1;
! ! if ( $glue && $content && $out ) {
! ! ! $content = $glue . $content;
! ! } else {
! ! ! $ctx->stash('__out', TRUE);
! ! }
! ! if ( $counter <= $to ) {
! ! ! $ctx->__stash['vars']['__counter__']
= $counter;
! ! ! $repeat = TRUE;
! ! } else {
! ! ! $repeat = FALSE;
! ! }
! ! return $content;
! }
ブロックタグ(3)
<mt:SampleBlock from="1" to="10" glue=",">
</mt:SampleBlock>
! 1,2,3,4,5,6,7,8,9,10
DynamicMTML
PHP  Extension  for  MT
DynamicMTML
• MTのダイナミックパブリッシングの拡張
• 静的ファイル内のMTMLをPHPによって実⾏行行
• SmartyのテンプレートがMTタグで書ける!
• ORマッパ、Worker、静的パブリッシュ,etc
• Class  MTPlugin(config.phpにまとめて書ける)
DynamicMTML
-‐‑‒  Demo  -‐‑‒
drwxrwxrwx 32 alfasado admin 1088 3 10 15:17 .
drwxr-xr-x 11 alfasado admin 374 3 8 13:40 ..
-rw-rw-rw- 1 alfasado admin 935 2 27 16:08 .htaccess
-rw-rw-rw- 1 alfasado admin 1223 2 27 16:08 .mtview.php
-rw-rw-rw- 1 alfasado admin 24609 3 2 14:41 index.html
Example  1
<MTIfFacebookLoggedIn>
<$MTFacebookGetProfile
target="gender" setvar="__gender__"$>
<MTIf name="__gender__" eq="male">
                        男性向けページ
<MTElseIf name="__gender__" eq="famale">
⼥女女性向けページ
</MTif>
</MTIfFacebookLoggedIn>
Example  2
<MTSalesforceGetSObjects
object=”Case” limit=”10”>
<h2><$MTSalesforceObjectTitle$></h2>
<p><$MTSalesforceObjectBody$></p>
</MTSalesforceGetSObjects>
Example  3
<MT:IfUserAgent wants="smartphone">
        スマホでしょ?
<MTElse>
        スマホじゃないでしょ?
</MT:IfUserAgent>
<MT:IfUserAgent wants="tablet">
        タブレットでしょ?
<MTElse>
        タブレットじゃないでしょ?
</MT:IfUserAgent>
Example  4
<MT:IfUserAgent wants="keitai">
<MT:IfUserAgent like="DoCoMo">
DoCoMo?
<MTElse>
<MT:IfUserAgent like="UP.Browser">
AU?
<MTElse>
SoftBank?
</MT:IfUserAgent>
Example  5
<MT:IfLogin>
<MTAuthorDisplayName escape="html">
            さん、ようこそ
<MTElse>
        ここから先はユーザー登録してください。
</MT:IfLogin>
Example  6
<MT:IfIE lt=”7”>
Internet Exproler ver.7以上?
<MTElse>
Internet Exproler ver.6以下?
</MT:IfIE>
Example  7
$terms = array(‘status’ => 2,
‘blog_id’ => 2,
‘class’=>‘entry’);
$args = array(‘sort’ => ‘authored_on’,
‘direcrtion’ => ‘descend’,
‘limit’ => 10 );
$entries = $app->load(‘Entry’,$terms,$args);
SELECT * FROM ‘mt_entry’
WHERE entry_status=2 AND
entry_class=‘entry’
ORDER BY `mt_entry`.`entry_authored_on` DESC
LIMIT 0,10
Example  8
class ExamplePlugin extends MTPlugin {
'config_settings' => array( // mt-config.cgi
'DynamicForceCompile' => array( 'default' => 0 ),),
'settings' => array( // PluginSettings
'example_setting' => array( 'default' => 1 ),),
'tags' => array( // Template Tags
'block' => array('dynamicmtml' => 'dynamicmtml'),
'function' => array('authorlanguage' => 'authorlanguage'),
'modifier' => array('trimwhitespace' => 'trimwhitespace'),),
'task_workers' => array( // Workers
'mt_rebuild' => array('label' => 'Publishes content.',
'code' => 'workers_mt_rebuild',
'class' => 'MT::Worker::Publish',),),
'callbacks' => array( // Callbacks
'build_page' => 'filter_build_page',),);
mt_dir/plugins/EsamplePlugin/php/config.php
<ul>
<?php
$myposts =
get_posts('posts_per_page=10');
foreach($myposts as $post) :
setup_postdata($post);
?>
<li><a href="<?php the_permalink(); ?>">
<?php the_title(); ?></a></li>
<?php endforeach; ?>
</ul>
Template  for  WordPress
<ul>
<MT:Entries limit="10">
<li><a href="<MT:EntryPermalink>">
<MT:EntryTitle></a></li>
</MT:Entries>
</ul>
Template  for  Movable  Type
<ul>
<MT:WP:Entries limit="10">
<li><a href="<MT:WP:EntryPermalink>">
<MT:WP:EntryTitle></a></li>
</MT:WP:Entries>
</ul>
Using  DynamicMTML
<!-- File: /app/controllers/posts_controller.php -->
<?php
class PostsController extends AppController {
var $name = 'Posts';
function index() {
$this->set('posts',
$this->Post->find('all'));
}
function view($id = null) {
$this->Post->id = $id;
$this->set('post', $this->Post->read());
}
}
?>
Original(Controller)
<!-- File: /app/views/posts/index.ctp -->
<h1>Blog posts</h1>
<table>
<tr>
<th>Id</th><th>Title</th><th>Created</th>
</tr>
<?php foreach ($posts as $post): ?>
<tr>
<td><?php echo $post['Post']['id']; ?></td>
<td>
<?php echo
$html->link($post['Post']['title'],
array('controller' => 'posts',
'action' => 'view',
$post['Post']['id'])); ?>
</td>
<td><?php echo $post['Post']['created']; ?
></td>
</tr>
<?php endforeach; ?>
</table>
Original(View)
<!-- File: /app/controllers/posts_controller.php -->
<?php
class PostsController extends AppController {
var $name = 'Posts';
function index() {
$ctx = $this->ctx;
$ctx->__stash['vars']['page_title']
= 'Blog posts';
$ctx->stash('Post',
$this->Post->find('all'));
}
function view( $id = null ) {
$ctx = $this->ctx;
$this->Post->id = $id;
$ctx->stash('Post', $this->Post->read());
}
}
?>
DynamicMTML(Controller)
<!-- File: /app/views/posts/index.ctp -->
<h1><mt:var name="page_title" escape="html"></h1>
<mt:cake:loop model="Post">
<mt:if name="__first__">
<table>
<tr>
<th>Id</th><th>Title</th><th>Created</th>
</tr>
</mt:if>
<tr>
<td><mt:var name="id"></td>
<td>
<a href=".view/<mt:var name="id">">
<mt:var name="title" escape="html"></a>
</td>
<td><mt:var name="created"></td>
</tr>
<mt:if name="__last__">
</table>
</mt:if>
</mt:cake:loop>
DynamicMTML(View)
まとめ
• MVCきれいに分けられるよ分業できるよ
• MT実はPHPで拡張できるよ便便利利だよ
• GPLライセンス版もあるよ
• アルファサードではPHP/Perlエンジニア募集中
• アルファサードではスマホアプリエンジニア募集中
Thank  you!

More Related Content

What's hot

Perl logging
Perl loggingPerl logging
Perl loggingkeroyonn
 
最強オブジェクト指向言語 JavaScript 再入門!
最強オブジェクト指向言語 JavaScript 再入門!最強オブジェクト指向言語 JavaScript 再入門!
最強オブジェクト指向言語 JavaScript 再入門!Yuji Nojima
 
GMO TECHNOLOGY BOOT CAMP2015(PHP編)
GMO TECHNOLOGY BOOT CAMP2015(PHP編)GMO TECHNOLOGY BOOT CAMP2015(PHP編)
GMO TECHNOLOGY BOOT CAMP2015(PHP編)Arata Fujimura
 
仕事の手離れを良くする手段としての、静的検査のあるテンプレートエンジン (YATT::Lite talk at 2014 テンプレートエンジンNight)
仕事の手離れを良くする手段としての、静的検査のあるテンプレートエンジン (YATT::Lite talk at 2014 テンプレートエンジンNight)仕事の手離れを良くする手段としての、静的検査のあるテンプレートエンジン (YATT::Lite talk at 2014 テンプレートエンジンNight)
仕事の手離れを良くする手段としての、静的検査のあるテンプレートエンジン (YATT::Lite talk at 2014 テンプレートエンジンNight)Hiroaki KOBAYASHI
 
Creators'night#12今井
Creators'night#12今井Creators'night#12今井
Creators'night#12今井Daisuke Imai
 
「スピード」と「品質」を実現するPHP開発チームの取り組み~AngularJS+FuelPHP+AspectMock~
「スピード」と「品質」を実現するPHP開発チームの取り組み~AngularJS+FuelPHP+AspectMock~「スピード」と「品質」を実現するPHP開発チームの取り組み~AngularJS+FuelPHP+AspectMock~
「スピード」と「品質」を実現するPHP開発チームの取り組み~AngularJS+FuelPHP+AspectMock~leverages_event
 
PHP基本的関数QUIZ
PHP基本的関数QUIZPHP基本的関数QUIZ
PHP基本的関数QUIZWataru Terada
 
introduction to Marionette.js (jscafe14)
introduction to Marionette.js (jscafe14)introduction to Marionette.js (jscafe14)
introduction to Marionette.js (jscafe14)Ryuma Tsukano
 
Prophecyを使ったユニットテスト
Prophecyを使ったユニットテスト Prophecyを使ったユニットテスト
Prophecyを使ったユニットテスト Akio Ishida
 
JavaScriptの落とし穴
JavaScriptの落とし穴JavaScriptの落とし穴
JavaScriptの落とし穴ikdysfm
 
大(中)規模Java script開発について
大(中)規模Java script開発について大(中)規模Java script開発について
大(中)規模Java script開発についてYuki Tanaka
 
2005 11 29_template_customize_seminer_04
2005 11 29_template_customize_seminer_042005 11 29_template_customize_seminer_04
2005 11 29_template_customize_seminer_04Tom Hayakawa
 
CakePHP+Smartyハイブリッドによるラクラク開発
CakePHP+Smartyハイブリッドによるラクラク開発CakePHP+Smartyハイブリッドによるラクラク開発
CakePHP+Smartyハイブリッドによるラクラク開発Shinzo SAITO
 
俺のフックがこんなに簡単なわけがない。
俺のフックがこんなに簡単なわけがない。俺のフックがこんなに簡単なわけがない。
俺のフックがこんなに簡単なわけがない。Hishikawa Takuro
 
Webシステム脆弱性LT資料
Webシステム脆弱性LT資料Webシステム脆弱性LT資料
Webシステム脆弱性LT資料Tomohito Adachi
 
日本Androidの会 中国支部資料
日本Androidの会 中国支部資料日本Androidの会 中国支部資料
日本Androidの会 中国支部資料Masafumi Terazono
 
知ってるようで意外と知らないPHPの便利関数
知ってるようで意外と知らないPHPの便利関数知ってるようで意外と知らないPHPの便利関数
知ってるようで意外と知らないPHPの便利関数Wataru Terada
 

What's hot (18)

Perl logging
Perl loggingPerl logging
Perl logging
 
最強オブジェクト指向言語 JavaScript 再入門!
最強オブジェクト指向言語 JavaScript 再入門!最強オブジェクト指向言語 JavaScript 再入門!
最強オブジェクト指向言語 JavaScript 再入門!
 
GMO TECHNOLOGY BOOT CAMP2015(PHP編)
GMO TECHNOLOGY BOOT CAMP2015(PHP編)GMO TECHNOLOGY BOOT CAMP2015(PHP編)
GMO TECHNOLOGY BOOT CAMP2015(PHP編)
 
仕事の手離れを良くする手段としての、静的検査のあるテンプレートエンジン (YATT::Lite talk at 2014 テンプレートエンジンNight)
仕事の手離れを良くする手段としての、静的検査のあるテンプレートエンジン (YATT::Lite talk at 2014 テンプレートエンジンNight)仕事の手離れを良くする手段としての、静的検査のあるテンプレートエンジン (YATT::Lite talk at 2014 テンプレートエンジンNight)
仕事の手離れを良くする手段としての、静的検査のあるテンプレートエンジン (YATT::Lite talk at 2014 テンプレートエンジンNight)
 
Creators'night#12今井
Creators'night#12今井Creators'night#12今井
Creators'night#12今井
 
「スピード」と「品質」を実現するPHP開発チームの取り組み~AngularJS+FuelPHP+AspectMock~
「スピード」と「品質」を実現するPHP開発チームの取り組み~AngularJS+FuelPHP+AspectMock~「スピード」と「品質」を実現するPHP開発チームの取り組み~AngularJS+FuelPHP+AspectMock~
「スピード」と「品質」を実現するPHP開発チームの取り組み~AngularJS+FuelPHP+AspectMock~
 
PHP基本的関数QUIZ
PHP基本的関数QUIZPHP基本的関数QUIZ
PHP基本的関数QUIZ
 
introduction to Marionette.js (jscafe14)
introduction to Marionette.js (jscafe14)introduction to Marionette.js (jscafe14)
introduction to Marionette.js (jscafe14)
 
Prophecyを使ったユニットテスト
Prophecyを使ったユニットテスト Prophecyを使ったユニットテスト
Prophecyを使ったユニットテスト
 
JavaScriptの落とし穴
JavaScriptの落とし穴JavaScriptの落とし穴
JavaScriptの落とし穴
 
Try Jetpack
Try JetpackTry Jetpack
Try Jetpack
 
大(中)規模Java script開発について
大(中)規模Java script開発について大(中)規模Java script開発について
大(中)規模Java script開発について
 
2005 11 29_template_customize_seminer_04
2005 11 29_template_customize_seminer_042005 11 29_template_customize_seminer_04
2005 11 29_template_customize_seminer_04
 
CakePHP+Smartyハイブリッドによるラクラク開発
CakePHP+Smartyハイブリッドによるラクラク開発CakePHP+Smartyハイブリッドによるラクラク開発
CakePHP+Smartyハイブリッドによるラクラク開発
 
俺のフックがこんなに簡単なわけがない。
俺のフックがこんなに簡単なわけがない。俺のフックがこんなに簡単なわけがない。
俺のフックがこんなに簡単なわけがない。
 
Webシステム脆弱性LT資料
Webシステム脆弱性LT資料Webシステム脆弱性LT資料
Webシステム脆弱性LT資料
 
日本Androidの会 中国支部資料
日本Androidの会 中国支部資料日本Androidの会 中国支部資料
日本Androidの会 中国支部資料
 
知ってるようで意外と知らないPHPの便利関数
知ってるようで意外と知らないPHPの便利関数知ってるようで意外と知らないPHPの便利関数
知ってるようで意外と知らないPHPの便利関数
 

Similar to MT meets PHP - PHP conference Kansai 2013

【SQLインジェクション対策】徳丸先生に怒られない、動的SQLの安全な組み立て方
【SQLインジェクション対策】徳丸先生に怒られない、動的SQLの安全な組み立て方【SQLインジェクション対策】徳丸先生に怒られない、動的SQLの安全な組み立て方
【SQLインジェクション対策】徳丸先生に怒られない、動的SQLの安全な組み立て方kwatch
 
Mojoliciousをウェブ制作現場で使ってみてる
Mojoliciousをウェブ制作現場で使ってみてるMojoliciousをウェブ制作現場で使ってみてる
Mojoliciousをウェブ制作現場で使ってみてるjamadam
 
Ext.Directについて
Ext.DirectについてExt.Directについて
Ext.DirectについてYuki Naotori
 
Cake php4designers
Cake php4designersCake php4designers
Cake php4designersSeiji Ogawa
 
詳説ぺちぺち
詳説ぺちぺち詳説ぺちぺち
詳説ぺちぺちdo_aki
 
20090606 わんくま(がる)
20090606 わんくま(がる)20090606 わんくま(がる)
20090606 わんくま(がる)galluda
 
Launch a Web Service in 3 Days Using WordPress
Launch a Web Service in 3 Days Using WordPressLaunch a Web Service in 3 Days Using WordPress
Launch a Web Service in 3 Days Using WordPressKite Koga
 
「Html sql」で図書館hpにアクセスしてみよう
「Html sql」で図書館hpにアクセスしてみよう「Html sql」で図書館hpにアクセスしてみよう
「Html sql」で図書館hpにアクセスしてみようKentaro Matsui
 
2005 09 17_osc2005_xoops
2005 09 17_osc2005_xoops2005 09 17_osc2005_xoops
2005 09 17_osc2005_xoopsTom Hayakawa
 
ブログメディアにおけるData APIの活用について
ブログメディアにおけるData APIの活用についてブログメディアにおけるData APIの活用について
ブログメディアにおけるData APIの活用についてHatsuhito UENO
 
Struts2を始めよう!
Struts2を始めよう!Struts2を始めよう!
Struts2を始めよう!Shinpei Ohtani
 
3時間濃縮CakePHP2.1 in PHPカンファレンス北海道2012
3時間濃縮CakePHP2.1 in PHPカンファレンス北海道20123時間濃縮CakePHP2.1 in PHPカンファレンス北海道2012
3時間濃縮CakePHP2.1 in PHPカンファレンス北海道2012Yusuke Ando
 
Tfpモデリングスペキュレーション
TfpモデリングスペキュレーションTfpモデリングスペキュレーション
TfpモデリングスペキュレーションEiichi Hayashi
 
脱コピペ!デザイナーにもわかるPHPとWP_Query
脱コピペ!デザイナーにもわかるPHPとWP_Query脱コピペ!デザイナーにもわかるPHPとWP_Query
脱コピペ!デザイナーにもわかるPHPとWP_QueryHidekazu Ishikawa
 
SQLマッピングフレームワーク「Kobati」のはなし
SQLマッピングフレームワーク「Kobati」のはなしSQLマッピングフレームワーク「Kobati」のはなし
SQLマッピングフレームワーク「Kobati」のはなしKazuki Minamitani
 
Apacheの展望とmod_perlの超絶技巧 #yapcasia
Apacheの展望とmod_perlの超絶技巧 #yapcasiaApacheの展望とmod_perlの超絶技巧 #yapcasia
Apacheの展望とmod_perlの超絶技巧 #yapcasia鉄次 尾形
 
最近の PHP の話
最近の PHP の話最近の PHP の話
最近の PHP の話y-uti
 

Similar to MT meets PHP - PHP conference Kansai 2013 (20)

Inside Movable Type
Inside Movable TypeInside Movable Type
Inside Movable Type
 
【SQLインジェクション対策】徳丸先生に怒られない、動的SQLの安全な組み立て方
【SQLインジェクション対策】徳丸先生に怒られない、動的SQLの安全な組み立て方【SQLインジェクション対策】徳丸先生に怒られない、動的SQLの安全な組み立て方
【SQLインジェクション対策】徳丸先生に怒られない、動的SQLの安全な組み立て方
 
Mojoliciousをウェブ制作現場で使ってみてる
Mojoliciousをウェブ制作現場で使ってみてるMojoliciousをウェブ制作現場で使ってみてる
Mojoliciousをウェブ制作現場で使ってみてる
 
Ext.Directについて
Ext.DirectについてExt.Directについて
Ext.Directについて
 
Cake php4designers
Cake php4designersCake php4designers
Cake php4designers
 
詳説ぺちぺち
詳説ぺちぺち詳説ぺちぺち
詳説ぺちぺち
 
20090606 わんくま(がる)
20090606 わんくま(がる)20090606 わんくま(がる)
20090606 わんくま(がる)
 
Launch a Web Service in 3 Days Using WordPress
Launch a Web Service in 3 Days Using WordPressLaunch a Web Service in 3 Days Using WordPress
Launch a Web Service in 3 Days Using WordPress
 
「Html sql」で図書館hpにアクセスしてみよう
「Html sql」で図書館hpにアクセスしてみよう「Html sql」で図書館hpにアクセスしてみよう
「Html sql」で図書館hpにアクセスしてみよう
 
URLで遊ぼう
URLで遊ぼうURLで遊ぼう
URLで遊ぼう
 
2005 09 17_osc2005_xoops
2005 09 17_osc2005_xoops2005 09 17_osc2005_xoops
2005 09 17_osc2005_xoops
 
ブログメディアにおけるData APIの活用について
ブログメディアにおけるData APIの活用についてブログメディアにおけるData APIの活用について
ブログメディアにおけるData APIの活用について
 
Struts2を始めよう!
Struts2を始めよう!Struts2を始めよう!
Struts2を始めよう!
 
Using Dancer
Using DancerUsing Dancer
Using Dancer
 
3時間濃縮CakePHP2.1 in PHPカンファレンス北海道2012
3時間濃縮CakePHP2.1 in PHPカンファレンス北海道20123時間濃縮CakePHP2.1 in PHPカンファレンス北海道2012
3時間濃縮CakePHP2.1 in PHPカンファレンス北海道2012
 
Tfpモデリングスペキュレーション
TfpモデリングスペキュレーションTfpモデリングスペキュレーション
Tfpモデリングスペキュレーション
 
脱コピペ!デザイナーにもわかるPHPとWP_Query
脱コピペ!デザイナーにもわかるPHPとWP_Query脱コピペ!デザイナーにもわかるPHPとWP_Query
脱コピペ!デザイナーにもわかるPHPとWP_Query
 
SQLマッピングフレームワーク「Kobati」のはなし
SQLマッピングフレームワーク「Kobati」のはなしSQLマッピングフレームワーク「Kobati」のはなし
SQLマッピングフレームワーク「Kobati」のはなし
 
Apacheの展望とmod_perlの超絶技巧 #yapcasia
Apacheの展望とmod_perlの超絶技巧 #yapcasiaApacheの展望とmod_perlの超絶技巧 #yapcasia
Apacheの展望とmod_perlの超絶技巧 #yapcasia
 
最近の PHP の話
最近の PHP の話最近の PHP の話
最近の PHP の話
 

More from 純生 野田

アクセシビリティで企業価値を高める、小さな会社の戦い方
アクセシビリティで企業価値を高める、小さな会社の戦い方アクセシビリティで企業価値を高める、小さな会社の戦い方
アクセシビリティで企業価値を高める、小さな会社の戦い方純生 野田
 
次世代版 PowerCMS 開発プロジェクトのご紹介
次世代版 PowerCMS 開発プロジェクトのご紹介次世代版 PowerCMS 開発プロジェクトのご紹介
次世代版 PowerCMS 開発プロジェクトのご紹介純生 野田
 
アルファサード株式会社はなぜ アクセシビリティに取り組むのか
アルファサード株式会社はなぜ アクセシビリティに取り組むのかアルファサード株式会社はなぜ アクセシビリティに取り組むのか
アルファサード株式会社はなぜ アクセシビリティに取り組むのか純生 野田
 
YAPC::Kansai 2017 - macOSネイティブアプリ作成におけるPerlの活用
YAPC::Kansai 2017 - macOSネイティブアプリ作成におけるPerlの活用YAPC::Kansai 2017 - macOSネイティブアプリ作成におけるPerlの活用
YAPC::Kansai 2017 - macOSネイティブアプリ作成におけるPerlの活用純生 野田
 
オーサリングツールとしてのCMSとWebアクセシビリティ
オーサリングツールとしてのCMSとWebアクセシビリティオーサリングツールとしてのCMSとWebアクセシビリティ
オーサリングツールとしてのCMSとWebアクセシビリティ純生 野田
 
Color Testerはどうやって文字の色を拾っているのか?
Color Testerはどうやって文字の色を拾っているのか?Color Testerはどうやって文字の色を拾っているのか?
Color Testerはどうやって文字の色を拾っているのか?純生 野田
 
ウェブアクセシビリティチェックツール開発者の頭ん中
ウェブアクセシビリティチェックツール開発者の頭ん中ウェブアクセシビリティチェックツール開発者の頭ん中
ウェブアクセシビリティチェックツール開発者の頭ん中純生 野田
 
PowerCMS 8341 のご紹介
PowerCMS 8341 のご紹介PowerCMS 8341 のご紹介
PowerCMS 8341 のご紹介純生 野田
 
Something Different for the Best Web Solution!
Something Different for the Best Web Solution!Something Different for the Best Web Solution!
Something Different for the Best Web Solution!純生 野田
 
SEOの本質から考える PowerCMSを活用した 検索エンジン最適化
SEOの本質から考える PowerCMSを活用した 検索エンジン最適化SEOの本質から考える PowerCMSを活用した 検索エンジン最適化
SEOの本質から考える PowerCMSを活用した 検索エンジン最適化純生 野田
 
MTのダイナミック処理(PHP)を高速化する@サーバーサイドスクリプティング
MTのダイナミック処理(PHP)を高速化する@サーバーサイドスクリプティングMTのダイナミック処理(PHP)を高速化する@サーバーサイドスクリプティング
MTのダイナミック処理(PHP)を高速化する@サーバーサイドスクリプティング純生 野田
 
Mt seminar hiroshima_public
Mt seminar hiroshima_publicMt seminar hiroshima_public
Mt seminar hiroshima_public純生 野田
 
Mac OSにおけるShellコマンドの活⽤用 (Xojo 勉強会)
Mac OSにおけるShellコマンドの活⽤用 (Xojo 勉強会)Mac OSにおけるShellコマンドの活⽤用 (Xojo 勉強会)
Mac OSにおけるShellコマンドの活⽤用 (Xojo 勉強会)純生 野田
 

More from 純生 野田 (20)

アクセシビリティで企業価値を高める、小さな会社の戦い方
アクセシビリティで企業価値を高める、小さな会社の戦い方アクセシビリティで企業価値を高める、小さな会社の戦い方
アクセシビリティで企業価値を高める、小さな会社の戦い方
 
PowerCMS X
PowerCMS XPowerCMS X
PowerCMS X
 
次世代版 PowerCMS 開発プロジェクトのご紹介
次世代版 PowerCMS 開発プロジェクトのご紹介次世代版 PowerCMS 開発プロジェクトのご紹介
次世代版 PowerCMS 開発プロジェクトのご紹介
 
PowerCMS Conference
PowerCMS ConferencePowerCMS Conference
PowerCMS Conference
 
PowerCMS X
PowerCMS XPowerCMS X
PowerCMS X
 
アルファサード株式会社はなぜ アクセシビリティに取り組むのか
アルファサード株式会社はなぜ アクセシビリティに取り組むのかアルファサード株式会社はなぜ アクセシビリティに取り組むのか
アルファサード株式会社はなぜ アクセシビリティに取り組むのか
 
YAPC::Kansai 2017 - macOSネイティブアプリ作成におけるPerlの活用
YAPC::Kansai 2017 - macOSネイティブアプリ作成におけるPerlの活用YAPC::Kansai 2017 - macOSネイティブアプリ作成におけるPerlの活用
YAPC::Kansai 2017 - macOSネイティブアプリ作成におけるPerlの活用
 
About PowerCMS4.3
About PowerCMS4.3About PowerCMS4.3
About PowerCMS4.3
 
オーサリングツールとしてのCMSとWebアクセシビリティ
オーサリングツールとしてのCMSとWebアクセシビリティオーサリングツールとしてのCMSとWebアクセシビリティ
オーサリングツールとしてのCMSとWebアクセシビリティ
 
Color Testerはどうやって文字の色を拾っているのか?
Color Testerはどうやって文字の色を拾っているのか?Color Testerはどうやって文字の色を拾っているのか?
Color Testerはどうやって文字の色を拾っているのか?
 
The Next PowerCMS
The Next PowerCMSThe Next PowerCMS
The Next PowerCMS
 
The Next PowerCMS
The Next PowerCMSThe Next PowerCMS
The Next PowerCMS
 
ウェブアクセシビリティチェックツール開発者の頭ん中
ウェブアクセシビリティチェックツール開発者の頭ん中ウェブアクセシビリティチェックツール開発者の頭ん中
ウェブアクセシビリティチェックツール開発者の頭ん中
 
PowerCMS 8341 のご紹介
PowerCMS 8341 のご紹介PowerCMS 8341 のご紹介
PowerCMS 8341 のご紹介
 
Something Different for the Best Web Solution!
Something Different for the Best Web Solution!Something Different for the Best Web Solution!
Something Different for the Best Web Solution!
 
SEOの本質から考える PowerCMSを活用した 検索エンジン最適化
SEOの本質から考える PowerCMSを活用した 検索エンジン最適化SEOの本質から考える PowerCMSを活用した 検索エンジン最適化
SEOの本質から考える PowerCMSを活用した 検索エンジン最適化
 
MTのダイナミック処理(PHP)を高速化する@サーバーサイドスクリプティング
MTのダイナミック処理(PHP)を高速化する@サーバーサイドスクリプティングMTのダイナミック処理(PHP)を高速化する@サーバーサイドスクリプティング
MTのダイナミック処理(PHP)を高速化する@サーバーサイドスクリプティング
 
Mt seminar hiroshima_public
Mt seminar hiroshima_publicMt seminar hiroshima_public
Mt seminar hiroshima_public
 
Mac OSにおけるShellコマンドの活⽤用 (Xojo 勉強会)
Mac OSにおけるShellコマンドの活⽤用 (Xojo 勉強会)Mac OSにおけるShellコマンドの活⽤用 (Xojo 勉強会)
Mac OSにおけるShellコマンドの活⽤用 (Xojo 勉強会)
 
Power cms3+azure
Power cms3+azurePower cms3+azure
Power cms3+azure
 

Recently uploaded

プレイマットのパターン生成支援ツールの評価
プレイマットのパターン生成支援ツールの評価プレイマットのパターン生成支援ツールの評価
プレイマットのパターン生成支援ツールの評価sugiuralab
 
20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directoryosamut
 
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。iPride Co., Ltd.
 
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ       2024/04/12の勉強会で発表されたものです。新人研修のまとめ       2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。iPride Co., Ltd.
 
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxIoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxAtomu Hidaka
 
プレイマットのパターン生成支援ツール
プレイマットのパターン生成支援ツールプレイマットのパターン生成支援ツール
プレイマットのパターン生成支援ツールsugiuralab
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Danieldanielhu54
 
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000Shota Ito
 

Recently uploaded (8)

プレイマットのパターン生成支援ツールの評価
プレイマットのパターン生成支援ツールの評価プレイマットのパターン生成支援ツールの評価
プレイマットのパターン生成支援ツールの評価
 
20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory
 
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
 
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ       2024/04/12の勉強会で発表されたものです。新人研修のまとめ       2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
 
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxIoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
 
プレイマットのパターン生成支援ツール
プレイマットのパターン生成支援ツールプレイマットのパターン生成支援ツール
プレイマットのパターン生成支援ツール
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
 
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000
 

MT meets PHP - PHP conference Kansai 2013