MJL - MITSUE-LINKS JavaScript Library
フロントエンド・エンジニア 渡邉 卓MJL とは何か? 実は、私が設計・実装を担当し、弊社内で開発が進められてきたJavaScriptライブラリの略称です。このMJLこと MITSUE-LINKS JavaScript Library はこの度、弊社内の標準ライブラリとして運用が開始されることになりました。
本コラムでは、MJLの生い立ち、JavaScriptライブラリの現状、特徴、これからの展望について簡単に述べていきます。
生い立ち - 業務効率の改善がもたらすサービス品質の向上
MJLが生まれたきっかけはずばり、「業務効率の改善」を図るためでした。
従来は、案件の担当者ごとにさまざまなライブラリを利用しており、利用されるノウハウ、実装、バージョンがまちまちになることがよくありました。
社内の標準ライブラリを一元化することで、これらの混乱をある程度軽減させ、業務効率を改善できるようになります。
また、仕様やバージョンがまちまちであるということは、品質保証プロセスの効率低下を意味します。MJLはあらかじめ多くのテストケースを用意しておき、バグチェックを通過させてあります。つまり、従来ならば同一のチェック項目をいくつもの案件で別々に通過させなければなりませんでしたが、MJLは案件の仕様とは別の部分はあらかじめチェックできているため、チェックが必須な項目数の削減が可能となります。
業務効率が改善されると、その分サービス品質を向上させやすくなります。弊社にとっても、お客様にとっても利益になるわけです。
JavaScriptライブラリの林立とMJLの立ち位置
JavaScriptライブラリは、自由ソフトウェア(フリーソフトウェア)・オープンソースソフトウェアだけでもさまざまなものが林立している状況です。jQuery、Prototype、Dojo、YUI Libraryなど、例を挙げればきりがありません。そのどれもが、ブラウザ戦争が生んだ負の遺産である「仕様の差異」を埋め、かつ短いコードでさまざまな機能を利用できるようにするため開発されてきました。無論、MJLもそうしたライブラリのひとつという側面を持っています。
本コラムをお読みになっている方の中には、林立するJavaScriptライブラリ群にMJLを加え、混乱に拍車をかける気か、と憤慨している方がいるかもしれません。
しかし、MJLは前述したどのライブラリとも異なるコンセプトに基づき設計・開発されています。他のライブラリにはない特徴を持ちながら、潰しあうのではなく、互いに補完しあえる関係を築ける可能性を求めました。
それでは、MJLの特徴について説明しましょう。
特徴
MJLは、従来のJavaScriptライブラリにはあまりみられなかった珍しい特徴をいくつか備えています。
「必要最小限」の機能だけ実装
MJLは、他のライブラリのように多機能ではありません。実は、機能がわざと制限されているのです。おおまかには、次の6機能だけを持っています。
- 画像のロールオーバー
- Adobe Flashオブジェクト埋め込みの機能拡張
- 新規ウインドウの作成
- スタイルスイッチャの実装
- タブインターフェイスの実装
- 要素の高さ揃え
これらの機能はWebサイトを制作する上で利用する「必要最小限」の機能であると判断されたが故に実装されています。
ご覧のように、MJLにはAjax関連機能(XMLHttpRequest用インターフェイスなど)すらありません。それは、当然「必要最小限」の機能とは判断されなかったからです。身もふたもない言い方をするならば、「非同期通信が使いたければ、jQueryなどを利用すればよい」ということになります。車輪の再発明は必要最小限にとどめたほうが、皆幸せになれるというものです。
要するに、MJLは他のライブラリと競合しにくいようになっているのです。欲しい機能がMJLにない場合は、他のライブラリを利用すればよいのです。また、逆に他のライブラリでは機能過多であったり使い方が複雑だったりする場合は、MJLを利用すればよいのです。
機能を最小限に絞ることで、軽量化、高速化、開発サイクルのスピードアップにも成功しています。
簡易なインターフェイス - 機能を利用するにはclass属性値づけ
前述した機能は、すべて特定のclass属性値を付与することでHTML/XHTML文書に反映させることができます。つまり、JavaScriptコードを書く必要があまりない、ということです。
JavaScriptコードは、主に機能のON/OFFと、class属性値やその他オプションのカスタマイズを目的とします。一度JavaScriptコードを書いてしまえば、あとはHTML/XHTML側で機能発現の有無を選択できるわけです。
その他
その他、次のようにありきたりな特徴もあります。
- クロスプラットフォーム(Mozilla Firefox、Apple Safari、Opera、Internet Explorerのサポート)
- 他ライブラリ非依存
- 他ライブラリとバッティングしない名前空間
- 生成コード・内部利用仕様のWeb標準準拠
社外公開への取り組み - GNU GPL Version 3
MJLは弊社だけが利用できるライブラリではありません。今しばらくお待たせすることになりますが、社外に公開する取り組みも始まっています。
ライセンスはFree Software FoundationによるGNU GPL Version 3(邦訳)とすることが確定しています。つまり、MJLは自由ソフトウェア(フリーソフトウェア)なのです。それは即ち、誰もが利用・改良・配布できるということを意味します。弊社としても、これは初めての試みであり、多分に実験的な要素を含んではいます。しかし、これをきっかけに第二・第三の自由の身となったコードが生まれ出てくることを願うばかりです。
現在は、公開に向けた調整作業を行なっています。
MJLのこれから
MJLは、これから弊社で受注する案件の多くで、標準的に使われていくことが期待されています。そしてそう遠くない未来には、全世界に向けて公開されます。
弊社では引き続き、MJLの保守と開発を行なっていきます。求める声が大きければ、新しい機能を追加することもあるでしょう。また逆に、機能を削ることもあるでしょう。バグを潰し、パフォーマンスを上げ、コード量を削減する努力も続けられます。
まだMJLプロジェクトは本格始動したばかりで、海のものとも山のものともつかない部分が多々あるのは事実です。しかし、こうした取り組みは無駄にはならないでしょう。事実、社内ではMJLプロジェクトに関連した新たな取り組みが生まれているのですから。
MJLが公開された暁には、内外を問わず、是非たくさんの方々にバグレポートやディスカッションに参加していただきたいと考えています。かつてエリック・S・レイモンド氏は論文“The Cathedral and the Bazaar”(邦訳:『伽藍とバザール』)において、「リーナスの法則」を次のように紹介しました。
目玉の数さえ十分あれば、どんなバグも深刻ではない
MJLが、たくさんの目玉に触れる機会に恵まれますように。
Happy Hacking!
(追記)2008年10月3日、MJLを公開いたしました。
Newsletter
メールニュースでは、本サイトの更新情報や業界動向などをお伝えしています。ぜひご購読ください。