Retty Tech Blog

実名口コミグルメサービスRettyのエンジニアによるTech Blogです。プロダクト開発にまつわるナレッジをアウトプットして、世の中がHappyになっていくようなコンテンツを発信します。

開発生産性を120%にブーストするIntelliJ IDEAのプラグイン紹介

この記事はRetty Advent Calendar Part2の17日目の記事です。

はじめに

Rettyで生産性改善を担うProductivityチームに所属している山田です。
生産性改善というと技術負債に立ち向かって開発しやすい環境を整備する、定型作業を自動化して本質的な作業に向かいやすくする、といった大掛かりなものが思い浮かびやすいと思いますが、普段使っているツールを最大限に活用して短い時間で仕事を終えられるようにすることもまた生産性改善の一つではないかと思います。
そこで、本記事では私自身が便利に活用しているIntelliJ IDEA(以下IntelliJと記述します)のプラグインを紹介することで、社内、ひいてはこの記事を読んでくださったIntelliJユーザーの生産性の改善に挑戦してみます。

おすすめプラグイン紹介

以下におすすめのプラグインをざっくり分類分けして列挙していきます。

Git系

GitToolBox

plugins.jetbrains.com

これはIntelliJのGit関連の機能を大幅に拡張するプラグインです。

導入するとまず上記画像のようにエディタ上のコードブロックや、選択行右側にCommitのAuthor名やCommitメッセージが表示されるようになっていることに気が付きます。普段の作業の邪魔にならない程度にこういった情報を表示してくれる点がまず便利ですね。また、定期的に自動でgit fetchを実行してくれる機能もあります。

その他個人的に便利だと感じているのが、 Recent Git branches という機能です。

この機能を実行すると、上記画像のような直近5件のブランチ名を表示したダイアログが出現します。ここから任意のブランチ名を選択することで該当のブランチをcheckoutする事ができます。開発作業が忙しくなってくると複数のブランチを切り替える事が多くなってくる事がありますが、そういった際にいちいち作業対象のブランチ名を覚えたり調べたりしなくても済むようになるので、大変快適です。

文字数の都合でこのプラグインの紹介はここで打ち切りますが、そのほかにもGit関連が便利になる様々な機能が提供されていておすすめです。ぜひプラグインのページを見てどんな機能があるか確認してみてください!

Find Pull Request

plugins.jetbrains.com

このプラグインを導入するとエディタ上のコードを右クリックした際に、以下画像のような「Find Pull Request」という項目が追加されます。

これをクリックすると、選択した行を最後に変更したPull Requestをブラウザで開く事ができます。
実装について「なぜこのような実装となっているのか?」というHowの部分が気になった際には大抵実装背景などの詳細がまとまっているPull Requestを探すことになるのですが、このプラグインを利用することで、コードからシームレスに変更を行ったPull Requestを開く事ができるようになるため、背景の調査がより簡単にできるようになります。

plugins.jetbrains.com

このプラグインを導入するとエディタ上のコードを右クリックした際に、以下画像のような「Copy GitHub link」という項目が追加されます。(GitHub以外のサービスを利用されている方は、それぞれ別のサービス名とアイコンが表示されます)

これをクリックすると、選択した行に対応するGitホスティングサービス上でのリンクを得ることができます。実際の業務では実装について調査し、該当行へのリンクを添えてドキュメンテーションや共有を行う機会がよくあります。そのような作業を行う際に、コードジャンプなどのIDE由来の便利な機能を活用してコードを探索しつつ、GitHub等を経由せずに直接リンクを取得することができ、これにより作業を高速で完了させる事ができるようになります。

エディタ拡張系

InspectionLens

plugins.jetbrains.com

IntelliJの静的解析で見つかったerrorやwarningは、デフォルトでは以下のような波線で箇所の指摘をしてくれます。

一方で、その内容についてはカーソルを該当箇所に持って行ったり、別途静的解析結果を閲覧しないと確認することができないです。

プラグインを導入することで、以下画像のように発見された問題の内容がエディタ上の該当行横に表示されます。

コードを編集しながらシームレスに発生している問題を把握することができるので、より快適なコーディング体験を得ることができます。 特に、大画面のディスプレイで開発をしていて画面の横幅に余裕のある場合におすすめです。

Randomness

plugins.jetbrains.com

特にテストを記述している時などに、ランダムなデータを何度も入力したい場合があります。手動で頑張るでも良いのですが、このプラグインを利用するとこういう場合に楽をすることができます。本プラグインはランダムなデータを生成する機能を持っており、IntelliJ上でのショートカット入力でこれを呼び出すことができます。例えば複数のUUIDによるユーザーIDをこの機能を利用して生成したい場合は以下の動画のようになります。

