TOP
>
システム開発
> Prototypeライブラリ内部
JSライブラリ・ラボ - これで君もライブラリ開発者だ!
第1回:Prototypeライブラリの内部
著者:
川崎 有亮
2007/3/20
前のページ
1
2
Prototypeライブラリ内部
Prototypeライブラリの具体的な利用方法は本書の記事「JavaScriptを洗練させるPrototype.js」に譲るとして、ここではそのライブラリ内部がどのような構成になっているのか、見てみましょう。開発版としてバージョン1.5.0 RC2も登場していますが、ここでは執筆時点で公開されている最新版の1.4.0をもとに解説します(2007年3月現在では、バージョン1.5.0の最新版がリリースされています)。
バージョン1.4.0の配布アーカイブをダウンロードすると、表1のファイルが格納されています。このうち通常、Webページから利用するのはdist/prototype.jsの1ファイルのみです。
ファイル名
内容
dist/prototype.js
配布用JavaScript本体
src/
ソースファイル(開発用)
test/
テストスクリプト
CHANGELOG
更新履歴
LICENSE
ライセンス
Rakefile
Ruby Make用設定ファイル
README
お読み下さい
表1:prototype-1.4.0.tar.gzの主な構成ファイル
しかし、ライブラリ自体の開発ではprototype.jsを直接編集するのではなく、srcディレクトリに含まれる分割ソースファイル単位での作業になります。Prototypeライブラリでは表2に示すような多数の機能を提供していますから、ソースファイルを分離することで管理しやすくするわけです。
ファイル名
既存オブジェ
クトの拡張
独自オブジェクトの定義
主な追加メソッド
src/prototype.js
Prototype
src/base.js
Object
Abstract、Try
Class.create()、Object.extend()、$()
src/string.js
String
src/enumerable.js
Enumerable
each()、findAll()、grep()、include()
src/array.js
Array
$A()
src/hash.js
Hash
$H()
src/range.js
ObjectRange $R()
src/dom.js
Element
Toggle、Insertion
document.getElementsBy
ClassName()
src/ajax.js
Ajax
src/form.js
Field、Form
$F()
src/event.js
Event
Event.observe()
src/position.js
Position
表2:prototype.jsのソースファイル
これらのsrcディレクトリ内のファイルを結合して、配布用のprototype.jsを作成しています。ライブラリの利用者(Webページ制作者)側から見れば、1ファイルの読み込みのみで済むため、各クラスの依存関係を気にせずに簡潔な記述で利用できるわけです。その反面、利用しないコードも含まれてしまうため、ライブラリ容量が40KBを超えて少し大きくなっています。
さて、次にtestディレクトリを見ると、テスト用のファイルが格納されています。現在のJavaScriptライブラリの問題点の1つとして、他言語に比べてテスト環境の整備が劣っている点が挙げられます。そこで、ライブラリ作者側でテストの仕組みも構築しているわけです。ライブラリ作者本人以外にも多数のライブラリ利用者が関係するため、バージョンアップ時に不具合・副作用が発生しないように公開前の慎重なテストが欠かせません。
その他にも、簡単に更新履歴を記載したCHANGELOGファイル、ライセンス条件を記載したLICENSEファイル、配布アーカイブ構築処理用のRakefileファイル、簡単な説明を記述したREADMEファイルが添付されています。これらのファイルはライブラリの公開には必須ではありませんが、慣用的に使われている名前のファイルなので、利用者にとっても添付されていた方がライブラリの構成を理解しやすいでしょう。
次回は
次回は「jQueryライブラリの解剖」と「onloadイベント記法の推移」について解説していきます。
前のページ
1
2
著者プロフィール
川崎 有亮
1977年東京生まれ。AjaxなどWeb技術のアーキテクト。株式会社かっぺを経て、現在は株式会社リクルート事業開発室に所属。技術評論社「Ajax/実装のための基礎テクニック」(共著)など書籍・雑誌記事の執筆も多数。
Kawa.net xp:
http://www.kawa.net/
INDEX
第1回:Prototypeライブラリの内部
はじめに
Prototypeライブラリ内部