SlideShare uma empresa Scribd logo
1 de 71
Baixar para ler offline
やはりお前らのMTML
は間違っている!
MTDDC Meetup TOKYO 2015
!
Junnama Noda (Alfasado inc.)
ゴールドスポンサーになりました!
⾃⼰紹介
✴ アルファサード株式会社 代表取締役
✴ PowerCMS 開発者
✴ ウェブアクセシビリティ エバンジェリスト
✴ Movable Type エバンジェリスト
✴ CPAN Author で MTプラグイン開発者
Movable Type
<ul>!
<MT:Entries limit="10" include_blogs="all">!
<li>!
<a href="<MT:EntryPermalink>">!
<MT:EntryTitle>!
</a>!
</li>!
</MT:Entries>!
</ul>!
WordPress
<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>
<?php か! PHPなのか?
SetVarBlockで変数指定!?
tokuchou_setsubi_01
tokuchou_setsubi_02
tokuchou_setsubi_03
…
(;´Д`)
気を取り直して参りましょう!
前提(2つのプラグイン)
https://github.com/alfasado/mt-plugin-get-hash-var
https://github.com/alfasado/mt-plugin-dom-document
なぜ間違ってしまうのか?
✴ 案件規模が⼤きくなり、要件は複雑(怪奇)に
✴ 何でも聞いてきやがって、な営業w
✴ 俺MTタグ得意だぜ、変数分岐お任せあれ
✴ MTタグで頑張ればいけるんじゃね?
✴ 変数に突っ込んでソートして MTLoopで回せば
何とかなるんじゃね?
なぜいけないのか?
✴ 直せない。あいつが書いたの俺、直せない(泣
✴ わかんね。わかんねぇよ。
✴ 何で修正箇所と別のところ壊したのさ!
✴ ここ直したら、影響範囲どこまで及ぶのさ、こ、
怖いよ修正すんの。
✴ 担当者、辞めちゃったんだよね。
(;´Д`)
MTSetVarがすべての始まり
おさらい
<mt:SetVarBlock name="site_name">!
<mt:WebsiteName>!
</mt:SetVarBlock>!
!
<mt:WebsiteName setvar="site_name">!
!
<mt:SetVar name="site_name2" value="$site_name">!
!
<mt:If name="site_name" like="MTDDC">!
# do Something.!
</mt:If>
<= 空⽩・改⾏が含まれるのに注意
変数とは?
https://ja.wikipedia.org/wiki/変数_(プログラミング)
プログラミングにおいて、変数(へんすう、variable)とは、プ
ログラムのソースコードにおいて、扱われるデータを⼀定期間記
憶し必要なときに利⽤できるようにするために、データに固有の
名前を与えたものである。
⼀⼈⼀⼈の⼈間が異なる名前によって区別されるように、⼀つ⼀
つの変数も名前によって区別される。これにより、複数のデータ
を容易に識別することができる。変数を区別するための名前を特
に識別⼦という。また⼀般に、変数が表しているデータをその変
数の値(あたい)という。
変数とは、メモリに値を書き込むこと
(少々乱暴だが)
https://www.youtube.com/watch?v=755AIUT5ZME
参考
変数とは何か
✴ 名前をつけて、メモリに値を書き込む
✴ 名前で値を取得できる
✴ 処理が終ると変数は消える
✴ MTにおける処理の終わりは、テンプレートがビ
ルドされた時
✴ つまり、テンプレートが読み出されビルドされ
るまでが変数の寿命
MTのテンプレート変数は、
グローバル変数である
グローバル変数とは?
https://ja.wikipedia.org/wiki/グローバル変数
グローバル変数(⼤域変数、英: global variable)は、コンピュー
タプログラミングにおいて全てのスコープからアクセスできる変
数のことである。対する語は、ローカル変数である。(中略)
⼀般にグローバル変数は、その⾮局在的な性質ゆえに、好ましく
ない実践だと考えられている。すなわち、グローバル変数は潜在
的にどこかで変更される可能性があり、またプログラムの⼀部は
それに依存してしまう恐れがあるからである。
(中略)相互依存が⾼まることは複雑性を増⼤することにつながる。
Perl
sub main_hdlr {!
my $x = 1;!
my $y = 2;!
print sub_hdlr( $x, $y );!
$x;!
}!
!
sub sub_hdlr {!
my ( $value1, $value2 ) = @_;!
my $x = $value1 + $value2;!
return $x;!
}
<= 1
<= 3
Movable Type
<mt:Setvar name="x" value="1">!
<mt:Setvar name="y" value="1">!
<mt:Setvar name="x" value="$y" op="+">!
!
<mt:Var name="x">!
!
<= 2
Movable Type
<mt:Include module="共通変数">!
!
<mt:If name="some_condition" eq="1">!
# do something.!
</mt:If>!
some_condition!
はここで定義
グローバル変数なのに、わかんない!
書き換えてしまうと、全体に影響
どうすれば良いか?
✴ モジュールのインクルードを使わない(無理だろ)
✴ 常に同じテンプレート内で変数を定義する(現実
的じゃないよね)
✴ コメントを⼊れる(変数を定義している箇所でい
いの?)
✴ 絶対使われていない変数に⼀回代⼊してから使
う?(美しくない)
Movable Type
<mt:Setvar name="x" value="1">!
<mt:Setvar name="y" value="1">!
!
<mt:LocalVars>!
<mt:Setvar name="x" value="$y" op="+">!
<mt:Var name="x">!
</mt:LocalVars>!
!
<mt:Var name="x">!
!
<= 2
<= 1
変数を局所化する
Movable Type
<mt:Include module="共通変数">!
!
<mt:If name="some_condition" eq="1"!
note="会員属性が通常会員の時">!
# do something.!
</mt:If>!
コメントは利⽤箇所でこそ重要
Movable Type
<mt:SetVar name="特徴" !
value="24時間365⽇の監視付き、低価格の専⽤サーバー">!
!
<mt:Var name="特徴">
⽇本語でOK
中級編
お題
タイトルとキーワード欄に「東
京」を含み、本⽂に「MTDDC」
を含む記事を最⼤10件出⼒
<mt:Setvar name="show_entries_counter" value="0">!
<mt:Entries>!
<mt:EntryKeywords setvar="entry_keywords">!
<mt:EntryTitle setvar="entry_title">!
<mt:EntryBody setvar="entry_body">!
<mt:If name="entry_keywords" like="東京">!
<mt:If name="entry_title" like="東京">!
<mt:If name="entry_body" like="MTDDC">!
<mt:If name="show_entries_counter" lt="10">!
<mt:Unless name="show_entries_counter">!
<ul>!
</mt:Unless>!
<li><mt:EntryTitle></li>!
<mt:Setvar name="show_entries_counter"!
op="++" setvar="show_entries_counter">!
</mt:If>!
</mt:If>!
</mt:If>!
</mt:If>!
<mt:If name="show_entries_counter" eq="10">!
</ul>!
</mt:If>!
</mt:Entries>
ロジック=>
ロジック=>
ビュー=>
テンプレート1
<mt:Setvar name="show_entries_counter" value="0">!
<mt:Entries>!
<mt:EntryKeywords setvar="entry_keywords">!
<mt:EntryTitle setvar="entry_title">!
<mt:EntryBody setvar="entry_body">!
<mt:SetVar name="show_entry" value="0">!
<mt:If name="entry_keywords" like="東京">!
<mt:If name="entry_title" like="東京">!
<mt:If name="entry_body" like="MTDDC">!
<mt:If name="show_entries_counter" lt="10">!
<mt:SetVar name="show_entry" value="1">!
<mt:Setvar name="show_entries_counter" !
op="++" setvar="show_entries_counter">!
</mt:If>!
</mt:If>!
</mt:If>!
</mt:If>!
<mt:If name="show_entry">!
<mt:Unless name="show_entries_counter"><ul></mt:Unless>!
<li><mt:EntryTitle></li>!
<mt:Setvar name="show_entries_counter"!
op="++" setvar="show_entries_counter">!
</mt:If>!
<mt:If name="show_entries_counter" eq="10">!
</ul>!
</mt:If>!
</mt:Entries>
ロジック=>
ビュー=>
テンプレート2
<mt:Setvar name="show_entries_counter" value="0">!
<mt:Entries>!
<mt:EntryKeywords setvar="entry_keywords">!
<mt:EntryTitle setvar="entry_title">!
<mt:EntryBody setvar="entry_body">!
<mt:SetVar name="show_entry" value="0">!
<mt:If name="entry_keywords" like="東京">!
<mt:If name="entry_title" like="東京">!
<mt:If name="entry_body" like="MTDDC">!
<mt:If name="show_entries_counter" lt="10">!
<mt:EntryId setvar="entry_id">!
<mt:SetVar name="entry_ids"!
function="push" value="$entry_id">!
<mt:Setvar name="show_entries_counter" !
op="++" setvar="show_entries_counter">!
</mt:If>!
</mt:If>!
</mt:If>!
</mt:If>!
</mt:Entries>
ロジックのみ=>
前半
テンプレート3
<mt:Entries entry_ids="$entry_ids">!
<mt:If name="__first__"><ul class="entries_widget"></mt:If>!
<li class="<mt:If name="__odd__">odd!
<mt:Else>even</mt:If>">!
<a href="<mt:EntryPermalink>">!
<mt:EntryTitle escape="html">!
</a>!
<span class="date"><mt:EntryDate></span>!
<p class="description">!
<mt:EntryExcerpt remove_html="1">!
</p>!
</li>!
<mt:If name="__last__">!
</ul>!
</mt:If>!
</mt:Entries>!
ビューのみ=>
後半
テンプレート3
entry_idsはGetHashVarプラグインが
提供するモディファイア
<mt:Setvar name="show_entries_counter" value="0">!
<mt:Entries>!
<mt:EntryKeywords setvar="entry_keywords">!
<mt:EntryTitle setvar="entry_title">!
<mt:EntryBody setvar="entry_body">!
<mt:SetVar name="show_entry" value="0">!
<mt:If name="entry_keywords" like="東京">!
<mt:If name="entry_title" like="東京">!
<mt:If name="entry_body" like="MTDDC">!
<mt:If name="show_entries_counter" lt="10">!
<mt:SetHashVars name="cols">!
title=<mt:EntryTitle>!
excerpt=<mt:EntryExcerpt>!
date=<mt:EntryDate>!
permalink=<mt:EntryPermalink>!
</mt:SetHashVars>!
<mt:SetVar name="entries"!
function="push" key="$__counter__" value="$cols">!
<mt:Setvar name="show_entries_counter" !
op="++" setvar="show_entries_counter">!
</mt:If>!
</mt:If>!
</mt:If>!
</mt:If>!
</mt:Entries>
ロジックのみ=>
テンプレート4
前半
SetHashVarsはGetHashVarプラグインが提供
(setHashVarタグ使えば標準機能だけでも可能)
<= 変数にハッシュで格納
<mt:Loop name="entries">!
<mt:If name="__first__"><ul class="entries_widget"></mt:If>!
<li class="<mt:If name="__odd__">odd!
<mt:Else>even</mt:If>">!
<a href="<mt:Var name="__value__{permalink}">">!
<mt:Var name="__value__{title}" escape="html">!
</a>!
<span class="date">!
<mt:Var name="__value__{date}"></span>!
<p class="description">!
<mt:Var name="__value__{excerpt}"!
remove_html="1">!
</p>!
</li>!
<mt:If name="__last__">!
</ul>!
</mt:If>!
</mt:Loop>!
ビューのみ=>
テンプレート4
後半
ただし、変数は諸刃の件。ググれないし、定義した⼈にしかわからないから。
name: EntriesLikeFilter!
tags:!
filters:!
Entries:!
like_filter:!
handler: > !
sub {!
my ( $ctx, $args, $cond ) = @_;!
for my $key!
( keys %{ $args->{ like_filter } } ) {!
$ctx->{ terms }->{ $key } =!
{ like => '%' .!
$args->!
{ like_filter }->{ $key } .'%' };!
}!
}
テンプレート5
プラグイン(config.yaml)
<mt:SetHashVars name="entries_condition">!
title=東京!
keywords=東京!
text=MTDDC!
</mt:SetHashVar>!
!
<mt:Entries like_filter="$entries_condition">!
<mt:If name="__first__"><ul class="entries_widget"></mt:If>!
<li class="<mt:If name="__odd__">odd!
<mt:Else>even</mt:If>">!
<a href="<mt:EntryPermalink>">!
<mt:EntryTitle escape="html">!
</a>!
<span class="date"><mt:EntryDate></span>!
<p class="description">!
<mt:EntryExcerpt remove_html="1">!
</p>!
</li>!
<mt:If name="__last__">!
</ul>!
</mt:If>!
</mt:Entries>!
テンプレート5
たいへんよくできました!
MTタグって作れるんだぜ?
Model View
Controller
https://ja.wikipedia.org/wiki/Model_View_Controller
MVC(Model View Controller モデル・ビュー・コントローラ)
は、ユーザーインタフェースをもつアプリケーションソフトウェ
アを実装するためのデザインパターンである。
アプリケーションソフトウェアの内部データを、ユーザーが直接
参照・編集する情報から分離する。そのためにアプリケーション
ソフトウェアを以下の3つの部分に分割する。
✴model: アプリケーションデータ、ビジネスルール、ロジック、関数
✴view: グラフや図などの任意の情報表現
✴controller: ⼊⼒を受け取りmodelとviewへの命令に変換する
サーバーサイド
エンジニア
フロントエンド
エンジニア
ロジックの実装
MVCのM+C
ビューの実装
MVCのV
<mt:MicrosoftProducts sort_by=„released_on"!
sort_order="descend" limit="10">!
<mt:If name="__first__"><ul></mt:If>!
<li><mt:MicrosoftProductName></li>!
<mt:If name="__last__"></ul></mt:If>!
</mt:MicrosoftProducts>
もしMicrosoft様のウェブサイトなら
やはりお前らのMTMLは間違っている!
CakePHPのView
<table>!
<tr>!
<th>Id</th>!
<th>Title</th>!
<th>Created</th>!
</tr>!
<!-- Here is where we loop through our $posts array, printing
out post info -->!
<?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>!
MTCakeのView
<mt:cake:loop model="Post">!
<mt:ignore>!
or <mt:cake:loop model="Post" stash="posts">!
</mt:ignore>!
<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>!
<?php foreach ($posts as $post): ?>!
<tr>!
<td><?php echo $post['Post']['id']; ?></td>
<mt:cake:loop model="Post">!
<tr>!
<td><mt:var name="id"></td>
モデルを変えれば書き⽅は同じ、同じ振るまい
MTMLへの疑問?
https://github.com/alfasado/mt-plugin-object-loop
汎⽤的なMTObjectLoop
<mt:ObjectLoop model="entry"!
include_blogs="all" keyword="Keyword"!
sort_order="descend" sort_by="crearted_on">!
<mt:If name="__first__"><ul></mt:If>!
<li><mt:Var name="text" trim_to="25+..."></li>!
<mt:If name="__last__"></ul></mt:If>!
</mt:ObjectLoop>!
<mt:ObjectLoop model="comment"!
include_blogs="all"!
sort_order="descend" sort_by="crearted_on">!
<mt:If name="__first__"><ul></mt:If>!
<li><mt:Var name="text" trim_to="25+..."></li>!
<mt:If name="__last__"></ul></mt:If>!
</mt:ObjectLoop>!
汎⽤的なMTObjectLoop
✴ MTObjectLoop = model指定であらゆるモデル
のデータを出⼒できる
✴ MTEntryLoop、MTEntryModelという別名を指
定可能
✴ tag、field:foo対応
✴ オブジェクトごとの振る舞いはプラグインで拡
張可能
覚えるのひとつでいいんだぜ!
上級編
というか、間違った⽅向のテクニック利⽤
お題
特定の条件の時だけ、
mt:Entriesにカスタムフィール
ドによるフィルタ指定をしたい
<mt:Entries!
<mt:If name="want_filter">field.foo="1"</mt:If>>!
...!
</mt:Entries>
こう書ければいいんだけどね。
<mt:Unless decode_html="1" mteval="1">!
&lt;mt:Entries!
<mt:If name="want_filter">!
field.foo="1"!
</mt:If>&gt;!
...!
&lt;/mt:Entries&gt;!
</mt:Unless>
テンプレート1
<mt:setVarBlock name="search1">/<lz:/g</mt:setVarBlock>!
<mt:setVarBlock name="replace1"><</mt:setVarBlock>!
<mt:setVarBlock name="replace1" append="1">mt:</mt:setVarBlock>!
!
<mt:setVarBlock name="search2">/</lz:/g</mt:setVarBlock>!
<mt:setVarBlock name="replace2"><</mt:setVarBlock>!
<mt:setVarBlock name="replace2" append="1">/mt:</mt:setVarBlock>!
!
<mt:Unless regex_replace="$search1","$replace1"!
regex_replace="$search2","$replace2" mteval="1">!
!
<lz:Entries <mt:If name="want_filter">field:foo="1"</mt:if>>!
<lz:If name="__first__"><ul></lz:If>!
<li><lz:EntryTitle></li>!
<lz:If name="__last__"></ul></lz:If>!
</lz:Entries>!
</mt:Unless>
テンプレート2
やはりお前らのMTMLは間違っている!
こういうのをTipsとかテクニックとか⾔うな!
どこが間違っているのか
✴ 管理画⾯のテンプレート検索で⽬的の箇所がヒッ
トしない
✴ decode_html のパターンでは、HTML(デザイン)
の修正時に修正が困難
✴ やりすぎると⾒通しが悪くなる
✴ replace のパターンでは⽂字列「<lz:」「</lz:」
がブロック内の出⼒結果に含まれていないかど
うかを考慮しておく必要がある
<mt:getElementById id="tmpl_entries" setvar="tmpl_entries">!
<mt:removeAttribute name="id" node="tmpl_entries">!
!
<mt:If name="want_filter">!
<mt:setAttribute node="tmpl_entries" attr="field.foo","1">!
</mt:If>!
!
<mt:Entries id="tmpl_entries">!
...!
</mt:Entries>!
テンプレート3
たいへんよくできました!
Tips, Q&Aとか
mt:Includeのblog_idに変数を使うのは?
<mt:Include module="HTMLヘッダー" blog_id="$blog_id">
こう書きたい理由は? 開発環境と本番環境でblog_idが違う?
<mt:If name="config.IsProduction">!
<mt:Include module="HTMLヘッダー" blog_id="2">!
<mt:Else>!
<mt:Include module="HTMLヘッダー" blog_id="$blog_id">!
</mt:If>!
もしくは
<mt:Unless name="config.IsProduction">!
<mt:GetElementById id="html_header" setvar="html_header">!
<mt:SetAttribute node="html_header" attributes=„blog_id","$blog_id">!
</mt:Unless>!
<mt:Include module="HTMLヘッダー" blog_id="2" id="html_header">!
コメントはどこに⼊れたらいい?
(本⽇2度⽬)コメントは利⽤時点こそ重要
<mt:Include module="共通変数">!
!
<mt:If name="some_condition" eq="1"!
note="会員属性が通常会員の時">!
# do something.!
</mt:If>!
コメントはどこに⼊れたらいい?
<mt:Ignore>第1条件</mt:Ignore>!
<mtSetvar name="ad_attr" function="push" value="area" note="地域">!
<mtSetvar name="add_condition" function="push" value="STREQ" note="等しい">!
<mtSetvar name="values" function="push" value="江東区" note="江東区">!
!
<mt:Ignore>第2条件</mt:Ignore>!
<mtSetvar name="ad_attr" function="push" value="station" note="駅">!
<mtSetvar name="add_condition" function="push" value="STRINC" note="含む">!
<mtSetvar name="values" function="push" value="森下" note="森下">!
!
<mt:EstraierSearch !
ad_attr="$ad_attr" add_condition="$add_condition" values="$values">!
# do something.!
</mt:EstraierSearch>
存在しないモディファイアは無視される
コメントはどこに⼊れたらいい?
https://github.com/alfasado/mt-plugin-template-note
MTEntriesとMTPagesを共通化したい
<mt:If name="archive_type" eq="Individual">!
<mt:Entries>!
<mt:SetHashVars name="cols">!
title=<mt:EntryTitle>!
excerpt=<mt:EntryExcerpt>!
date=<mt:EntryDate>!
permalink=<mt:EntryPermalink>!
</mt:SetHashVars>!
<mt:SetVar name="entries"!
function="push" key="$__counter__" value="$cols">!
</mt:Entries>!
<mt:Elseif name="archive_type" eq="Page">!
<mt:Pages>!
<mt:SetHashVars name="cols">!
title=<mt:PageTitle>!
excerpt=<mt:PageExcerpt>!
date=<mt:PageDate>!
permalink=<mt:PagePermalink>!
</mt:SetHashVars>!
<mt:SetVar name="entries"!
function="push" key="$__counter__" value="$cols">!
</mt:Pages>!
</mt:If>!
<mt:Loop name="entries">!
# do something.!
</mt:Loop>
MTEntriesとMTPagesを共通化したい
<mt:If name="archive_type" eq="Individual">!
<mt:SetVar name="class_type" value="entry">!
<mt:Elseif name="archive_type" eq="Page">!
<mt:SetVar name="class_type" value="page">!
</mt:If>!
!
<mt:Entries class_type="$class_type">!
#do something.!
</mt:Entries>
http://www.movabletype.jp/documentation/appendices/tags/entries.html
最後に、絶対にやってはいけないこと
<mt:Var name="request.foo">
※Dynamicもしくは cgiアプリで
<mt:Var name="request.foo" escape="html">
?foo=<script>alert()</script>
まとめ
✴ MTのテンプレート変数はグローバル変数であることを
頭に置いておけ。
✴ ロジックとビューをできるだけ分けろ。
✴ コメント重要、どこにどう⼊れるかが問題。
✴ プラグインを怖がるな。作れなくても誰かが作ってく
れるかもしれない。
✴ リクエストはただ。本家でもMTQでもアルファサード
でも。リクエストもコミュニティへの貢献。
✴ ユーザーの⼊⼒値は必ずエスケープせよ。