多数のランダムなデータの入力が楽ちんになりました。このプラグインは生成するデータのカスタマイズも行うことが可能で、例えばUUIDの場合だと大文字小文字、ハイフンのあるなし、クオートの種類などを指定することができます。こうしたカスタマイズ機能により、さまざまな言語やユースケースで活用することが可能です。

Rainbow Brackets

plugins.jetbrains.com

ネストの深い複雑なコードを読んでいると、開き括弧に対応する閉じ括弧の位置がわかりにくくなり、コードリーディングの効率が悪くなります。 このプラグインを導入すると、(), {}, [],<>のような括弧系の記号を始めとする各種箇所に対してネストに応じた色付けを行ってくれるようになります。

以下に、あえてネストを深くして記述してみたFizzBuzzに対しての適用前後の比較を用意してみました。

before after

括弧に対して色が割り振られたことで、こういったコードでもぱっと見で対応する括弧がどこにあるのか判断しやすくなりました。

また、利便性とは異なりますが、個人的にはエディタがカラフルだとテンションが上がるので、そういった気分的な部分にも良い影響がありそうだと思っています。

ショートカット関連

Mnemonic Keymap

plugins.jetbrains.com

IntelliJには無数のショートカットが存在しており、さらに、OSに応じて異なる設定となっています。私はWindowsMac, たまにLinux上でIntelliJを使うことがありますが、これら全ての場合で異なる設定となっているショートカットを使いこなす事ができない事に悩んでいました。

このプラグイン

  • デフォルトよりも覚えやすい
  • OS間での差分がない

という特徴を備えたショートカットを提供してくれます。これによりIntelliJのショートカットを飛躍的に活用しやすくなりました。

プラグインについては、既に個人的に紹介する記事を記述しています。気になった方はぜひこちらも一読していただければと思います。

zenn.dev

Key Promoter X

plugins.jetbrains.com

このプラグインを導入すると、マウスのクリックで行った操作に対して、ショートカットを使わなかったことの指摘を通知してくれます。例えば行に対してのブレークポイントの設置をクリックで行うとこのように通知されます。

Actionsを確認すると、以下のように同様の操作を実現できるショートカットキーを教えてくれたり、通知をオフにすることが可能なリンクを表示してくれます。

私の場合は既存のショートカットを捨て、Mnemonic Keymapを導入する際にこのプラグインを試してみましたが、これによりショートカットの学習がかなり捗りました。

その他

EnvFile

plugins.jetbrains.com

dotenvなどを利用し、コードを実行する際に利用する環境変数.envで管理することはよくあると思います。IntelliJではRun/Debug Configuration環境変数を設定する必要があり、そのままでは二重管理を行う必要が生じます。しかし、本プラグインを利用することで、IntelliJでも.envから環境変数を読み出し、コード実行時に利用することができるようになるため、二重管理の問題から解消されます。

JsonParser

plugins.jetbrains.com

プラグインJSONのvalidateやformatを行ってくれるものです。 手入力したJSONが正しいフォーマットになっているか確認したい、一行にまとめられていて人間が理解するのが困難なJSONを読みたい、こういった場合に力を発揮します。

Awesome Console

plugins.jetbrains.com

IntelliJのConsoleやTerminalに出力されるファイル名に対して、クリックすることで該当ファイルをIntelliJのエディタで開くことができるリンクを付与してくれるプラグインです。

例えばlsコマンドを実行するとこのような感じです。

lsコマンドだとあまりありがたみを感じないですが、本プラグインのページで言及されているような、ファイル名を含んだログファイルを読む場合などに非常に重宝します。
その他、GitはTerminalでコマンド手打ち派の方にも便利です。git statusを初めとする各種Gitコマンドの出力にもリンクが付与されるようになるため、変更のあったファイルを開くなどの作業が簡単に行えるようになります。

おわりに

本記事ではIntelliJのおすすめプラグインを11個紹介しました。この中のうち一つでも生産性をより高められる新しい発見があれば幸いです。
今回の記事では紹介するのを断念したのですが、IntelliJにはプラグインによる拡張を行わなくても多数の便利な機能があり、それらを活用することでさらに生産性を高めることができます。最近個人的にハマっているのがIntelliJに備え付けられたGit機能なのですが、この辺りもまたどこかで紹介することができればと思います。