05日目 Eclipseとの違い

多くの人は,なにかしらeclipseにガッカリしてIntelliJに手を出すと思いますが,IntelliJeclipseは操作体系からずいぶん違いがあります。eclipseに慣れてからIntelliJに手を出すと,逆にガッカリする事請け合いだと思うので,主だった違いを列挙しとこうと思います。

インクリメンタルビルド

インクリメンタルビルドはeclipseの目玉機能のひとつだと思いますが,残念ながらIntelliJにはありません(IDEA12にそれっぽい設定項目*1がありましたが,はたしてあれはインクリメンタルビルドなんだろうか...*2)。
これに連動した話で,eclipseのProblemsビューのように現在のエラー状況を一覧表示するウィンドウもありません*3


じゃあ,どうするかというとビルドはビルドボタン(もしくは相当のショートカットキー)を押さない限り実行されません(クリーンビルドなどは Build メニューから行います)。


ビルドを実行すると,その結果が Messagesウィンドウに表示されますので,結果としてコンパイルエラーになったファイルの一覧がそこに表示されます。


この操作系になれちゃっているので,実のところインクリメンタルビルドの便利さを分かってませんw IDEA12でコンパイラ周りが改善されるようなので,次のバージョンではちょっとはマシになってるかも知れませんね。
Brand New Compiler Mode in IntelliJ IDEA 12 Leda | IntelliJ IDEA Blog

ワークスペースやプロジェクトの考え方

そもそもワークスペースという考え方が無いです。強いて言えば,IntelliJのプロジェクトがeclipseワークスペースに相当します。eclipseのプロジェクトが,IntelliJのモジュールに相当します。
その辺は,このドキュメントが詳しいです。ありがたいことに日本語に訳してくれた方がいます。
Install IntelliJ IDEA - Help | IntelliJ IDEA
Eclipseユーザの為のIntelliJ IDEA Q&A - 砂漠の音楽

設定まわり

だいたい,こんな対比になります。

  eclipse IntelliJ
IDEの設定 Window->Preferences File->Settings
プロジェクトの設定 (Projectを選んで) Properties File->Project Structure

Ctrl+1とかCtrl+2とか

eclipseの空気読み機能であるCtrl+1(Quick fix),Ctrl+2(Quick Assist)ですが,これに相当する機能はIntelliJにはありません。辛うじてAlt+Enter(Show Intention Action)が近いですが,Ctrl+1ほど何でもアリな機能ではないです。


eclipseとの発想の違いだと思いますが,「何か分かんないけど,良い方法を教えて」に答えてくれるeclipseに対して,IntelliJは「こんな事やりたいから手伝って」的なアプローチを取っています。よって,そもそもやりたいことを指示してこそ,IntelliJが輝くとも言えます。
そうは言ってもずっと受け身なわけではなく「おいおい,ここヘンじゃね?」的な指摘は都度してくれます。


コード補完でも同じで「Ctrl+Spaceの一族」で書いたように,補完目的(ノーマル,スマート,クラス名*4,テンプレート展開)に応じてキーを使い分けないとイケない。ちなみに,テンプレート展開(Live Template)については,隠しオプションを有効にすることで通常補完でも使えるようになります。
IntelliJの隠しオプション一覧

早いか遅いか

よくTwitterのタイムラインとかで「eclipseは遅い」と聞きますが,IntelliJも十分遅いと思います。特に立ち上げ時のインデックス作成なんてのは顕著ですね(それでもNetBeansのよりは早いかも)。インデックス作り終わってからは,それなりにサクサク動きますが,この辺はモロに主観の問題ですし,なんだかんだでマシンスペックが支配的なので,どっちがどうとは言えないかと思います。

UIがカッコいいか悪いか

SWTでプラットフォームネイティブっぽいUIのeclipseと,いかにもJavaでございなIntelliJNetBeansも似たり寄ったり)と比べてどっちがカッコ良いかってのも難しい問題だなーと思います。これもまた好みの問題で,時代背景もある程度影響しますので,どっちが気に入るかは,その人次第ってことで。:-)
IntelliJの見た目の歴史

*1:File -> Settings -> Compiler -> Make project automatically

*2:どうもIDEA12のそれは、インクリメンタルビルドに近い機能っぽいです。

*3:一応、ProjectツールウィンドウにProblemsというビューはありますが、eclipseのそれとは趣旨が異なるかなと...

*4:クラス名補完はIDEA12からは無くなったようです。