アルファサード株式会社 代表取締役 野田 純生のブログ


静的生成、部分的に動的。


公開日 : 2010-03-31 19:58:37


あれこれ忙しかったんですが明日の公開になるとエイプリルフールネタにされてしまうので今日公開してみました(ほんとはPower CMS for WPとか、て考えたりもしたけど、何かもうありがちすぎてやめる。僕はMTでいいじゃん派だから)。

最近もちろん仕事でも色々作っているんですが、一番個人的に面白かったのがこれです。

チュートリアル的に丁寧に書いたつもりなので詳細はリンク先を見ていただくとして、僕は基本的にCMSは静的にページを生成できるものが最強だと思ってます。動的生成って色々逃げられる代わりに本当に大きなサイト動かそうと思ったらセキュアに運営しようと思ったら、DB接続が常に前提なものって本当夜も眠れない。負荷がきつくなったら、とかDBがクラッシュしたら、とかDBが落ちた、とか考えるとしんどいんですね。ただ、部分的に動的ってのが好きな人が世の中には一定数いるらしい。

MTの場合はダイナミックパブリッシングのしくみが標準で用意されていて、動的にページを変化させるとか(時間帯によって「おはようございます」とかたとえばそんなものひとつとっても)はテンプレートタグで出来るわけですが、僕自身ダイナミックパブリッシングにはいくつか不満がありました。

MTのダイナミックパブリッシングのキャッシュ

MTのダイナミックパブリッシングでは、一度ページが閲覧されるとビルドされた内容がキャッシュされます(キャッシュを有効にしている場合)。一回目の表示は重いです。いかにもDBにアクセスして表示してますって感じ。ところが一度キャッシュされたページは早い。ファイルを返してるだけですから比較にならない軽さです。

ところが、MTのダイナミックパブリッシング(というよりSmartyのキャッシュかな?)ではクエリ付きのページのキャッシュが出来ない。正確には出来ないんじゃなくて、?query=hoge がついているものとついていないものが同じキャッシュに保存されてしまうため、クエリーなんかで分岐したいケースで使えないのです。同じく時間によってどうとか、常に動的に変化させたい場合は使えない。ところがキャッシュが無効なダイナミックパブリッシングって重いというか、DBが悲鳴を上げているのが伝わってきて痛々しいのです。

なので、共通部分や動的に構築しなくて良い部分をスタティックに吐くようにしてそいつをダイナミックからインクルードして、とかやるんですけど、はっきりいってもっと楽にやりたいじゃないですか。それって「テクニック」的な何かなわけで、そいつを実装・構築する人に考えさせちゃ駄目だと思うんです。また、MTの場合はPHP対応プラグインがまだまだ少なくて、Perlで書いたのが動かないって指摘も良くされるわけで、じゃぁPerlで構築する部分をインクルードして...ってやっぱりそれは何かち・が・うと思うのですね。

MTML使いはもっと自由にサイトを構築できていいと思う

また、出力されるアーカイブをPHP化してどうってのもあんまり好きじゃない。自分で書いててなんだけど、この記事で紹介したみたいな書き方って結局CMS使ってるメリットないもの(MT5のBrand new API(DPAPI)と格闘してみた(続き))。

誰かがどこかで書いてましたけど、一つのファイルやテンプレートの中にHTMLとJavaScriptとCSSだけならまだしもPHPとSQLまで書いてあるって何なんだと思うのです。

で、PHPのコードとか直接書くくらいだったら、MTタグ書いてそいつをビルドできれば敷居がグッと低くなるし、PHPは書けないけどMTMLは書けるって人は嬉しくないかな? と思ったのが発端です。

だってこれ使うと例えばWe○○elease2で作ったページにだってMTタグが書けるんですよ? (僕がそういうこと書いちゃいかんか...)。もちろんDreamweverでページ作成してアップしてるサイトだって、MTタグ書いておけばそれが動いちゃうんだ。単なるテンプレートエンジンとして考えればコードの中にプロラグムとHTMLが混在してるより、MTの場合は「タグ」ですから。

そんでもって、MTMLってもう単なるタグじゃないくらいにプログラミングチックなことも出来るわけですよね。だったらMTML使いはもっと自由に動的なWebサイトの構築が出来ていいんじゃないか?

何だかまとまらないポストになりましたが、これ、面白いと思うんでついカッとなって(嘘)久しぶりにポストした次第です。

無償での利用も出来るようにしてますので、是非試してみてください。これ、面白いです。



このブログを書いている人
野田純生の写真
野田 純生 (のだ すみお)

大阪府出身。ウェブアクセシビリティエバンジェリスト。 アルファサード株式会社の代表取締役社長であり、現役のプログラマ。経営理念は「テクノロジーによって顧客とパートナーに寄り添い、ウェブを良くする」。 プロフィール詳細へ