Eclipse から秀丸に戻れない理由とかじゃなくて
ぜひ Vim とか Emacs に戻れない理由が知りたいです!
いや、Eclipseからテキストエディタに戻れない10の理由を読んだ感想なんですが。
秀丸とか (あと Tera なんとかとか Em なんとかとか K2 なんとかとか) まあそういう普通のエディタと IDE を比べたら、IDE の方が優れていて当たり前というか、優れてなかったら IDE の存在ってなんなんだというか、まあそういう感じですが。こと Vim と Emacs になると、Eclipse とどっちがいいのかわからんのですよ。いや本当に。
以下 Eclipse についてライト Vim ユーザがなんとなく雑感。
1. ぶっちゃけ、Vim でも困らないことは結構あります。
- 入力補完 → Ctrl-N と Ctrl-P で足りてます。(Intellisense 並みの水準でなくても困ってない)
- メソッドの宣言場所の表示 → ctags と連携でできます。
- メソッドの参照箇所の把握と巡回 → :vimgrep と :cnext でできます。
- TODO/FIXME の一覧管理 → :vimgrep と :cnext で(ry
- オートフォーマット → や、シェルと連携できるのは前提なんで……できない理由がありません。
- バージョン管理ツールと連携 → や、シェルと連携できるのは(ry
- ブレークポイントによるデバッグ → シェル(ry
2. でも多分便利なとこは便利なんでしょう。
Vim にできなそうで便利そうなものは確かにあります。
構文解析した上でのリファクタリングとか、setter, getter の自動補完とか。マウスオーバーで javadoc 表示も地味に捨てがたいんじゃないかな。
3. でもそれ、できるべきなんでしょうか。
- setter, getter の自動生成とか。
自動生成しないとやってられないほどアクセサ書くのが面倒な Java っていう言語はなんなの? っていう。生成を楽にしても可読性は別に上がらないというか、そういうのは言語仕様を変えていくべき話なんじゃないでしょうか。まあ、そんなこと現場で言ってもどうにもならんのは事実なんでしょうけど、かといって胸張られてもなあというか。
- import 文の自動挿入もそう。
自動挿入しないとやってられないようなものを書かせる Java っていう言語はなんなの? っていう。IDE に自動挿入ができるというなら、それはコンパイラが勝手にやってソースには何も書かせない、っていうのがあるべき形なんじゃないんでしょうか。もちろんモジュール名が衝突する場合に、明示的に利用するモジュールを指定する記述は必要ですが。
- 構文解析を伴う高度なシンタックスハイライトも同様。
はい、Vim にはできません (し、多分やりません) 。でもこれも、裏で一生懸命構文解析を走らせなくても、例えば Ruby ならローカル変数は local ですし、インスタンスフィールドは @instance_field ですし static フィールドは @@static_field で グローバル変数は $global ですよ。色つけなくても見えますし、その色づけだって秀丸にすらできるでしょう。
結局、その素晴らしいシンタックスハイライトとかは、本当に本質的な「Eclipse の」メリットなんでしょうか。「アレな言語だけど一生懸命高性能なツール作って使えるようにしましたわーい」っていうのは、今ひとつ賛成できません。言語の発達を阻害します。ツールでどうにかするんなら、Java という言語を拡張するぐらいの勢いでやらないと「現場の小手先の知恵」以上に意味があるものにはならないと思うんですよね。(C のプリプロセッサは、ずいぶん奇形ではありますがこのアプローチです。Lisp のマクロや OCaml の camlp4 (今もう p5 か) はその究極形。)
機械化でソースレビューがラクになったとか、大事なことだと思いますけど、ぶっちゃけ Eclipse を推す文章を読んだ感想は大体「Eclipse いいなー」じゃなくて「Java やだなー」なんですよね……。