MovableTypeの最近のブログ記事
昨日、行ってきました。明治記念館は、いつ行ってもいいですねぇ~。
そこで、大々的なパーティがありました。
私が唯一自慢できるのは、抽選による参加者300名に送られる招待券が1番だったこと!
しかし、ここで運を使い果たしたのか、WebPremieumがあたるAdobe賞には、はずれました(笑)
まあ、これは自分でアップグレード版を買うとして。
さて、会場では、いろんな方を目にしました。中でも、春に「Movable Type プロフェッショナル・スタイル」を執筆された執筆陣を多くみつけたり、かなり久しぶりに会ったら、会社が変っていたり(笑)

#春に出たMT本では、私の役割は「テクニカルレビュワー」でした。
そして、突然顔を見たので、挨拶できない方もいましたが、こういうお祭りは良いですねぇ。MMKKのUCONのイベント以来だと思いました。
プレゼントは、抽選でもよいけど、じゃんけん大会の方が、盛り上がるかな~、とか思ったりして。
#じゃんけんが強いわけではないのですけど。
来年も、MTの仕事できるように頑張るぞ~。そういえば、先日の見積もりの件とか具体的にすすむように頑張ろう!
今年した主なMT案件は、(ロフトワークさんプロデュースの)吉越事務所さんです。

他はどうすごしていたのかナゾですが、Flash案件に忙しかったのだと思います。

