What’s Cool In IntelliJIDEA. Part III

はじめに


これは、What' s Cool In IntelliJIDEA. Part IIIの翻訳です。

本文

IntelliJでは、基本機能かプラグインかのどちらかでほとんどどんな機能でも使えるのだけれども、IDEの力が及ばないことをしたくなる可能性もまだ少しある。そんなレアケースには、IntelliJExternal Toolsを見てみたくなるだろう。


つい最近私はこのケースに出くわした。JDKのツールを使いたかったのだが、コマンドラインに切り替えて適切な場所まで移動する、というやり方よりもっと柔軟な方法でしたかった。私の意図は「何かショートカットキーを押すだけで結果が得られる」ということだったので、External Toolsを試すことにした。


Javaを研究するときによく使うツールはjavap - Javaクラスファイルの逆アセンブラだ。これは、バイトコードを研究するときには必須だ。IntelliJではASMプラグインを使うことができ、必要な結果をおおよそ与えてくれるのだが、私は今でもjavapの生出力を読むほうが好きだ。


IntelliJでjavapを外部ツールとして設定するには、Settings -> External Toolsと進んで、Add...を押す。ツールのありか、作業ディレクトリ、ツールへの引数が設定できる。


http://4.bp.blogspot.com/-g2_YSFMMIMs/TlvT75Jv_BI/AAAAAAAAOBU/bnZY7A9vyAQ/s1600/external-tools.png


この方法の良いところとは、IntelliJではいくつか基本的なマクロが提供してくれている点だ。このマクロは、ツール実行時の引数を動的に解決してくれる。javapに関して言えば、パラメータ$FileClass$を、作業ディレクトリに$OutputPath$を設定しておけば十分だ。これで終わり。もうツールを使う準備はできている。


http://3.bp.blogspot.com/-CIFIrTcuB_o/TlvUo3j6o8I/AAAAAAAAOBc/SzICrEiwnkI/s1600/external-tools-2.png


ポップアップメニューで、外部ツールをグループ化する「グループ」を定義することもできる。私はjavapにはjdkというグループ名を使っている。こんな感じだ。


http://3.bp.blogspot.com/-Oe-I6DcnlzE/TlvV1llPw4I/AAAAAAAAOBk/du4A-PbUvj4/s1600/external-tools-3.png


これはクールなのだけれども、ファイルを右クリックし"JDK"グループを選択して展開しなければならず、結局javapを実行するだけ、というのは使いにくいということに気づいた人もいるかもしれない。
そこで、ショートカットが助けになる!Settings -> Keymapで、このツールに対するショートカットを定義できる。キーマップの良いところは、競合したショートカットを選択した場合にIntelliJがそれを検知して通知してくれる点だ。


http://3.bp.blogspot.com/-mvBXlf4syhM/TlvXtuybjoI/AAAAAAAAOBs/4SgDYVJorDc/s1600/keymap.png


もう一つ微調整が残っている。javapに割り当てたショートカットを押すと、逆アセンブル結果がIDEのコンソールに出力されるが、コンソールはソースコードのちょうど下にある。これを横に並べて見れたらもっと便利だろう。そのために、RunウィンドウをIntelliJのサイドパネルにドラッグアンドドロップすることができる。これで、作業中のソースコードの右となりにjavapの結果を見ることができる。


http://1.bp.blogspot.com/-_cI-MhefOAM/TlvYvXnKnrI/AAAAAAAAOB0/W_d1QW1t0pY/s1600/javap.png


唯一欠けているのはjavap出力のシンタックスハイライトだが、これでも要望には十分応えられている。