Mais conteúdo relacionado

Mais procurados

Building a modern Application with DataFrames
Building a modern Application with DataFramesBuilding a modern Application with DataFrames
Building a modern Application with DataFramesDatabricks
 
【学会発表】LDAにおけるベイズ汎化誤差の厳密な漸近形【IBIS2020】
【学会発表】LDAにおけるベイズ汎化誤差の厳密な漸近形【IBIS2020】【学会発表】LDAにおけるベイズ汎化誤差の厳密な漸近形【IBIS2020】
【学会発表】LDAにおけるベイズ汎化誤差の厳密な漸近形【IBIS2020】Naoki Hayashi
 
C++と仲良くなるためのn問 ~ポインタ編~ #ladiescpp
C++と仲良くなるためのn問 ~ポインタ編~ #ladiescppC++と仲良くなるためのn問 ~ポインタ編~ #ladiescpp
C++と仲良くなるためのn問 ~ポインタ編~ #ladiescppcocodrips
 
Unidad 2.3 Prueba De Programas
Unidad 2.3 Prueba De ProgramasUnidad 2.3 Prueba De Programas
Unidad 2.3 Prueba De ProgramasSergio Sanchez
 
単純ベイズ法による異常検知 #ml-professional
単純ベイズ法による異常検知  #ml-professional単純ベイズ法による異常検知  #ml-professional
単純ベイズ法による異常検知 #ml-professionalAi Makabi
 
