What’s Cool In IntelliJIDEA. Part I - 1

はじめに

これは、What’s Cool In IntelliJIDEA. Part Iの翻訳(の一部)です。


量が多いので何回かに分けます。
角かっこ[]は訳者が付け足した箇所です。

What’s Cool In IntelliJIDEA. Part I

EclipseかIntelliか?NetBeansかEclpseか?IntelliJNetBeansか?IDEに関する議論はソフト開発者の間で最も人気のあるトピックであり、決着が付きそうもない。私は自分のことをIntelliJの大ファンだと思っている。しかし、IntelliJのほうが上手くできることがたくさんある一方で、ある意味ではNetBeansEclipseのほうが良い点もある、ということがわかった。
この投稿で、私が最高に気に入っているIntelliJの機能を概観し、また、IntelliJが優っている面を示したい。


かつて友人が言った。

IDEは好きじゃないね。IDEは冗長なコードを書く手助けをしてしまう。僕は生活の9割はコードを読むことに費やしている。冗長なコードっていうのは、そのコードリーディングの効率を損ねるんだ。

私は彼は間違っていると思う。IDEというのは、コードを書いたり生成したりするだけに使われるのではなく、コードを読んだり分析したりすることにも使われるというのが真実なのだ。君たちは筋金入りのEmacs/Vimの使い手かもしれないが、テキストエディタではできないこともあるのだ。

ナビゲーション

ソースコードのナビゲーションはプログラマが日頃から行う活動のひとつだ。基本的に、EmacsVimでコードをナビゲートするのは難しいことではないが、それは基本的なものに限られている。IDEはもう一歩進んだナビゲーションを行うのだ。


IntelliJのナビゲーション機能がどんなものかを見てみよう。まず最初は、Crtl+Nで実行する"Open Type"だ。


http://3.bp.blogspot.com/-z7u7Wr1-xwQ/TgSpb-0Jn3I/AAAAAAAANe4/pJIQfBtp0LI/s1600/CtrlN.png

[マッチするクラス・インタフェースが表示されます]


Eclipseでも同じ事がCtrl+Shift+Tでできるし、その動きは全く同じだ。Ctrl+Shift+Nはファイルを開くのに便利だ。EclipseのCtrl+Shift+Rと同じだ。これはこんなものだが、まだある。Ctrl+Shift+Alt+Nで、特定のシンボル(例えばメソッド名)のすべての出現箇所をみつけることができる。


http://4.bp.blogspot.com/-iksIvvyLWjw/TgSrfr27BlI/AAAAAAAANfA/Q_hSM1MJwAQ/s1600/CtrlShiftAltN.png

[マッチするシンボル(メソッド名、フィールド名…)が表示されます]


これは、IntelliJがそのシンボルの出現箇所をスキャンするということではなく、むしろ、[IntelliJが内部的にキャッシュしている]コード構造にマッチするコードの要素をさがしてるのだ。だから、単にメソッド名が現れている箇所ではなくてメソッド宣言の一覧を見ることができるのだ。クラスが同じ階層を共有していない場合[(別のモジュールだったりjarファイルだったりする場合)]、この機能はとても便利だ。


ソースを探索する際、別クラスへ飛んだり、別のメソッドを見たり、型宣言を開いたりすることがある。
時折、何ステップか戻ったり、逆に進んだりするのはよくあることだ。Ctrl+Alt+(left|right)は、そのための便利なショートカットだ。コード上で矢印を押すとその箇所が履歴に記録され、戻ったり進んだりできる。大きなコードベースを探索してちょっと前にどのファイルを開いていたかを思い出せないような場合、これはとても便利だ。


Ctrl+Eで、最近閲覧したファイルの一覧を出せる。最近閉じたファイルをまた開くことも非常によくあることだ。


http://2.bp.blogspot.com/-uVPyD8dlgRk/TgSvSTqqqrI/AAAAAAAANfI/mf-8DgGX5rg/s1600/CtrlE.png

[最近閲覧したファイルの一覧がポップアップされます。]


履歴を行き来するのは、EclipseのAlt+(left|right)と同じだが、最近編集したファイルの一覧は表示できない。IntelliJでは、Ctrl+Shift+Eでできる。コードブラウジングを快適にする機能が他にもたくさんある。例えば、IntelliJEclipseには、現在開いているクラスの場所を即座に閲覧する機能が提供されている。Alt+Homeを押すと、ナビゲーションバーがそのクラスのパスとともにポップアップされる。


IntelliJがこのナビゲーションバーで提供する機能でクールなのは、実際にはファイルを開かないでファイルの中身を見ることができる点だ


http://4.bp.blogspot.com/-E0aqtcRmzho/TgUXRHaYiCI/AAAAAAAANf4/J3V4pDE83Fw/s1600/AltHomeCtrlShiftI.png
[そのファイルにジャンプせずその場でポップアップ表示されます]。


Eclipseで似たような機能に、Alt+Shift+Bで呼び出す「パンくずリストで見る」がある。違いは、EclipseではJavaの型が選択されたときにしか機能しない点と、ナビゲーションバーとして機能するだけ、という点だ。つまり、即座にプレビューすることはできない。さらに言うと、私は、Eclipseの「パンくずリスト」を簡単に取り除く方法を、ツールバーにある専用のボタンをクリックする以外には見つけられなかった。


IntelliJでは、どんなシンボルを調べたい場合でもCtrl+Shift+Iでプレビューを実現できる。例えば、メソッド呼び出しの箇所でこのショートカットを実行すると、そのメソッドのソースコードがポップアップされる。


http://4.bp.blogspot.com/-E0aqtcRmzho/TgUXRHaYiCI/AAAAAAAANf4/J3V4pDE83Fw/s1600/AltHomeCtrlShiftI.png


それに、型階層化されたコードを閲覧する場合は、同じようにポップアップから実装クラスを即座に選択できる。


http://3.bp.blogspot.com/-xtpn9n20T9I/TgUagF47J2I/AAAAAAAANgI/_uch902bvTg/s1600/CtrlShiftI-interface.png

[ジャンプする先の実装クラスをその場で選択できます。]


クラスの型階層を探索する点について言えば、階層ビューはEclipseでも同じように利用できるが、IntelliJは素晴らしい実装をしている。IntelliJを際立たせているのは簡単に実装クラスへ飛べる点だ。例えば、インタフェースでのメソッド定義の箇所から、あらゆる実装クラスへジャンプできる。あるインタフェースに複数の実装クラスがある場合は、Ctrl+Alt+Bを押すことで、実装クラスの一覧がポップアップされる。


http://2.bp.blogspot.com/-XnQoN7QgXHc/TgUelHeq-zI/AAAAAAAANgQ/V4Ebna9zww0/s1600/CtrlAltB.png

訳者補足

「なんかすげーショートカット多いし複雑だな」と思った方がいるかもしれません。
しかし、実際はよく使う機能は使いやすいキーバインドに変更したりしますし、
覚えたくなければ、ランチャーみたいなのに登録してよびだすこともできます。



(よく使う機能を登録したランチャーみたいなもの)


コマンド自体も検索できます。だから、最悪コマンド名さえ覚えておけば、キーバインドは覚えなくても大丈夫です。コマンド名も強力な補完が効きますので、うろ覚えでも大丈夫です。




(そのコンテキストで使用可能な"usage"を含むコマンドが表示されています)


私は、Alt-xにこの機能を割り当てています(EmacsのM-xのアナロジーです)。