#写真は、招待券(名刺風で0001とある)、はずれた88番のチケット、six apart5周年缶バッジ、ステッカー、RapidSiteのぺットボトル開け補助具(握力落ちているので、リアルに助かる)
2008年8月18日 MovableTypeDevelopersConference に行ってきました。
スケジュールはこんな感じでした。
-----------------------------------------------------------
10:00 - 開会 ごあいさつ / シックス・アパート株式会社 Movable Type 製品企画マネジャー 上ノ郷谷太一
10:15 - Movable Type 4.2 概要 / シックス・アパート株式会社 Movable Type 製品企画担当執行役員 金子順
10:30 - 基調講演 Optimizing Movable Type Publishing Performance /
米シックス・アパート インターフェイスデザインエンジニア Beau Smith
11:45 - 昼休憩
12:45 - セッション / 藤本 壱 氏
13:15 - 協賛企業セッション / アドビ システムズ 株式会社
13:45 - 休憩
14:00 - Lightning Talks 前半 12名 / 事前募集による (各5分)
15:15 - 休憩
15:25 - Lightning Talks 後半 12名 / 事前募集による (各5分)
16:30 - 閉会
-----------------------------------------------------------
参加者には、USBメモリとステッカーがもらえました。
USBメモリが嬉しかったなぁ~。最近は512MBのものなら、買わなくても良いということですか。
さて、中身の話。
Beau Smithさんの基調講演は、再構築パフォーマンスを上げるためにどういうことに取り組むべきかを、再考する良いきっかけになりました。
ちなみに、six apartの見解では、スタティックWEBが一番サーバーレスポンスが早い(負荷が軽い)から、良いというスタンスらしいですが、私も、その意見に大賛成です。
だから、もっているサイトはすべてがスタティックです。
写真は、小さいけど、右から、Beauさん、上ノ郷谷さん、吉松さん。ちょっとトラブル発生中です。
また、Adobe西村さんが次期DWのデモをして、機能がいろいろと追加されていることをいまさらながら知りました。なかなかいいですね。
Adobe labsからダウンロードできるようです。神森さんのサイト「T-Studio」によると、CS3のシリアルがあると長く使えるようですが、ない場合は48時間で終わりみたいです(テストできないじゃん)
さて、MT4.2がリリースされたばかりですが、このバージョンの特徴をひと言で言うなら、今まで重いと言われていた部分にチューニングを施しているということでしょうか。
たとえば、再構築。
スタティックWEBを構築するMTでは、必ずHTMLをパブリッシュする必要があるわけですが、そのときのパフォーマンスを上げるために、また、重いと思われないためのテクニックとしてダイナミック・パブリッシングや、公開キュー(パブリッシュキューを予約して、あるタイミングで実行する時間差攻撃)の仕組みを取り入れたりしています。
また、MT4.2からは、モジュール単位で、php化できるようになったり、モジュールをキャッシュできるようにしたり、工夫満載です。(その分、普通のユーザには分かりにくくなるに違いない・・と思いながら)また、標準の検索エンジンは動作が軽快になっているようです。
さらに、MTの関連CGIをFastCGIで動作させたりすることでも快適な動作を得ることができるということでした。
ここからは、個人的感想ですが、私も動作を快適にして安定させることは、機能を追加することと同じくらい大切なことだと思っているので、この進化の仕方は、賛成です。
まあ、現状のMT4でほとんどの機能が作りこめ、しかもプラグインも豊富にあるため、あとは工夫次第ということもあり新機能への要望が多くないのかもしれません。
もちろん、機能要望を言い出したら切がないのですが、10個出して、1個だけ実現するなら「快適に動作すること」を上げます。
まだ、MT自体は、かつてのFlashの黎明期のような様相です。それが、私にとっては、何よりの楽しみです。あのときと同じエネルギーを感じるので、ますます大きくなることを願っています。
で、このDevConには、「Lightning Talks」という、事前募集した参加者が発表する時間を5分だけもらって、何か話すというコーナーがあります。というか、これがメインの1つというくらい時間を割いてます。
全24組120分です。そこで、なぜか、私が最後の最後、いわゆる「おおとり」となってしまってました。かなり緊張しつつ、話したのが「テンプレートだけで作るページ分割」というテーマです。
== 前半 (14:00 ~ 15:15)
01. 田中 俊行さん - ダッシュボードカスタマイズについて
02. 森下 智弘さん - MovableType EC機能プラグイン作成中
03. 上西 宏幸さん - こんなMTはイヤだ!
04. 荒木 勇次郎さん - テンプレートセット+スタイルによるCSSレイアウト切り替え
05. 大熊 修さん - MT4でのGoogleサービス利用方法
06. nlog(n) さん - ダイナミックパブリッシング対応プラグインを書こう
07. #fc0 (エフシーゼロ) さん - MTにこんなのあったらいいのに!(仮)
08. 関根 元和さん - 5分で作るMTプラグイン
09. 奥脇 知宏さん - (仮) 素人だけどMTが好き!
10. 石坂 渉さん - GPSデータも使った写真ブログを作る術-++RAIL+の試み
11. 進地 崇裕さん - MT触ってハマるまで (仮)
12. 森 雅人さん - AJAXでブログをアプリケーションにする
== 後半 (15:25 ~ 16:30)
01. 佐藤 裕子さん - MT4で簡単なLPO対策のためのプラグイン
02. 野田 純生さん - Pagerプラグインでページ分割
03. 竹内 康夫さん - MTEでの300ユーザー&ブログ一括登録時の苦労話
04. 藤本 壱さん - 変数の機能を拡張する
05. 田辺 誠さん - こんなプラグインがあったらいいな (仮)
06. 高味 至星さん - MovableTypeとAdobeFlashを連携させたサイ
07. マックス・エンヂニアリング 片柳智行さん - Movable Typeにおけるコンテンツ整理術
08. 長谷 幸雄さん - Movable TypeとSSL通信
09. 小山 悟さん - MTOSで地域エンタメブログを運用してみた感想。
10. 小川 宏高さん - Templets: Pluggable Template Sets
11. 黒野 明子さん - 「iPhoneテンプレートfor MT」について
12. 伊藤 紀之(NORI) - テンプレートだけでつくるページ分割
これは、ページ分割機能をプラグインで探したときにいいのが見つからず、自分でプラグインを書けるほど、スキルもなく・・・という状況で、いろいろとこねくり回して、なんとかページという単位で出力することに成功した事例を元に、その発想の原点から話をしました。
ちなみに、野田さんが作っているPagerプラグインと内容が被っているようにも見えますが、アプローチの仕方が人それぞれであるという点をわかっていただけると面白いかと思います。
野田さんのスキルなら、プラグインが作れるけど、私には、まだないスキルだったので、テンプレートで解決を試みたら、できた!ということです。私は、プラグイン否定派ではなく、あるなら使いたい!派です。
ただ、そもそもの発端は、素朴な疑問「なんで、ページ単位で出力できないの?」という点が同じであることが、これからのMTに期待する機能であるともいえます。
で、笑ったのが、「上西 宏幸さん - こんなMTはイヤだ!」っていうネタです。まさに、MTユーザーにしかわからないオチで笑いました。
そして、LightningTalks参加者は、MTのTシャツももらいました~。

