jEdit - プログラマ向けテキストエディタ

本連載ではソフトウェア開発で使用するIDEについてのトピックを紹介しているが、専用のIDEには及ばないものの、テキストエディタの中にはさまざまなプログラミング向けの機能を備えているものが多い。Emacsはプログラミング向けテキストエディタの代表格といえるが、今回はJavaで作成された高機能テキストエディタjEditを紹介したい。

jEditはJava/Swingで開発されたテキストエディタで、海外のコミュニティでは古くから高い人気を獲得していた。しかし当時は日本語のインライン入力ができないこと(有志によってインライン入力可能なバージョンがリリースされていたが)などの理由から日本ではそれほど普及しなかった。しかし最近のバージョンでは日本語のインライン入力が可能になっており、日本語環境でも充分実用的なエディタとなっている。

jEditの基本的な機能

まずはjEditの基本機能を紹介しておこう。

jEditでは複数のファイルを同時に開き、編集対象のバッファを切り替えながら作業を行うことができる。また、ウィンドウを上下左右に自由に分割することができる。複数のファイルを見比べながら編集を行いたい場合に便利な機能だ。

図1 ウィンドウの分割

また、さまざまな言語の強調表示に対応している。C/C++やJava、Perl、Ruby、PHP、Pythonといったメジャーな言語は一通りカバーしている。ソースコードのフォールディング(折りたたみ)や、対応するカッコの強調表示なども可能なほか、[CTRL]+[b]で単語の入力補完が可能となっている。

図2 [CTRL]+[b]で単語の入力補完

補助的な機能だが、jEditには以下のようなファイルブラウザが標準で搭載されており、ファイルやフォルダの作成/編集/削除などを行うことができる。後述するプラグインも同様だが、単一のウィンドウとしてフローティング表示するだけなく、エディタにドッキングさせてサイドバーのように表示することもできるようになっている。

図3 ファイルブラウザ

もちろんマクロ機能も備えている。メニューからマクロの記録や再生が可能だ。記録したマクロはBeanShellスクリプトとして保存されるため、スクリプトをカスタマイズすればキーボード操作だけでは実現できない複雑なマクロを作成することも可能だ。jEditにも標準でいくつかのマクロが付属しているので参考にするといいだろう。

さまざまなプラグイン

jEditはプラグインで機能を拡張することも可能だ。プラグインマネージャを使用してインターネット経由でプラグインのインストールを行うことができる。jEditを活用するにはプラグインのインストールは欠かせない。ここではプログラミングの際に便利なプラグインをいくつか紹介しておこう。

jEditをIDE風にする

Project ViewerはjEdit上で簡易的なプロジェクト管理を行うためのプラグインだ。また、SideKickはソースコードのアウトライン、ErrorListはソースコードの問題を表示するためのビューをそれぞれ提供する。これらのプラグインを組み合わせることでjEditをIDE風に利用することができる。

図4 プラグインを組み合わせてIDE風に

また、TaskListプラグインを使うとソースコード中にTODOやFIXMEなどのタスクタグを記述しておき、タスクを一覧表示することができる。これも最近のIDEでは一般的な機能だ。

AntとJUnitの統合

AntFarmプラグインをインストールするとAntをjEdit上で実行することができる。実行結果はConsoleプラグインが提供するビューに表示される。ちなみにConsoleビューではシェルやBeanShellを直接叩くこともできる。AntFarmプラグインを用いることでソースコードの編集だけでなく、アプリケーションのビルドやテストをjEditに統合することができるだろう。

また、jEdit上からJUnitを実行するためのJUnitプラグインも用意されている。JUnitのテストランナーそっくりのビューをjEdit上から利用することが可能だ。

図5 JUnitプラグイン

まとめ

jEditなどのテキストエディタは専用のIDEと比べると起動速度が早く、軽快に動作するというメリットがある。文字コードや改行コードの扱いも考慮されており、海外製のエディタにありがちな日本語関係でのトラブルも少ないはずだ。BeanShellでマクロが記述できたり、Javaでプラグインを開発できるなど、Javaプログラマにはうってつけのテキストエディタといえる。

ソースコードのちょっとした修正や、IDEの恩恵を受けづらいスクリプト言語などの場合はjEditのようなテキストエディタを活用することでより効率的なプログラミングが可能になるかもしれない。開発ツールも適材適所で使い分けるといいだろう。