アパレル業界の販売予測をフーリエ解析を用いてやってみました
アパレル業界の販売予測をフーリエ解析を用いてやってみましたアパレル業界の販売予測をフーリエ解析を用いてやってみました
アパレル業界の販売予測をフーリエ解析を用いてやってみましたTakahiro Yoshizawa
 
TDDワークショップ(第2回)
TDDワークショップ(第2回)TDDワークショップ(第2回)
TDDワークショップ(第2回)Yoshihiro Furukawa
 
これから Haskell を書くにあたって
これから Haskell を書くにあたってこれから Haskell を書くにあたって
これから Haskell を書くにあたってTsuyoshi Matsudate
 
Clean Code Principles
Clean Code PrinciplesClean Code Principles
Clean Code PrinciplesYeurDreamin'
 
コードゴルフのススメ(C言語)
コードゴルフのススメ(C言語)コードゴルフのススメ(C言語)
コードゴルフのススメ(C言語)Fumihito Yokoyama
 
競技プログラミングのためのC++入門
競技プログラミングのためのC++入門競技プログラミングのためのC++入門
競技プログラミングのためのC++入門natrium11321
 
Dummiesパッケージ
DummiesパッケージDummiesパッケージ
Dummiesパッケージweda654
 
Kaggle Avito Demand Prediction Challenge 9th Place Solution
Kaggle Avito Demand Prediction Challenge 9th Place SolutionKaggle Avito Demand Prediction Challenge 9th Place Solution
Kaggle Avito Demand Prediction Challenge 9th Place SolutionJin Zhan
 
