コーディング体験を向上させるIntelliJプラグイン8選
2021年8月26日
0 分で読めます多くの開発者にとって、優れたIDEはスイスアーミーナイフのようなものです。開発者に必要なさまざまな機能を1つのプログラムに統合したツールです。そのため、多くの開発者は用途ごとに複数のツールを開くのではなく、お気に入りのIDEを中心に作業します。
最近公開されたJVM Ecosystemレポート2021によると、Javaエコシステムで最も広く使われているIDEは、圧倒的にIntelliJ IDEAです。一方で、開発者の半数以上がローカル環境で複数のIDEを使用していることも示されています。そこで、ニーズに合った拡張機能やプラグインを追加して、使い勝手を高めてみるのもよいでしょう。この記事では、マーケットプレイスで無料提供されている、実用性の高いプラグインを8つご紹介します。コーディング体験の向上に役立つものばかりです。
IntelliJ IDEAの現行バージョンには、Maven、Gradle、Lombok、Dockerなど、多くのプラグインがあらかじめ同梱されています。JetBrainsは、特定の言語やフレームワーク向けのプラグインも数多く提供しています。これらのプラグインがIntelliJ IDEAとほぼ常にシームレスに連携するのは、その理由の1つです。この記事では、主にサードパーティ製の優れた追加プラグインに焦点を当て、日々の作業にさらなる便利さをもたらすものをご紹介します。
1. Maven Helper
Javaエコシステムでは、依存関係管理機能も備えたMavenが、今も最も広く使われているビルドシステムです。Vojtech Krassaが開発したMaven Helperプラグインを使うと、ツリービューなどで依存関係を簡単に確認したり、依存関係の競合を見つけたりできます。

さらに、Mavenのゴールをあらかじめ定義して組み合わせておけば、ボタンをクリックするだけ、またはコンテキストメニューから実行できます。プラグインのゴールも実行可能です。以下の例では、packageゴールを呼び出してテストをスキップするゴールを追加しました。

2. Rainbow Brackets
小さくシンプルで洗練されたプラグインで、作業がぐっと楽になります。Rainbow Bracketsは、括弧が入れ子になっているときに、括弧や丸括弧を異なる色で表示します。カーソルを合わせなくても、括弧で囲まれた文がどこで終わるのかを簡単に見分けられます。
Java、Scala、Clojure、Kotlin、Python、Haskell、Agda、Rust、JavaScript、TypeScript、Erlang、Go、Groovy、Ruby、Elixir、ObjectiveC、PHP、HTML、XML、SQL、Apex language、C#、Dart、Pug/Jade、Bash、Vue.jsなど、多くの言語に対応しています。
以下のJavaの例では、括弧が色分けされるため、String.format()を含む行が格段に読みやすくなっています。また、Clojureにも対応しているので、このプラグインがあれば、私たち一般人にもClojureの構文が読みやすくなるかもしれません。

3. Presentation Assistant
私の仕事には、プレゼンテーションも含まれています。ライブコーディングを行う機会も多くあります。キーボードショートカットで関数を呼び出すたびに、Presentation Assistantプラグインが、使用した関数とキーの組み合わせをボタン上に表示してくれます。これなら、聴衆も操作を簡単に追いかけ、同じ手順を再現できます。
マウスで関数を呼び出した場合も、ショートカットキーを含むメッセージが表示されます。つまり、IntelliJの機能をマウスで呼び出すときにショートカットキーがあれば、そのキーの組み合わせをすぐに確認して覚えられます。

4. RoboPOJOGenerator
アプリケーションをRESTエンドポイントに接続するのは、今ではよくある作業です。多くの場合、エンドポイントから返されるJSONを、アプリケーション内のオブジェクトに変換する必要があります。大量のJSONを手作業でオブジェクトに変換するのは、かなり大変です。そんなときに便利なのがRoboPOJOGeneratorプラグインです。JSONの出力をジェネレーターに貼り付け、必要に応じて使用するフレームワークを選ぶだけ。RoboPOJOGeneratorが、選択したフレームワークに合ったアノテーション付きのPOJO(Plain Old Java Objects)をJavaやKotlin向けに生成してくれます。時間の節約にとても役立つプラグインです。