最後に、私のセッション内容に興味のある方は、PDFを上げておきましたので、ごらんください。
「テンプレートだけで作るページ分割」(NORI_devcon20080819.pdf:500KB)
(PDFにもかかわらずフォントがおかしく表示されてしまう方は、ご一報いただければ幸いです。Winで作ったPDFがなぜかMacだとおかしいという現象を確認しています)
--追記 2008.08.20
参加者の石坂さんが、全動画をアップしています。臨場感ある雰囲気をお楽しみください。
こちらから全動画が見れます。(私のは、時間切れで、録画できなかったのでありません・・・残念)
--追記 2008.08.21
MT4から付いてきたバックアップと復元機能は、(アイテム登録してあれば)画像やらテンプレートまで、一括で書き出しできるので、非常に便利だ~!
と言っていたが、問題発生。
バックアップしたバージョンと復元するバージョンが違うと、機能しない!
でも、普通に考えれば、バックアップ → バージョンアップ → 復元 だよね~。じゃあ、これ、使えないジャン!!
このバージョンは、バックアップ&復元のモジュールのバージョンなのかな?MTのバージョンではないようだjけど。
藤本壱さんのブログ「Movable Type Developer Conference参加申し込み開始」で知ったイベント。
なんだか面白そうなイベントなので、参加してみようかと思いました。アドビ絡みだし(笑)
Movable Type Developer Conference申し込みページ
なんでも、ひと言ネタ(Lightning Talks)を発表すると、優先的に席が確保できるみたいなので(100名無料で、応募者多数だと抽選!)、無理からネタを仕込みました。
ネタはテンプレート系で「プラグインなしでページ分割する方法」(プラグイン使ったほうがはるかに楽だけど)というものです。まあ、プラグインではできないページ変則的ページ分割とかしてみます。
参加してきました。
で、プラグインをはじめてつくりました。講師は、プラグイン作者で有名な藤本壱さん。
Perlも、ほとんど書けない人間が、つくれましたよ!プラグイン自体は、半角全角の変換モディファイアというもので、Unicode::JapaneseというPerlのライブラリを使用すると、いわゆる本文は数行で終わるシンプルなものでした。
だからこそ、いろいろプラグイン開発において、細かなところを聞けました。この@_は・・・?とか。my $variablename って・・・とか(笑)
Perlの本を読めば書いてあるし、きっと読んだであろうことだと思うのですが、それでも、気軽に聞ければ、思わぬ発見があったりします。
普段、ロクナナワークショップで教える立場としては、講義を受ける人の気持ちがわかって、目から鱗が剥がれまくりでした。
これは、かなり勉強になります。恥ずかしがらずに質問することが重要ですね。
いろいろと教えてくださった藤本さんに感謝します。ありがとうございました。
そして、こんなワークショップを開催してくれているWebSigとMT分科会のDaikinyさんはじめ、ボランティアで活動していただいているスタッフの方々にも感謝です。
で、肝心のプラグインは以下。まだまだ、機能的に甘い点があります。が、いったん公開して、これから詰めたいと思います。
一応、動かすには、コピペしたファイルを.plファイルとして保存し、プラグインディレクトリに入れます。
<MTEntryBody conv_hz="A"> で、全角へ <MTEntryBody conv_hz="a">で半角へコンバートします。
でも、全角にコンバートしちゃうと、htmlタグが全角になっちゃうという問題がありました。詰めが甘いのはご容赦ください。
package MT::Plugin::PluginName;
use base 'MT::Plugin';
use strict;
use MT::Plugin;
use MT;
use MT::Template::Context;
use MT::I18N qw(encode_text);
use Unicode::Japanese;
# show plugin information to main menu
my $plugin = __PACKAGE__->new({
name => 'Convert HankakuZenkaku',
version => '1.00',
author_name => 'NORI@WebSig',
author_link => 'http://www.3oclock.com/hello-world/',
description => 'Convert hankaku - zenkaku',
});
MT->add_plugin($plugin);
# add tag
sub init_registry {
my $plugin = shift;
my $reg = {
tags => {
modifier => {
conv_hz => \&convert_han_zen,
},
},
};
$plugin->registry($reg);
}
# Template of global modifier
# conv_hz="A" to Zenkaku
# conv_hz="a" to Hankaku
sub convert_han_zen {
my ($text, $arg) = @_;
my $charset = lc(MT->config->PublishCharset);
$charset = 'utf8' if ($charset eq 'utf-8');
my $t = Unicode::Japanese->new($text,$charset);
if ($arg eq 'A'){
$t->h2z;
}
elsif($arg eq 'a'){
$t->z2h;
}
$text=$t->conv($charset);
return $text;
}
1;
私がかかわった本の中ではかなり売れているらしく「Movable Type プロフェッショナル・スタイル」は、3刷だそうだ。
すごいなぁ~。それだけ、注目されているってわけか。

