RubyMineをさらに便利にするプラグインたち：前編

[2021年12月12日　追記]
RubyMineのバージョン2021.2.3に合わせて使い方を修正しました。

# はじめに

[Ateam cyma Advent Calendar 2019](https://qiita.com/advent-calendar/2019/ateam-cyma) の 2日目です。
本日の担当はエイチームのEC事業本部でWebアプリケーションエンジニアをしている@hibiheionです。
業務では主に自転車ECサイト[cyma](https://cyclemarket.jp/)のバックエンドの機能をRailsで書いています。

# 本題

みなさんはエディタは何を使ってますか？
私は業務ではRailsを触っているのですが、エディタはRubyMineを使っています。
RubyMineは有料なだけあってRailsでの開発をとても効率よくできるようになっています。
RubyMineは他のエディタと同じようにプラグインで機能を拡張することも可能です。
ただ、RubyMineは他のエディタと比べると日本語でプラグインの情報が見つかりにくい気がします。

そんなわけで、RubyMineのプラグインの情報をまとめれば役に立つのではないかと思ったので、自分が使ってみて良かったと感じたプラグインのざっくりとした使い方を紹介します。
この記事でRubyMineを使った開発がより便利になれば幸いです。

なお、紹介するプラグインの多くはPHPStorm等の他のJetBrains製品でも利用できます。


# 紹介内容について
- 各プラグインの基本機能のみ説明しています。詳細は各プラグインのWebページをご確認ください。
- 特定の言語やサービスを使えるようにするものは対象外としています。
- 個人的な評価を三段階でつけています。
    - 優：ないと困る
    - 良：使用頻度が多め
    - 可：使用頻度が少なめ
- ショートカットはキーマップ次第で変わるのでメニューからの操作で説明しています。なお、メニューから操作するとショートカットキーを教えてくれるプラグインもあります。
- プラグインの情報は2021年12月時点のものです。


# プラグインのインストール方法
プラグインの紹介の前に念のためプラグインのインストール方法を紹介しておきます。

1. 設定画面を開く
    - Macではトップメニューの「RubyMine→Preferrences」を選択する
    - Windowsではトップメニューの「File→Settings」を選択する
2. 「Plugins」を開く
3. 「Marketplace」から検索してインストールする


# プラグインの紹介
## 一覧

全部で20個あります。
順序は評価と名称の順です。
記事が長くなったため、前後編の2回に分割しました。
今回は個人的には手放せない「Grep Console」から「Tabdir」の9個を紹介します。
残りのプラグインは[後編](https://qiita.com/hibiheion/items/e3000e12de25f4313680)で説明しています。

| 名称                     | 概要                                              | 評価            |
| :--                    | :--                                             | :--           |
| [Grep Console](#grepconsole)           | tail -fで出力したログをGrep検索で絞り込める                           | 優             |   |
| [HighlightBracketPair](#highlightbracketpair)   | カーソルがある箇所を囲んでいるカッコをハイライト表示する                 | 優             |   |
| [IdeaVim](#ideavim)                | Vimと同じような操作で使用できるようにする                               | 優             |   |
| [Key Promoter X](#key-promoter-x)         | ショートカットキーが存在する操作をマウス等から実行した際に操作内容をショートカットキーとともに記録する | 優             |   |
| [Quick File Preview](#quick-file-preview)     | ファイル一覧で選択したファイルのプレビューを表示する                 | 優             |   |
| [Railways](#railways)               | Railsのルーティングの一覧を表示する                            | 優             |   |
| [Rainbow Brackets](#rainbow-brackets)       | 対になるカッコを色分けして表示する                                | 優             |   |
| [Scroll From Source](#scroll-from-source)     | ファイル一覧で開いているファイルの場所に移動する       | 優             |   |
| [Tabdir](#tabdir)                 | タブ一覧で同じ名前のファイルにはディレクトリ名を表示する                    | 優             |   |
| AceJump | ページ内の指定した文字にカーソルを移動する                           | 良             |   |
| Git Scope              | ファイルの一覧からGitの差分を確認できる                           | 良             |   |
| GitToolBox             | Git連携の機能を強化する                                   | 良             |   |
| MultiHighlight         | 複数の検索結果をハイライト表示する                               | 良             |   |
| String Manipulation    | 色々な方法で文字列を操作する                                  | 良             |   |
| BrowseWordAtCaret      | カーソルがあたっている単語をファイル内検索する                              | 可             |   |
| JSON Viewer            | JSONを見やすい形に整形する                                 | 可             |   |
| Open in splitted tab   | 参照先を分割したウィンドウで表示する                              | 可             |   |
| Pipe Table Formatter   | パイプ（｜）を使ったテーブルを揃える | 可 |
| Realigner              | 指定した文字で複数行の連結、複数行への分割、文字列の囲い込みができる                            | 可             |   |
| SQL Formatter          | SQLを見やすい形に整形する                                  | 可             |   |


## GrepConsole
https://plugins.jetbrains.com/plugin/7125-grep-console/

### 機能
- tail -fで出力したログをツールウィンドウに表示する
    - tail -fで出力するログをGrep検索で絞り込める
    - 設定に基づいてログをハイライト表示する
        - Rails用、SQL用など用途に応じた設定が可能
        - 例えば、Rails用ではFATALを赤くする、SQL用ではINSERTを赤くする、といったことができる
        - 設定内容は慣れないとわかりにくい
- 設定に基づいてファイルをハイライト表示する
    - 基本的にログファイルを対象に使う
- 確認したいログを見つけやすくなる

### 使い方
- tailログに関する機能
    - tailログの開始
        - トップメニューの「Tools→Tail Fail in Console」もしくは「Tools→Tail Current File in Console」を選択する
              - エディタで開いているファイルのログを出力するときに後者を使う
    - tailログの絞り込み
        1. ログ出力のツールウィンドウで右クリックする
        2. 右クリックメニューの「Grep」を選択する
        3. Grep用の表示に切り替わるので、検索窓に条件を入力する
            - この状態でログが増えると条件に該当するログだけが表示される
            - 右上の「RELOAD」ボタンをクリックすると出力済みのログから条件に該当するものだけを絞り込める
    - tailログのハイライト表示
        1. ログ出力のツールウィンドウで右クリックする
        2. 右クリックメニューの「Show Grep Console Statistics in Console」を選択する
        3. 設定用のウィンドウが表示されるので設定を行い、「OK」をクリックする
- ファイルに関する機能
    - ファイルのハイライト表示
        1. 対象のファイルを開いている状態で、トップメニューの「Tools→Highlight Editor According to Grep Console Settings」を選択する
        2. 設定用のウィンドウが表示されるので設定を行い、「OK」をクリックする
    - ファイルのハイライト表示の解除
        - ハイライト表示した状態で、トップメニューの「Tools→Clear Grep Highlight in Editor」を選択する


## HighlightBracketPair
https://plugins.jetbrains.com/plugin/10465-highlightbracketpair/

<font color="Red">RubyMine 2021.2.3では動作しません。</font>

### 機能
- カーソルがある箇所を囲んでいるカッコをハイライト表示する
- ソースコードが読みやすくなる
- 表示例
  - このプラグインを入れていない場合  
![highlight_bracket_pair_before.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206611/0eff9e01-1f44-de52-e8e7-8869da4e2b19.png)
  - このプラグインを入れている場合  
![highlight_bracket_pair_after.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206611/f3c0458a-0f16-d08c-60c6-736ab88e8674.png)

### 使い方
- プラグインを有効にするだけ


## IdeaVim
https://plugins.jetbrains.com/plugin/164-ideavim/

<font color="Red">RubyMine 2021.2.3ではキャレットが元の表示に戻らない不具合があります。</font>

### 機能
- Vimと同じような操作で使用できるようにする
    - 私はVimからRubyMineに乗り換えたのですが、さほど違和感なく使用できています
- RubyMineの機能も同時に使用できる
    - IdeaVimの状態がノーマルモードでも挿入モードでも動作する
- IdeaVimがCtrlキーを使うため、RubyMineのキーマップの調整が必要
    - Macはまだしも、Windowsだと影響が大きい

### 使い方
- ON・OFFの切り替え
    - トップメニューの「Tools→Vim Emulator」でON・OFFを切り替えられる
- プラグインの設定の変更
    - 本家Vimの「.vimrc」と同じように、「.ideavimrc」というファイルで設定を変更できる
- RubyMineと重複しているキーマップの確認
    - 設定画面の「Editor→Vim」からRubyMineと重複しているキーマップを確認できる
    - Vim Emulatorが有効な状態で確認する必要がある


## Key Promoter X
https://plugins.jetbrains.com/plugin/9792-key-promoter-x/

### 機能
- ショートカットキーが存在する操作をマウス等から実行した際に操作内容をショートカットキーとともに記録する
- ショートカットキーの存在の気づくことができるため、ショートカットキーを覚えやすくなる

### 使い方
- 操作の記録
    - プラグインを有効にするだけ
- 操作履歴の確認
    - サイドメニューから「Key Promoter X」のツールウィンドウを開く
    - サイドメニューに出ていない場合、トップメニューの「View→Tool Windows→Key Promoter X」から表示できる


## Quick File Preview
https://plugins.jetbrains.com/plugin/12778-quick-file-preview/

### 機能
- Projectツールウィンドウ（ファイル一覧）で選択したファイルのプレビューを表示する
    - プレビューといっても普通にファイルを開いたときとの違いはほとんどなく、プレビューの状態でも内容を変更できる
    - 普通にファイルを開いたときと違い、Projectツールウィンドウで他のファイルに移動したときにプレビューは自動的に閉じられる
- 複数のファイルを辿っていくときに便利
- RubyMine 2021.2.3では標準機能で同じようなことができるが以下のような優位性がある
    - 標準機能だとプレビュー状態のタブは文字がイタリックになるだけだが、こちらのプラグインの場合は見分けやすい見せ方にできる
        - 初期設定だと「<<タブ>>」いう表示になる
  - 設定画面で細かい挙動を設定できる

### 使い方
- 他の設定の影響を受けるため、以下の事前準備が必要
    1. Projectツールウィンドウの設定を開く
    2. 「Enable Preview Tab」を無効にする
    3. 「Open File with Single Click」を無効にする
- プレビューの表示
    - Projectツールウィンドウで対象ファイルをクリックする
        - ダブルクリックしたときに正式にファイルを開く
    - プラグインの設定によって変わるため、これは初期設定の場合の動作
- プラグインの設定の変更
    - 設定画面で「Editor→General→Quick File Preview」を開く

## Railways
https://plugins.jetbrains.com/plugin/7110-railways/

### 機能
- Railsのルーティングの一覧を表示する
    - ルーティングを検索できる
    - 選択したルーティングのアクションに移動できる
- ルーティングが把握しやすくなる

### 使い方
- サイドメニューから「Routes」のツールウィンドウを開く
- サイドメニューに出ていない場合、トップメニューの「View→Tool Windows→Routes」から表示できる


## Rainbow Brackets
https://plugins.jetbrains.com/plugin/10080-rainbow-brackets/

### 機能
- 対になるカッコを色分けして表示する
    - Rubyでは`()`、`[]`、`{}`が対象
    - HTMLではペアになるタグの`<>`を同じ色で表示する
- ソースコードが読みやすくなる
- 表示例
    - このプラグインを入れていない場合  
![rainbow_brackets_before.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206611/0a645eda-6f99-b771-aba6-bcd0322227ab.png)
    - このプラグインを入れている場合  
![rainbow_brackets_after.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206611/10ff61a1-2c7d-3fdc-5c80-62492717d812.png)

### 使い方
- カッコの色分け
    - プラグインを有効にするだけ
- プラグインの設定の変更
    - 設定画面で「Other Settings→Rainbow Brackets」を開く


## Scroll From Source
https://plugins.jetbrains.com/plugin/7606-scroll-from-source/

<font color="Red">RubyMine 2021.2.3では動作しません。</font>

### 機能
- Projectツールウィンドウ（ファイル一覧）で開いているファイルの場所に移動する
- 他の方法でも開いているファイルに移動できるが、そちらの方法よりショートカットが割り当てられる・任意のタイミングで実行できるという利点がある
    - ナビゲーションバー（パンくずリスト）から「Jump To Source」したときと違い、ショートカットキーが割り当てられる
    - Projectツールウィンドウの設定で「Autoscroll from Source」を有効にした場合はファイルを開いたときに自動で移動するが、このプラグインでは必要なときにだけ移動できる

### 使い方
1. ファイルを開いている状態で右クリックする
2. 右クリックメニューの「Scroll From Source」を選択する


## Tabdir
https://plugins.jetbrains.com/plugin/5045-tabdir/

### 機能
- タブ一覧で同じ名前のものが存在するファイルにはディレクトリ名を表示する
    - RubyMineの標準機能だと同じ名前のファイルがタブ一覧にないとディレクトリ名が出ないが、このプラグインでは同じ名前のファイルがタブ一覧になくても良い
- Railsではどうしても同じ名前のファイルが増えるので、このプラグインがあればファイルを見分けやすくなる
- 表示例
    - このプラグインを入れていない場合  
![tabdir_before.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206611/169835ca-b82e-9cac-223d-feae5616ba9a.png)
    - このプラグインを入れている場合  
![tabdir_after.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206611/ab496aaf-b305-f5b7-d121-5b47750db840.png)

### 使い方
- 他の設定の影響を受けるため、以下の事前準備が必要
    1. 設定画面で「Editor→General→Editor Tabs」を開く
    2. 「Show directory for non-unique file names」のチェックを外す
- ディレクトリ名の表示
    - プラグインを有効にするだけ
- プラグインの設定の変更
    - 設定画面で「Other Settings→Tabdir」を開く


# 次回予告

[Ateam cyma Advent Calendar 2019](https://qiita.com/advent-calendar/2019/ateam-cyma) の 2日目の記事は以上です。

3日目は引き続き私@hibiheionが担当します。
内容はもちろん「[RubyMineをさらに便利にするプラグインたち：後編](https://qiita.com/hibiheion/items/e3000e12de25f4313680)」です。
今回紹介しきれなかった残りの11個のプラグインを紹介します。


# さいごに

株式会社エイチームでは、一緒に働けるチャレンジ精神旺盛な仲間を募集しています。

エンジニアで興味を持った方はcymaの[Qiita Jobs](http://bit.ly/35E1I08)をご覧ください。

そのほかの職種は、[エイチームグループ採用サイト](http://bit.ly/2XQpd3q)をご覧ください。