5. Snyk Vulnerability Scanner
Snyk Vulnerabilty Scannerプラグインは、Javaアプリケーションをより安全に開発するのに役立ちます。サードパーティの依存関係に含まれる既知のセキュリティ問題だけでなく、独自のコードもスキャンできます。
オープンソースの依存関係に脆弱性が見つかった場合、脆弱性を含まないパッケージへの修正方法を提案します。脆弱なパッケージが推移的依存関係の場合は、更新が必要な最上位のバージョンを知らせます。脆弱性を修正した最上位の依存関係がない場合は、どの推移的依存関係のどのバージョンでセキュリティ問題を解決できるかを提示します。
独自のコードについては、Snyk Vulnerabilty ScannerがSQLインジェクション、クロスサイトスクリプティング(XSS)、パストラバーサルなど、脆弱性につながるコードの書き方を検出します。コード内の該当箇所や脆弱性につながるフローを示し、オープンソースコードから得られた安全なコードへの修正案を提示します。コードのスペルチェッカーのように、セキュリティ上のミスを未然に防いでくれます。
このプラグインの詳細は、ブログ記事をご覧ください:IntelliJ IDEAでコーディングしながらJavaのセキュリティ問題を修正する方法

6. AsciiDoc
私はAsciiDocが大好きです。Markdownによく似ていますが、多くの人にとって柔軟性の高いテキスト形式です。AsciiDocはPDF、EPUB、HTMLなど、さまざまな形式に変換できます。
AsciiDocプラグインを使うと、エディターでAsciiDocファイルを簡単に作成・編集し、プレビューできます。たとえば、コードのドキュメント作成に使っています。ウェブページとしてHTMLに出力できるほか、PDFのほうがよいという人のためにPDFにも出力できます。
IDE内でこうした作業ができるのは非常に便利です。ダウンロード数は210万を超えており、IntelliJ IDEAのこの優れた拡張機能を評価しているのは私だけではありません。
7. Randomness
Randomnessプラグインは、小さくて便利なツールです。初めて見たときは、「面白そうだけど、実際どれくらい使うだろう?」と思いました。ところが、第一印象から想像していたよりずっと頻繁に使っています。このツールでは、数値、文字列、実際の単語、UUIDなどのランダムデータを生成できます。型を指定して配列を作ることもできます。
デモを行う機会が多い私にとって、キーボードショートカットでランダムデータやデータの集合を作れるのはとても便利です。ユニットテストでも、ランダムなテストデータの生成に使っています。出力は細かく設定できるので、自分のニーズに合わせて調整できます。
設定できる項目には、配列のサイズ、ランダムな文字列に使う文字セット、単語の長さなどがあります。私が変更したのは、配列の出力から[]を外し、中身だけを表示するようにしたことくらいです。こうすれば、以下のようにJavaのListメソッドを使って簡単にList.of()を作成できます。

8. SonarLint
SonarLintプラグインは、コード品質の確保に役立ちます。コードの不審な点、好ましくないパターン、潜在的なバグを見つけるのに役立ちます。デフォルトでは、PMD、findbugs、checkstyleのルールをおおまかに統合した静的ルールが使われます。このプラグインの便利な点は、問題をその場で表示し、IntelliJのGit機能とも連携することです。コードをコミットする前に、問題があれば警告してくれます。
sonarQubeまたはsonarCloudを使っている場合は、ローカルのsonarLintと同期して、コードを同じルールセットでチェックできます。もちろん、単独で使っても、あらゆる開発者にとって役立つツールです。

先ほど、Snyk Vulnerability Scannerについても触れました。sonarLintと比べても、機能が重複しているとは思いません。SonarLintもセキュリティに関連する問題を見つけることはありますが、それが主な目的ではなく、この点ではSnykのほうが優れています。一方、さまざまな潜在的バグやスタイル上の問題を見つける能力は、現時点ではSonarLintがSnykプラグインを大きく上回っています。私は両方のプラグインを同時に使っていますが、それぞれが互いを補い合っていると感じます。
CTFを始めよう
オンデマンドのバーチャル入門ワークショップで、CTFチャレンジの解き方を学びましょう。