Effective Modern C++ 勉強会#3 Item16
Effective Modern C++ 勉強会#3 Item16Effective Modern C++ 勉強会#3 Item16
Effective Modern C++ 勉強会#3 Item16Mitsuru Kariya
 
yieldとreturnの話
yieldとreturnの話yieldとreturnの話
yieldとreturnの話bleis tift
 
第5章混合分布モデルによる逐次更新型異常検知
第5章混合分布モデルによる逐次更新型異常検知第5章混合分布モデルによる逐次更新型異常検知
第5章混合分布モデルによる逐次更新型異常検知Tetsuma Tada
 
Ekmett勉強会発表資料
Ekmett勉強会発表資料Ekmett勉強会発表資料
Ekmett勉強会発表資料時響 逢坂
 

Mais procurados (20)

C++の黒魔術
C++の黒魔術C++の黒魔術
C++の黒魔術
 
Building a modern Application with DataFrames
Building a modern Application with DataFramesBuilding a modern Application with DataFrames
Building a modern Application with DataFrames
 
【学会発表】LDAにおけるベイズ汎化誤差の厳密な漸近形【IBIS2020】
【学会発表】LDAにおけるベイズ汎化誤差の厳密な漸近形【IBIS2020】【学会発表】LDAにおけるベイズ汎化誤差の厳密な漸近形【IBIS2020】
【学会発表】LDAにおけるベイズ汎化誤差の厳密な漸近形【IBIS2020】
 
C++と仲良くなるためのn問 ~ポインタ編~ #ladiescpp
C++と仲良くなるためのn問 ~ポインタ編~ #ladiescppC++と仲良くなるためのn問 ~ポインタ編~ #ladiescpp
C++と仲良くなるためのn問 ~ポインタ編~ #ladiescpp
 
Unidad 2.3 Prueba De Programas
Unidad 2.3 Prueba De ProgramasUnidad 2.3 Prueba De Programas
Unidad 2.3 Prueba De Programas
 
単純ベイズ法による異常検知 #ml-professional
単純ベイズ法による異常検知  #ml-professional単純ベイズ法による異常検知  #ml-professional
単純ベイズ法による異常検知 #ml-professional
 
アパレル業界の販売予測をフーリエ解析を用いてやってみました
アパレル業界の販売予測をフーリエ解析を用いてやってみましたアパレル業界の販売予測をフーリエ解析を用いてやってみました
アパレル業界の販売予測をフーリエ解析を用いてやってみました
 
More modern gpu
More modern gpuMore modern gpu
More modern gpu
 
TDDワークショップ(第2回)
TDDワークショップ(第2回)TDDワークショップ(第2回)
TDDワークショップ(第2回)
 
prml4.1.3-4.1.4
prml4.1.3-4.1.4prml4.1.3-4.1.4
prml4.1.3-4.1.4
 
