ScriptedはブラウザベースのJavaScriptエディタでローカルで動作し、Node.jsにホストされる。Eclipse Orionのエディタコンポーネントを利用してVMwareが開発している。完全なIDEではなく、シンプルで軽量なエディタを使いたい開発者向けに作られたエディタだ。
VMwareのSpringSource部門のAndy Clement氏はScriptedの主要な機能を下記の通り列挙している。
- 高速に起動し、軽量
- JavaScript、HTML、CSSの構文ハイライト
- エラーと警告:
- JSLintを統合しJavaScriptのエラー/警告マーカーを提供する
- AMDとCommonJSモジュールの解決。解決できない参照をエラーとしてマークする
- コンテンツアシスト:
- HTML、CSS向けの基本的なコンテンツアシスト
- JavaScriptの場合、コンテンツアシストは型推論で動作する。型推論はAMD/CommonJSのモジュールの依存関係を検知し、JSDocのコメントを利用してコードを理解するのを支援する。
- JavaScriptの識別子上にマウスを合わせると型を推論してシグネチャを表示する
- 識別子上でF8を押すとエディタはその識別子の宣言を表示する。モジュールの識別子(例えば、define()節)でも利用できる。
- フォーマッティング: JSbeautifyの統合
- サイドパネル: 2番目のエディタをホストするのに使える
- 外部コマンドへのキーバインディング
チームは近い将来、コードアシストやナビゲーションを改善し、パネルの数を増やしてドキュメントや検索結果、コードのプレビューをホストできるようにするつもりだ。また、シンプルなプラグインシステムやChrome Development ToolsとNode Inspectorによるデバッグのサポートも搭載も計画している。さらに、CoffeeScriptやTypeScriptのような似た言語のサポートも考えている。
InfoQはClement氏にインタビューし、Scriptedの詳細と今後の計画について話を聞いた。
InfoQ: ScriptedはEclipse Orionをベースにしています。なぜOrionからプロジェクトを別けたのですか。
Orionのエディタコンポーネントは素晴らしいです。Scriptedのクライアントサイドの基盤として動作しています。しかし、Orionはリモートにホストされたワークスペース/プロジェクト向けに作られており、オプションとしてローカルサーバモードがあります。リモートにプロジェクトをホストする方法はすべての開発者にとって魅力的だとは言えません。そこでローカルサーバーモードを最初から設計したくなりました。そして、その過程でOrionは少し重く、その時点では必要でない機能が含まれていることがわかりました。例えば、複数ユーザのサポートやgitとの統合です。Scriptedのクライアント/サーバの構成を維持することで、将来、ローカルサーバからリモートへ移行できるという柔軟性を確保できます。
InfoQ: OrionとScriptedの主要な違いは何でしょうか。Scriptedにはサブエディタとナビゲータがありますね。他にどのような違いがありますか。
Orionは拡張可能なプラットフォームです。しかし、私たちは拡張可能性を求める必要はなく、より堅いコンポーネントセットを提供します。Scriptedはひとつのページで完結するアプリで、vi、textmate、sublimeのような開発者が親しんでいるツールと似た使用感を提供したいと考えています。OrionはGitのようなシステムと連携するUIを提供しますが、Scriptedは、ユーザはすでにあるタスクを実行するために使っているツールがあり、同じタスクを行うために異なるUIを学習させるのは望ましくないと考えています。私たちがこれまで注力し、これからも改善し続ける重要な機能はコードの理解に関するものです。JavaScriptを理解するライブラリを構築するのに多くの時間を投資してきました。優れたコンテンツアシスト機能やナビゲーション機能を提供したいと考えているからです。開発者のコードがAMDを使っていようがCommonJSを使っていようが、Scriptedは理解できます。解決できない参照向けにエラーマーカーを提供し、モジュールの構造を理解して適切なコンテンツアシストを提供します。また、JSDocを解析してパラメータや返却値の詳しい説明を提供できます。
サイドパネルにはサブエディタがホストされています。今後のリリースでこのサイドパネルでもっと多くのことができるようにするつもりです。メインエディタで実現したいことを支援する機能が置かれると考えてください。まずは第二のエディタとして使われていますが、ドキュメントや検索結果を保持する場所として利用することを計画しています。理想的には開発者が要求した機能だけを置くのではなく、開発者は要求していなくてもScriptedがその開発者が便利になると判断した機能も置くようにしたいと思っています。例えば、メインのエディタ上のマウスカーソルの位置にあるコードの呼び出し先を表示するというような機能が考えられます。
InfoQ: OrionはサーバにJettyを使います。なぜNode.jsに変えたのですか。
サーバサイドは極力軽量にしたかったのです。OrionはJettyを使っていますが、少し重いです。Orionのサーバを使う必要はないと判断した時点で、他のすべての選択肢が選択可能になりました。ツール開発プロジェクトでよく直面するのは、自分たちで開発しているツールを自分たちではあまり使わないということです。Scriptedではこの傾向を止めたいと思い、日々の開発で自分たちで積極的に使っています。この結果、自然にJavaScriptをクライアントサイドに加えてサーバサイドで使うということになり、Node.jsを選択しました。いままでのところ、上手く動作しています。CommonJSのサポートも開発しました。サーバ側を簡単に作るのに必要だったからです。
InfoQ:Scriptedはローカルで動作するのでサーバからのレスポンスも速いです。しかし、他の開発者と共有するためのウェブ上のリポジトリとはどのように統合するのですか。
現時点では、ウェブベースのリポジトリや'サーバサイド'のワークスペースとは統合していません。開発ロードマップには、リモートのサーバに配置できるようにする計画がありますが、初期の目的ではありません。今のところ、開発者はコードをリモートのワークスペースにアップしたいと思っていないようです。しかし、将来的には変わるでしょう。
InfoQ: 将来の計画はどうでしょうか。
まだ初期段階です。バージョン0.2が初回バージョンで、フィードバックを集めています。これからの数回のリリースはJavaScriptの編集機能の改善に注力するつもりです。コードの理解を改善しコンテンツアシストを強化します。また、同時にサイドパネルに検索やドキュメントのような機能を配置したいです。テストを実施して結果を表示することが簡単にできるテスト機能も検討し始めたいです。デバッガの統合も進めたいです。
InfoQ: Scriptedに対するVMwareの関わりや計画を教えてください。
VMwareはしばらくの間、Spring Tool SuiteやGroovy/Grails Tool Suiteというような開発ツールに積極的に関わってきました。VMwareはIDEのプラグインを提供するという従来の方法の代替を探す試みとしてScriptedを開発しています。軽量なエディタを使いたいち思っている開発者はいますが、現時点ではそのような開発者は普通のIDEが搭載しているコンテンツアシストやリファクタリングのような生産性を向上させてくれる機能をあきらめなければなりません。Scriptedは、あきらめる必要はないということを示そうとしています。また、ScriptedのチームはOrionのチームと積極的に協業しています。
編集注: ScriptedはGitHubから入手できる。ライセンスはEclipse Public License 1.0。