fbpx

メニュー

MooToolsとWordPressを使う人が、摩擦の少ない人生を送るために。

高橋文樹 高橋文樹

この投稿は 15年 前に公開されました。いまではもう無効になった内容を含んでいるかもしれないことをご了承ください。

MooToolsを使っている方(リアルで会ったことは一度もありませんが)はたまに、「みんなPrototypeやjQueryばっかり使って……」とおっしゃいます。たしかに、自分の好きなJavascriptフレームワークが一番になってほしいと思う気持ちはわからないでもないですが、MooToolerはそんなことを言ってはいけません。

一時期、MooToolsのgoogleグループで、”What’s going on in MooTools…“という記事が話題になっていました。詳細に引用するのも面倒なので、かいつまんで説明しますと、MooToolsが1.11から1.2にバージョンアップしたとき、その変化の大きさに戸惑ったユーザが、「MooToolsはもう終わりなのでは?」と訝ったことが原因だったわけです。

怒っているユーザの主張は、おおむね「公式ブログで発表がなかったのに、なぜ急に?」というものでした。

なかには「jQueryの方がいい!」と怒り出す人もいる始末で、炎上した感さえあったのですが、現在は収束の方向へ向かっているようです。

ぼくがMooToolsを好きな理由の一つに、そのストイックな姿勢にあります。ユーザに手厚くするどころか、もっと勉強するよう促す強い姿勢に激しく共感するわけです。要するに、「手軽に使いたいんだったら、PrototypejQueryのようなコピペで済むものがたくさんあるよ、MooToolsは最高のパフォーマンスを実現するためのフレームワークだよ」という意気込みを僕は買うわけです。

ところが、です。そうはいっても多数派に優しくするのが民主主義の本質であり、邦訳解説書の一冊もないMooToolsを使っていると、色んな形で困ることがでてくるわけです。

WordPressのデフォルト・フレームワーク

僕はMooToolsとともにWordPressが大好きなのですが、困ったことに、WordPressPrototype.jsをデフォルトのフレームワークに採用してしまっています。一応、いくつか選べるという触れ込みになっていますが、jQueryぐらいしか選べません。

まあ、「閊えない」というだけなら、自分で読み込ませればいいだけなのですが、困った殊に、WordPressは管理画面以外でもPrototypeを読み込んでしまいます。たぶん、2.5移行だと思います

こうなると、Slimboxなんかを使うだけでも問題が起きてしまうのです。大体は$関数が原因だと思うんですが、他にも幾つか摩擦が起きるらしく、いかんともしがたい状況です。

なので、ここはWordPressさんに我慢してもらい、Prototypeの読み込みを止めてもらいます。だいたい、WordPressのテーマファイルにはwp_head()という式が書いてあると思うので、その前後にこんな感じで書きます。

<?php
//prototype.jsの読み込みを削除する式
function undup_prototype($contents) {
   $replaced = preg_replace("/<script.*prototype\.js.*>.<\/script>;.*\n/i",'',$contents);
   /*if($replaced !== $contents) {
      $replaced = '&lt;script type="text/javascript"
         src="'.get_bloginfo('wpurl').'/wp-includes/js/prototype.js"></script>'."\n".$replaced;
   }*/
   return $replaced;
}
ob_start('undup_prototype');
wp_head(); // ←ここでPrototypeを読み込んでいる
ob_end_flush();
?>

これはPrototype.jsは一つでいいというエントリーを参考にしたものです。Prototypeを一回だけ読み込みたい方は、コメントアウトしてある部分を外せばオッケーです。

これでMooToolsは問題なく動きます。

注意点

上で行ったのは、WordPressの出力バッファから強制的にPrototypeのscriptタグを外すという行為です。もちろん、Prototypeに依存しているプラグインを使っている場合は、動かなくなっていまいます。僕は以下のプラグインを使っていますが、特に問題はありませんでした。

  • Breadcrumb NavXT
  • cforms
  • Skype Online Status
  • Twitter Tools
  • Ultimate Google Analytics
  • tmkm-amazon

他にも使ってますが、管理画面でしか使わないもの、明かにAjaxっぽい動きをしないものは除きました。

昨今、色んなフレームワークを使っていて感じることですが、YUISpryというそのものズバリな名前空間を持っていて、書くのが面倒くさいフレームワークはまあ、長所も短所もはっきりしていることだし、必要なときだけ使えばいいという感じですが、PrototypejQueryMooToolsはやっぱり競合になってしまいます。

ext.jsからも外されてるし、ガンバレMooTools!

すべての投稿を見る

高橋文樹ニュースレター

高橋文樹が最近の活動報告、サイトでパブリックにできない情報などをお伝えするメーリングリストです。 滅多に送りませんので、ぜひご登録お願いいたします。 お得なダウンロードコンテンツなども計画中です。