これから Haskell を書くにあたって
これから Haskell を書くにあたってこれから Haskell を書くにあたって
これから Haskell を書くにあたって
 
Clean Code Principles
Clean Code PrinciplesClean Code Principles
Clean Code Principles
 
コードゴルフのススメ(C言語)
コードゴルフのススメ(C言語)コードゴルフのススメ(C言語)
コードゴルフのススメ(C言語)
 
競技プログラミングのためのC++入門
競技プログラミングのためのC++入門競技プログラミングのためのC++入門
競技プログラミングのためのC++入門
 
Dummiesパッケージ
DummiesパッケージDummiesパッケージ
Dummiesパッケージ
 
Kaggle Avito Demand Prediction Challenge 9th Place Solution
Kaggle Avito Demand Prediction Challenge 9th Place SolutionKaggle Avito Demand Prediction Challenge 9th Place Solution
Kaggle Avito Demand Prediction Challenge 9th Place Solution
 
Effective Modern C++ 勉強会#3 Item16
Effective Modern C++ 勉強会#3 Item16Effective Modern C++ 勉強会#3 Item16
Effective Modern C++ 勉強会#3 Item16
 
yieldとreturnの話
yieldとreturnの話yieldとreturnの話
yieldとreturnの話
 
第5章混合分布モデルによる逐次更新型異常検知
第5章混合分布モデルによる逐次更新型異常検知第5章混合分布モデルによる逐次更新型異常検知
第5章混合分布モデルによる逐次更新型異常検知
 
Ekmett勉強会発表資料
Ekmett勉強会発表資料Ekmett勉強会発表資料
Ekmett勉強会発表資料
 

Destaque

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!純生 野田
 
プロ用CMSフレームワークテーマ「echo」のご紹介
プロ用CMSフレームワークテーマ「echo」のご紹介プロ用CMSフレームワークテーマ「echo」のご紹介
プロ用CMSフレームワークテーマ「echo」のご紹介Seiko Kuchida
 
MTを使った巨大トラフィックの捌き方
MTを使った巨大トラフィックの捌き方MTを使った巨大トラフィックの捌き方
MTを使った巨大トラフィックの捌き方Koji Ogata
 
Web制作の幅が広がる! プロジェクトの傾向から考える、 2つ目•3つ目のCMS選び
Web制作の幅が広がる! プロジェクトの傾向から考える、 2つ目•3つ目のCMS選びWeb制作の幅が広がる! プロジェクトの傾向から考える、 2つ目•3つ目のCMS選び
Web制作の幅が広がる! プロジェクトの傾向から考える、 2つ目•3つ目のCMS選びSeiko Kuchida
 
Movable Type Meetup JSON - MTDDC Meetup TOKYO 2014
Movable Type Meetup JSON - MTDDC Meetup TOKYO 2014Movable Type Meetup JSON - MTDDC Meetup TOKYO 2014
Movable Type Meetup JSON - MTDDC Meetup TOKYO 2014bitpart
 
MovableTypeの実務制作で考慮すること
MovableTypeの実務制作で考慮することMovableTypeの実務制作で考慮すること
MovableTypeの実務制作で考慮することSeiko Kuchida
 
Color Testerはどうやって文字の色を拾っているのか?
Color Testerはどうやって文字の色を拾っているのか?Color Testerはどうやって文字の色を拾っているのか?
Color Testerはどうやって文字の色を拾っているのか?純生 野田
 
MTのダイナミック処理(PHP)を高速化する@サーバーサイドスクリプティング
MTのダイナミック処理(PHP)を高速化する@サーバーサイドスクリプティングMTのダイナミック処理(PHP)を高速化する@サーバーサイドスクリプティング
MTのダイナミック処理(PHP)を高速化する@サーバーサイドスクリプティング純生 野田
 
Movable Type for AWS - JAWS-UG 沖縄 CMS祭り!
Movable Type for AWS - JAWS-UG 沖縄 CMS祭り!Movable Type for AWS - JAWS-UG 沖縄 CMS祭り!
Movable Type for AWS - JAWS-UG 沖縄 CMS祭り!Yuji Takayama
 
ディレクターからみたMovable Type + PowerCMSの優位性
ディレクターからみたMovable Type + PowerCMSの優位性ディレクターからみたMovable Type + PowerCMSの優位性
ディレクターからみたMovable Type + PowerCMSの優位性Renji Yoneda
 
UXD-based Biz Development / ユーザエクスペリエンスデザインをベースにした事業創造のススメ
UXD-based Biz Development / ユーザエクスペリエンスデザインをベースにした事業創造のススメUXD-based Biz Development / ユーザエクスペリエンスデザインをベースにした事業創造のススメ
UXD-based Biz Development / ユーザエクスペリエンスデザインをベースにした事業創造のススメHiroyuki Arai
 
Webアクセシビリティが無視されすぎで気にくわない。
Webアクセシビリティが無視されすぎで気にくわない。Webアクセシビリティが無視されすぎで気にくわない。
Webアクセシビリティが無視されすぎで気にくわない。uenoyuuki
 
「UXデザインと組織論」に、正面から向きあってみた:2016年2月27日 『人間中心デザイン』HCD導入設計論
「UXデザインと組織論」に、正面から向きあってみた:2016年2月27日 『人間中心デザイン』HCD導入設計論「UXデザインと組織論」に、正面から向きあってみた:2016年2月27日 『人間中心デザイン』HCD導入設計論
「UXデザインと組織論」に、正面から向きあってみた:2016年2月27日 『人間中心デザイン』HCD導入設計論Yoshiki Hayama
 
UIデザインは誰のもの?
UIデザインは誰のもの?UIデザインは誰のもの?
UIデザインは誰のもの?GMO Pepabo, Inc.
 
YAPC::Kansai 2017 - macOSネイティブアプリ作成におけるPerlの活用
YAPC::Kansai 2017 - macOSネイティブアプリ作成におけるPerlの活用YAPC::Kansai 2017 - macOSネイティブアプリ作成におけるPerlの活用
YAPC::Kansai 2017 - macOSネイティブアプリ作成におけるPerlの活用純生 野田
 
アプリを生み出す現場でUI/UXデザイナーが意識するべきこと:RoomClip
アプリを生み出す現場でUI/UXデザイナーが意識するべきこと:RoomClipアプリを生み出す現場でUI/UXデザイナーが意識するべきこと:RoomClip
アプリを生み出す現場でUI/UXデザイナーが意識するべきこと:RoomCliptakaaya
 
Astah Community スタートガイド
Astah Community スタートガイドAstah Community スタートガイド
Astah Community スタートガイドChangeVision
 
Memcachedの仕組みと設定
Memcachedの仕組みと設定Memcachedの仕組みと設定
Memcachedの仕組みと設定Tatsuya Akashi
 

Destaque (19)

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!
 
プロ用CMSフレームワークテーマ「echo」のご紹介
プロ用CMSフレームワークテーマ「echo」のご紹介プロ用CMSフレームワークテーマ「echo」のご紹介
プロ用CMSフレームワークテーマ「echo」のご紹介
 
