JSDT(JavaScript Development Tools)

本連載では前回から数回に分けてEclipse 3.4の新機能を紹介していく。Eclipse 3.4(Ganymede)ではWTPも2.0から3.0にバージョンアップしているが、中でも大きな新機能がJSDTと呼ばれるJavaScriptの開発環境だ。

WTPには以前からJavaScriptエディタが搭載されていたが、簡単なコード補完機能を備えてはいたものの、かなりシンプルなものだった。これと比べるとJSDTは本格的なコード補完機能やライブラリ管理機能などをはじめ、非常に強力な機能を備えたJavaScript開発環境となっている。今回はこのJSDTの機能を紹介する。

JavaScriptエディタ

JSDTのJavaScriptエディタはコード補完機能やエラーチェック機能、ソースコードフォーマット機能など豊富な機能を備えている。コード補完時にはコメントがホバー表示されたり、複数行コメントを入力しようとするとJSDocの雛型が生成されるなど、使い勝手はEclipseのJavaエディタに近い。

図1 JavaScriptエディタ

また、WTPのHTMLエディタやJSPエディタのJavaScript部分でもJSDTの機能を利用することができる。

図2 HTMLエディタ

ただし残念なことに、JavaScriptエディタのすべての機能を利用できるのはWTPのWebプロジェクト、もしくはJSDTのJavaScriptプロジェクトの場合に限られる。それ以外のプロジェクトでは、基本的なコード補完機能などは利用することができるが、JSDTの多くの便利な機能は利用することができない。

ナビゲーション機能

ナビゲーション機能も宣言部へのジャンプ(F3)、型の検索(CTRL + SHIFT + T)、呼び出し階層の表示(CTRL + SHIFT + H)など、JDTばりの機能が実装されている。

図3 型の検索

ただし、補完機能やにも言えることだが、Prototype.jsなどのライブラリを使用したクラス定義の構文には対応していない。そのためこれらのクラスは補完や検索対象にはならない(エラーチェック機能でもエラーとして表示されてしまう)。

JSDT自体は型認識の仕組みを外部からプラグインできるような構造になっているため、ライブラリに応じたプラグインを作成することで対応が可能なようだ。将来的にはPrototype.jsやDojoといった著名なライブラリは標準でサポートされることを期待したい。

豊富な設定項目

JSDTはエディタの外観やコード補完、エラーチェックに関する設定から、ユーザライブラリやソースコードのフォーマットに関する設定まで、豊富なカスタマイズ項目を持っている。

図4 ユーザライブラリの設定

図5 エラーチェックの設定

これらの設定の一部はワークスペースでデフォルトの設定をしておき、プロジェクトごとの設定で上書きすることができるようになっている。

JSDocも強力サポート

JSDTではJSDocも強力にサポートされている。JSDocとはJavaScriptコードにJavadoc形式でコメントを記述しておき、JavadocのようにHTMLを生成してくれるツールだ。

JavaScriptエディタではJSDocコメントを入力しようとすると雛型が生成されるほか、設定を変更することでJSDocを未記述の関数や、JSDocの記述が間違っている(パラメータの数や名前が異なる等々)などを自動的にチェックすることも可能だ。

図6 JSDocのエラーチェック

JSDocを記述したら、「エクスポート」メニューから「JavaScript」→「JSDoc」でHTMLをエクスポートすることができる。ただしJSDocは別途インストールし、Eclipseの設定ダイアログでパスを登録しておく必要がある。

図7 JSDocのエクスポート

コードの補完機能でも、JSDocにパラメータの型名を記述しておくことで、型を認識して適切な補完候補を表示してくれる。JavaScriptは動的な言語なので、ソースコード上の情報だけでは型を特定することができないが、JSDocを記述しておけばそのような場合でも補完機能を利用することができる。

図8 JSDocを利用したコード補完

まとめ

これまではEclipse上で強力なJavaScript開発環境というと、AptanaやJSEclipse、SpketIDEなどサードパーティ製のプラグインをインストールする必要があったが、JSDTによって強力なJavaScript開発環境がGanymedeの標準機能として提供されることとなった。Prototype.jsなどの著名なJavaScriptライブラリに対応していないなどの問題はあるものの、Webアプリケーション開発者にとっては朗報といえるだろう。