とはいえ、私は、執筆者ではなく、巻末に少し出ていますが、テクニカルレビュワーです。
なぜか、Flashにとどまらず、MTにも進出です。
そして、Web Site Expert #18 では、MTの冊子に原稿を書いています。(表題の「WSE」とは、WebSiteExpertのことです)

Dakinyさんに紹介していただいたのだけど・・・なんだか恐縮です。MT界では、名立たる方々に混じっている「伊藤のりゆき NORI」って誰だ?ってなりますよね。
MTでは、もちろん、実制作もしております。データ入力画面のカスタマイズから、ドキュメントの整備まで、まとめてパック。
夕べ、納品用のドキュメントを見たYOUCHANには、「できるシリーズ」だよっ!と言われました。分かりやすくつくればサポートの手間が減るので、すこしはライターの仕事が役に立っているようです。
突然、エラーが出た。
Can't locate object method "shift-jis" via package "Jcode" (perhaps you forgot to load "Jcode"?) at lib/MT/I18N/ja.pm line 93.
しかし、原因がまったく分からない。なぜなら、納品用のサイトをごっそりと開発環境から先方のサーバーにDBコピーしただけで、内容が同じ開発環境ではエラーが出なかったからだ。もちろん、プラグインもすべて同じ。
そこで、ひと晩寝かせて、mtを全部、再インストール。おまけに、プラグインも全部入れなおし。これで、開発環境と納品先の環境はまったく同じになった。
それでもエラーが出る・・・で、なんとなく分かってきたのは、
が、よく見ると?な箇所があった。
<MTEncodeText from="utf-8" to "shift-jis">
shift_jisじゃね?と思って、「-(ハイフン)」を「_(アンダースコア)」に直して再構築すると、直った・・・。
なんで、エラーが出る環境と出ない環境があるのか? あ、サーバー違った!
文字コードの表記にご用心。
<MTEncodeText from="utf-8" to "shift_jis">
ps.ブログのコメントでは、「sjis, shift_jis, euc-jp, euc, utf-8, utf8」と書かれてました(^^;
MT4.1からMTIncludeでvarによる変数設定が有効なので、とても便利で(ものぐさともいいますが)使っていたのだけど、出力されたHTMLを見てみてびっくり。
変数内容が出力されちゃってる(笑)
呼び出し元:
<MTInclude module="モジュール1" cat="ほげ~">
モジュール1:
<MTEntries category="$cat">
</MTEntries>
ってしただけなのに、勝手に「ほげ~」とか出ちゃう始末。
仕方ないので、MTSetVar を1行追加して直します・・・納品直前に気づいてよかった。
いくつかあったブログを、サーバー1個にまとめることにした。
で、ブログの数も多いが、MT4からバックアップ&復元があるので、これを使ってみた。
今までは、DBを直接バックアップ&復元していたのだけど、今回は、ブログをマージする必要があるので、DBのリストアじゃだめなのだ。
バックアップ&復元の対象にあるのは次の通り。
- すべてのテンプレート
- MT4.1から標準装備されるカスタムフィールド
- エントリー
- アセット(きちんと画像をMTからアップロードして、いれば、ここで役にたつ)
- コメント
- タグ
- その他、一切がっさいの設定。たとえば、BASENAMEとか
ただし、エクスポートの良いところは、テキストデータとして残せるので、他にも流用できそうなデータ形式になるところ。
シックスアパートでは、MTフォーマッとのテキスト形式で書き出すことで、インポート可能なデータを作成することができると紹介している。(Movable Type のブログ記事インポートフォーマット)
そのフォーマッとでは、上記のうち、カスタムフィールドのデータ、アセット、テンプレートが落とせない。
あくまでもエントリーに関するデータがメインなので、気をつけないといけない。
復元機能は万能ではない。復元時には注意すべきことがある。
フォルダは前もって作成しておく
どうも、復元時に、フォルダがないとエラーになるようだ。
これ以外にも、現在、原因が特定できないエラーに悩まされている。
復元中にエラーがありました。 (IP: xxx.xxx.xxx.xxx)
internal error at /usr/local/lib/perl5/site_perl/5.8.8/i686-linux/XML/LibXML.pm line 485. at /usr/local/lib/perl5/site_perl/5.8.8/i686-linux/XML/LibXML/SAX.pm line 64 at lib/MT/BackupRestore.pm line 270
このエラーのせいで、ブログのタイトルしか復元できない・・・。
また、分かったら、解決策載せます。今、手がつけられないから、あとで。