MTを使った巨大トラフィックの捌き方
MTを使った巨大トラフィックの捌き方MTを使った巨大トラフィックの捌き方
MTを使った巨大トラフィックの捌き方
 
Web制作の幅が広がる! プロジェクトの傾向から考える、 2つ目•3つ目のCMS選び
Web制作の幅が広がる! プロジェクトの傾向から考える、 2つ目•3つ目のCMS選びWeb制作の幅が広がる! プロジェクトの傾向から考える、 2つ目•3つ目のCMS選び
Web制作の幅が広がる! プロジェクトの傾向から考える、 2つ目•3つ目のCMS選び
 
Movable Type Meetup JSON - MTDDC Meetup TOKYO 2014
Movable Type Meetup JSON - MTDDC Meetup TOKYO 2014Movable Type Meetup JSON - MTDDC Meetup TOKYO 2014
Movable Type Meetup JSON - MTDDC Meetup TOKYO 2014
 
MovableTypeの実務制作で考慮すること
MovableTypeの実務制作で考慮することMovableTypeの実務制作で考慮すること
MovableTypeの実務制作で考慮すること
 
Color Testerはどうやって文字の色を拾っているのか?
Color Testerはどうやって文字の色を拾っているのか?Color Testerはどうやって文字の色を拾っているのか?
Color Testerはどうやって文字の色を拾っているのか?
 
MTのダイナミック処理(PHP)を高速化する@サーバーサイドスクリプティング
MTのダイナミック処理(PHP)を高速化する@サーバーサイドスクリプティングMTのダイナミック処理(PHP)を高速化する@サーバーサイドスクリプティング
MTのダイナミック処理(PHP)を高速化する@サーバーサイドスクリプティング
 
Movable Type for AWS - JAWS-UG 沖縄 CMS祭り!
Movable Type for AWS - JAWS-UG 沖縄 CMS祭り!Movable Type for AWS - JAWS-UG 沖縄 CMS祭り!
Movable Type for AWS - JAWS-UG 沖縄 CMS祭り!
 
ディレクターからみたMovable Type + PowerCMSの優位性
ディレクターからみたMovable Type + PowerCMSの優位性ディレクターからみたMovable Type + PowerCMSの優位性
ディレクターからみたMovable Type + PowerCMSの優位性
 
UXD-based Biz Development / ユーザエクスペリエンスデザインをベースにした事業創造のススメ
UXD-based Biz Development / ユーザエクスペリエンスデザインをベースにした事業創造のススメUXD-based Biz Development / ユーザエクスペリエンスデザインをベースにした事業創造のススメ
UXD-based Biz Development / ユーザエクスペリエンスデザインをベースにした事業創造のススメ
 
Webアクセシビリティが無視されすぎで気にくわない。
Webアクセシビリティが無視されすぎで気にくわない。Webアクセシビリティが無視されすぎで気にくわない。
Webアクセシビリティが無視されすぎで気にくわない。
 
「UXデザインと組織論」に、正面から向きあってみた:2016年2月27日 『人間中心デザイン』HCD導入設計論
「UXデザインと組織論」に、正面から向きあってみた:2016年2月27日 『人間中心デザイン』HCD導入設計論「UXデザインと組織論」に、正面から向きあってみた:2016年2月27日 『人間中心デザイン』HCD導入設計論
「UXデザインと組織論」に、正面から向きあってみた:2016年2月27日 『人間中心デザイン』HCD導入設計論
 
UIデザインは誰のもの?
UIデザインは誰のもの?UIデザインは誰のもの?
UIデザインは誰のもの?
 
YAPC::Kansai 2017 - macOSネイティブアプリ作成におけるPerlの活用
YAPC::Kansai 2017 - macOSネイティブアプリ作成におけるPerlの活用YAPC::Kansai 2017 - macOSネイティブアプリ作成におけるPerlの活用
YAPC::Kansai 2017 - macOSネイティブアプリ作成におけるPerlの活用
 
アプリを生み出す現場でUI/UXデザイナーが意識するべきこと:RoomClip
アプリを生み出す現場でUI/UXデザイナーが意識するべきこと:RoomClipアプリを生み出す現場でUI/UXデザイナーが意識するべきこと:RoomClip
アプリを生み出す現場でUI/UXデザイナーが意識するべきこと:RoomClip
 
Astah Community スタートガイド
Astah Community スタートガイドAstah Community スタートガイド
Astah Community スタートガイド
 
UXとブランド
UXとブランドUXとブランド
UXとブランド
 
Memcachedの仕組みと設定
Memcachedの仕組みと設定Memcachedの仕組みと設定
Memcachedの仕組みと設定
 

Semelhante a やはりお前らのMTMLは間違っている!

MT meets PHP - PHP conference Kansai 2013
MT meets PHP - PHP conference Kansai 2013MT meets PHP - PHP conference Kansai 2013
MT meets PHP - PHP conference Kansai 2013純生 野田
 
ディレクター・ノンプログラマー目線のMovable Type
ディレクター・ノンプログラマー目線のMovable Typeディレクター・ノンプログラマー目線のMovable Type
ディレクター・ノンプログラマー目線のMovable TypeYasufumi Nishiyama
 
20160610 mtsaga handson_public
20160610 mtsaga handson_public20160610 mtsaga handson_public
20160610 mtsaga handson_publicSix Apart
 
ブログメディアにおけるData APIの活用について
ブログメディアにおけるData APIの活用についてブログメディアにおけるData APIの活用について
ブログメディアにおけるData APIの活用についてHatsuhito UENO
 
初めてのMT plugin
初めてのMT plugin初めてのMT plugin
初めてのMT pluginonagatani
 
CSS Nite in Matsuyama vol.1 - session 4
CSS Nite in Matsuyama vol.1 - session 4 CSS Nite in Matsuyama vol.1 - session 4
CSS Nite in Matsuyama vol.1 - session 4 arisu yano
 
【SQLインジェクション対策】徳丸先生に怒られない、動的SQLの安全な組み立て方
【SQLインジェクション対策】徳丸先生に怒られない、動的SQLの安全な組み立て方【SQLインジェクション対策】徳丸先生に怒られない、動的SQLの安全な組み立て方
【SQLインジェクション対策】徳丸先生に怒られない、動的SQLの安全な組み立て方kwatch
 
プラグイン作者脳になろう ~実案件で学ぶプラグイン開発フロー~
プラグイン作者脳になろう ~実案件で学ぶプラグイン開発フロー~プラグイン作者脳になろう ~実案件で学ぶプラグイン開発フロー~
プラグイン作者脳になろう ~実案件で学ぶプラグイン開発フロー~Takeuchi Yuichi
 
LDD'12/Summer in KITAMI Opening Slide
LDD'12/Summer in KITAMI Opening SlideLDD'12/Summer in KITAMI Opening Slide
LDD'12/Summer in KITAMI Opening Slideohotech
 
ザ・ドキュメント~うまくいかないNoSQL~
ザ・ドキュメント~うまくいかないNoSQL~ザ・ドキュメント~うまくいかないNoSQL~
ザ・ドキュメント~うまくいかないNoSQL~Akihiro Kuwano
 

