MooTools

MooTools は、オープンソースの軽量でモジュラーなオブジェクト指向 JavaScript Webアプリケーションフレームワークであり、MIT License でリリースされている。その目的は、Web開発者にブラウザから独立したエレガントで柔軟で効率的なJavaScriptを書く手段を提供することである。MooTools には、CSS、DOM要素、ネイティブなJavaScriptオブジェクト、Ajax要求などを操作する組み込み関数がある。また、詳細なAPI文書が用意されており、開発の効率化に寄与する。

利点 
MooToolsはネイティブなJavaScript以上の利点をユーザーに提供することを目指している。例えば、次のような利点がある。
 拡張性があるモジュラーなフレームワークであり、開発者は使用するコンポーネントを選択できる。
 オブジェクト指向の慣習とDRY原則に従う。
 Flash開発者が使うような最適化された遷移を伴う特殊効果コンポーネントがある。
 DOMを拡張し、開発者が容易にDOM要素を追加・更新・選択・削除できる。

コンポーネント 
MooToolsには多くのコンポーネントがあるが、各アプリケーションで全てをロードする必要はない。コンポーネントは以下のように分類されている。
 Core: 他のコンポーネントで必要となるユーティリティ関数の集まり。
 Class: Classオブジェクト実装のための基本ライブラリ。
 Natives: JavaScriptのネイティブオブジェクトの拡張。機能や互換性を強化し、新たなメソッドを追加し、コーディングを単純化している。
 Element: HTML要素オブジェクトへの各種拡張と互換性強化。
 Fx: 要素のアニメーション効果のためのAPI。
 Request: XHRインタフェース、クッキー、JSON、HTML検索専用ツールなどを提供。
 Window: ウィンドウサイズなどのクライアント固有情報へのインタフェース（ブラウザ非依存）。

ブラウザとの互換性 
MooToolsは以下の各ブラウザのバージョンで評価し動作確認されている。
 Safari 2+
 Internet Explorer 6+
 Mozilla Firefox 2+
 Opera 9+
 Camino 1.5+

オブジェクト指向プログラミング 
MooToolsは多くのオブジェクト指向言語と似たようなしっかりしたクラス生成と継承のシステムを備えている。例えば、以下は英語版Wikipediaにあるこちらのポリモーフィズムの例と同じことをMooToolsで実現したものである。

 var Animal = new Class({

    initialize: function(name){
        this.name = name;
    }
    
 });
 
 var Cat = new Class({ 
    Extends: Animal,
    
    talk: function(){
        return 'Meow!';
    }
    
 });
 
 var Dog = new Class({
    
    Extends: Animal,
    
    talk: function(){
        return 'Arf! Arf';
    }
    
 });
 
 var Animals = {
    a: new Cat('Missy'),
    b: new Cat('Mr. Bojangles'),
    c: new Dog('Lassie')
 };
 
 for(var animal in Animals) alert(animal.name + ': ' + animal.talk());
 
 // alerts the following:
 //
 // Missy: Meow!
 // Mr. Bojangles: Meow!
 // Lassie: Arf! Arf!

関連項目 
 JavaScript
 Ajax
 Web 2.0
 XMLHttpRequest
 リッチインターネットアプリケーション
 AngularJS(1.x,2.0α Ver)
 Aurelia.js
 Backbone.js
 Ember.js
 JavaScriptライブラリ
 Javascript framework
 JQuery
 Knockout.js
 MooTools
 Polymer
 Prototype JavaScript Framework
 Ractive.js
 React.js
 Riot.js
 vue.js

脚注・出典

外部リンク 
 mootools.net - 公式サイト
 公式ユーザーグループ
 The MooTorial
 Mootools Essentials (book)
 jQuery vs MooTools: Choosing Between Two Great JavaScript Frameworks
 Clientcide Blog and Plugins by Aaron Newton
 Guillermo Rauch - MooTools Articles, Tutorials, Tips and Plugins by Guillermo Rauch
 David Walsh Blog - MooTools Tutorials and Plugins by David Walsh
 mooforum - The Unofficial MooTools Community
 MooTools 1.1 Plugins
 Free Mootools Plugins
 A widgets library built on mootools

JavaScript
ウェブ開発