Semelhante a やはりお前らのMTMLは間違っている! (12)

MT meets PHP
MT meets PHPMT meets PHP
MT meets PHP
 
MT meets PHP - PHP conference Kansai 2013
MT meets PHP - PHP conference Kansai 2013MT meets PHP - PHP conference Kansai 2013
MT meets PHP - PHP conference Kansai 2013
 
Inside Movable Type
Inside Movable TypeInside Movable Type
Inside Movable Type
 
ディレクター・ノンプログラマー目線のMovable Type
ディレクター・ノンプログラマー目線のMovable Typeディレクター・ノンプログラマー目線のMovable Type
ディレクター・ノンプログラマー目線のMovable Type
 
20160610 mtsaga handson_public
20160610 mtsaga handson_public20160610 mtsaga handson_public
20160610 mtsaga handson_public
 
ブログメディアにおけるData APIの活用について
ブログメディアにおけるData APIの活用についてブログメディアにおけるData APIの活用について
ブログメディアにおけるData APIの活用について
 
初めてのMT plugin
初めてのMT plugin初めてのMT plugin
初めてのMT plugin
 
CSS Nite in Matsuyama vol.1 - session 4
CSS Nite in Matsuyama vol.1 - session 4 CSS Nite in Matsuyama vol.1 - session 4
CSS Nite in Matsuyama vol.1 - session 4
 
【SQLインジェクション対策】徳丸先生に怒られない、動的SQLの安全な組み立て方
【SQLインジェクション対策】徳丸先生に怒られない、動的SQLの安全な組み立て方【SQLインジェクション対策】徳丸先生に怒られない、動的SQLの安全な組み立て方
【SQLインジェクション対策】徳丸先生に怒られない、動的SQLの安全な組み立て方
 
プラグイン作者脳になろう ~実案件で学ぶプラグイン開発フロー~
プラグイン作者脳になろう ~実案件で学ぶプラグイン開発フロー~プラグイン作者脳になろう ~実案件で学ぶプラグイン開発フロー~
プラグイン作者脳になろう ~実案件で学ぶプラグイン開発フロー~
 
LDD'12/Summer in KITAMI Opening Slide
LDD'12/Summer in KITAMI Opening SlideLDD'12/Summer in KITAMI Opening Slide
LDD'12/Summer in KITAMI Opening Slide
 
ザ・ドキュメント~うまくいかないNoSQL~
ザ・ドキュメント~うまくいかないNoSQL~ザ・ドキュメント~うまくいかないNoSQL~
ザ・ドキュメント~うまくいかないNoSQL~
 

Mais de 純生 野田

アクセシビリティで企業価値を高める、小さな会社の戦い方
アクセシビリティで企業価値を高める、小さな会社の戦い方アクセシビリティで企業価値を高める、小さな会社の戦い方
アクセシビリティで企業価値を高める、小さな会社の戦い方純生 野田
 
次世代版 PowerCMS 開発プロジェクトのご紹介
次世代版 PowerCMS 開発プロジェクトのご紹介次世代版 PowerCMS 開発プロジェクトのご紹介
次世代版 PowerCMS 開発プロジェクトのご紹介純生 野田
 
アルファサード株式会社はなぜ アクセシビリティに取り組むのか
アルファサード株式会社はなぜ アクセシビリティに取り組むのかアルファサード株式会社はなぜ アクセシビリティに取り組むのか
アルファサード株式会社はなぜ アクセシビリティに取り組むのか純生 野田
 
オーサリングツールとしてのCMSとWebアクセシビリティ
オーサリングツールとしてのCMSとWebアクセシビリティオーサリングツールとしてのCMSとWebアクセシビリティ
オーサリングツールとしてのCMSとWebアクセシビリティ純生 野田
 
ウェブアクセシビリティチェックツール開発者の頭ん中
ウェブアクセシビリティチェックツール開発者の頭ん中ウェブアクセシビリティチェックツール開発者の頭ん中
ウェブアクセシビリティチェックツール開発者の頭ん中純生 野田
 
PowerCMS 8341 のご紹介
PowerCMS 8341 のご紹介PowerCMS 8341 のご紹介
PowerCMS 8341 のご紹介純生 野田
 
SEOの本質から考える PowerCMSを活用した 検索エンジン最適化
SEOの本質から考える PowerCMSを活用した 検索エンジン最適化SEOの本質から考える PowerCMSを活用した 検索エンジン最適化
SEOの本質から考える PowerCMSを活用した 検索エンジン最適化純生 野田
 
MTで学ぶセキュアプログラミング@MT Tokyo
MTで学ぶセキュアプログラミング@MT TokyoMTで学ぶセキュアプログラミング@MT Tokyo
MTで学ぶセキュアプログラミング@MT Tokyo純生 野田
 
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 勉強会)純生 野田
 
mt-plugin-mt-translate - MTDDC
mt-plugin-mt-translate - MTDDCmt-plugin-mt-translate - MTDDC
mt-plugin-mt-translate - MTDDC純生 野田
 
SixApart Day 2011/第28回WebSig会議 Lightning Talk
SixApart Day 2011/第28回WebSig会議 Lightning TalkSixApart Day 2011/第28回WebSig会議 Lightning Talk
SixApart Day 2011/第28回WebSig会議 Lightning Talk純生 野田
 

Mais de 純生 野田 (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
 
アルファサード株式会社はなぜ アクセシビリティに取り組むのか
アルファサード株式会社はなぜ アクセシビリティに取り組むのかアルファサード株式会社はなぜ アクセシビリティに取り組むのか
アルファサード株式会社はなぜ アクセシビリティに取り組むのか
 
About PowerCMS4.3
About PowerCMS4.3About PowerCMS4.3
About PowerCMS4.3
 
オーサリングツールとしてのCMSとWebアクセシビリティ
オーサリングツールとしてのCMSとWebアクセシビリティオーサリングツールとしてのCMSとWebアクセシビリティ
オーサリングツールとしてのCMSとWebアクセシビリティ
 
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 のご紹介
 
SEOの本質から考える PowerCMSを活用した 検索エンジン最適化
SEOの本質から考える PowerCMSを活用した 検索エンジン最適化SEOの本質から考える PowerCMSを活用した 検索エンジン最適化
SEOの本質から考える PowerCMSを活用した 検索エンジン最適化
 
MTで学ぶセキュアプログラミング@MT Tokyo
MTで学ぶセキュアプログラミング@MT TokyoMTで学ぶセキュアプログラミング@MT Tokyo
MTで学ぶセキュアプログラミング@MT Tokyo
 
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
 
mt-plugin-mt-translate - MTDDC
mt-plugin-mt-translate - MTDDCmt-plugin-mt-translate - MTDDC
mt-plugin-mt-translate - MTDDC
 
PowerCMS Social
PowerCMS SocialPowerCMS Social
PowerCMS Social
 
SixApart Day 2011/第28回WebSig会議 Lightning Talk
SixApart Day 2011/第28回WebSig会議 Lightning TalkSixApart Day 2011/第28回WebSig会議 Lightning Talk
SixApart Day 2011/第28回WebSig会議 Lightning Talk
 

Último

「今からでも間に合う」GPTsによる 活用LT会 - 人とAIが協調するHumani-in-the-Loopへ
「今からでも間に合う」GPTsによる 活用LT会 - 人とAIが協調するHumani-in-the-Loopへ「今からでも間に合う」GPTsによる 活用LT会 - 人とAIが協調するHumani-in-the-Loopへ
「今からでも間に合う」GPTsによる 活用LT会 - 人とAIが協調するHumani-in-the-LoopへTetsuya Nihonmatsu
 
IFIP IP3での資格制度を対象とする国際認定(IPSJ86全国大会シンポジウム)
IFIP IP3での資格制度を対象とする国際認定(IPSJ86全国大会シンポジウム)IFIP IP3での資格制度を対象とする国際認定(IPSJ86全国大会シンポジウム)
IFIP IP3での資格制度を対象とする国際認定(IPSJ86全国大会シンポジウム)ssuser539845
 
情報処理学会86回全国大会_Generic OAMをDeep Learning技術によって実現するための課題と解決方法
情報処理学会86回全国大会_Generic OAMをDeep Learning技術によって実現するための課題と解決方法情報処理学会86回全国大会_Generic OAMをDeep Learning技術によって実現するための課題と解決方法
情報処理学会86回全国大会_Generic OAMをDeep Learning技術によって実現するための課題と解決方法ssuser370dd7
 
20240326_IoTLT_vol109_kitazaki_v1___.pdf
20240326_IoTLT_vol109_kitazaki_v1___.pdf20240326_IoTLT_vol109_kitazaki_v1___.pdf
20240326_IoTLT_vol109_kitazaki_v1___.pdfAyachika Kitazaki
 
2024 02 Nihon-Tanken ~Towards a More Inclusive Japan~
2024 02 Nihon-Tanken ~Towards a More Inclusive Japan~2024 02 Nihon-Tanken ~Towards a More Inclusive Japan~
2024 02 Nihon-Tanken ~Towards a More Inclusive Japan~arts yokohama
 
2024 01 Virtual_Counselor
2024 01 Virtual_Counselor 2024 01 Virtual_Counselor
2024 01 Virtual_Counselor arts yokohama
 
TaketoFujikawa_台本中の動作表現に基づくアニメーション原画システムの提案_SIGEC71.pdf
TaketoFujikawa_台本中の動作表現に基づくアニメーション原画システムの提案_SIGEC71.pdfTaketoFujikawa_台本中の動作表現に基づくアニメーション原画システムの提案_SIGEC71.pdf
TaketoFujikawa_台本中の動作表現に基づくアニメーション原画システムの提案_SIGEC71.pdfMatsushita Laboratory
 
持続可能なDrupal Meetupのコツ - Drupal Meetup Tokyoの知見
持続可能なDrupal Meetupのコツ - Drupal Meetup Tokyoの知見持続可能なDrupal Meetupのコツ - Drupal Meetup Tokyoの知見
持続可能なDrupal Meetupのコツ - Drupal Meetup Tokyoの知見Shumpei Kishi
 
ARスタートアップOnePlanetの Apple Vision Proへの情熱と挑戦
ARスタートアップOnePlanetの Apple Vision Proへの情熱と挑戦ARスタートアップOnePlanetの Apple Vision Proへの情熱と挑戦
ARスタートアップOnePlanetの Apple Vision Proへの情熱と挑戦Sadao Tokuyama
 

Último (12)

2024 03 CTEA
2024 03 CTEA2024 03 CTEA
2024 03 CTEA
 
「今からでも間に合う」GPTsによる 活用LT会 - 人とAIが協調するHumani-in-the-Loopへ
「今からでも間に合う」GPTsによる 活用LT会 - 人とAIが協調するHumani-in-the-Loopへ「今からでも間に合う」GPTsによる 活用LT会 - 人とAIが協調するHumani-in-the-Loopへ
「今からでも間に合う」GPTsによる 活用LT会 - 人とAIが協調するHumani-in-the-Loopへ
 
2024 04 minnanoito
2024 04 minnanoito2024 04 minnanoito
2024 04 minnanoito
 
IFIP IP3での資格制度を対象とする国際認定(IPSJ86全国大会シンポジウム)
IFIP IP3での資格制度を対象とする国際認定(IPSJ86全国大会シンポジウム)IFIP IP3での資格制度を対象とする国際認定(IPSJ86全国大会シンポジウム)
IFIP IP3での資格制度を対象とする国際認定(IPSJ86全国大会シンポジウム)
 
情報処理学会86回全国大会_Generic OAMをDeep Learning技術によって実現するための課題と解決方法
情報処理学会86回全国大会_Generic OAMをDeep Learning技術によって実現するための課題と解決方法情報処理学会86回全国大会_Generic OAMをDeep Learning技術によって実現するための課題と解決方法
情報処理学会86回全国大会_Generic OAMをDeep Learning技術によって実現するための課題と解決方法
 
20240326_IoTLT_vol109_kitazaki_v1___.pdf
20240326_IoTLT_vol109_kitazaki_v1___.pdf20240326_IoTLT_vol109_kitazaki_v1___.pdf
20240326_IoTLT_vol109_kitazaki_v1___.pdf
 
2024 02 Nihon-Tanken ~Towards a More Inclusive Japan~
2024 02 Nihon-Tanken ~Towards a More Inclusive Japan~2024 02 Nihon-Tanken ~Towards a More Inclusive Japan~
2024 02 Nihon-Tanken ~Towards a More Inclusive Japan~
 
What is the world where you can make your own semiconductors?
What is the world where you can make your own semiconductors?What is the world where you can make your own semiconductors?
What is the world where you can make your own semiconductors?
 
2024 01 Virtual_Counselor
2024 01 Virtual_Counselor 2024 01 Virtual_Counselor
2024 01 Virtual_Counselor
 
TaketoFujikawa_台本中の動作表現に基づくアニメーション原画システムの提案_SIGEC71.pdf
TaketoFujikawa_台本中の動作表現に基づくアニメーション原画システムの提案_SIGEC71.pdfTaketoFujikawa_台本中の動作表現に基づくアニメーション原画システムの提案_SIGEC71.pdf
TaketoFujikawa_台本中の動作表現に基づくアニメーション原画システムの提案_SIGEC71.pdf
 
持続可能なDrupal Meetupのコツ - Drupal Meetup Tokyoの知見
持続可能なDrupal Meetupのコツ - Drupal Meetup Tokyoの知見持続可能なDrupal Meetupのコツ - Drupal Meetup Tokyoの知見
持続可能なDrupal Meetupのコツ - Drupal Meetup Tokyoの知見
 
ARスタートアップOnePlanetの Apple Vision Proへの情熱と挑戦
ARスタートアップOnePlanetの Apple Vision Proへの情熱と挑戦ARスタートアップOnePlanetの Apple Vision Proへの情熱と挑戦
ARスタートアップOnePlanetの Apple Vision Proへの情熱と挑戦
 

やはりお前らのMTMLは間違っている!