RubyMineをさらに便利にするプラグインたち：2021年版

# はじめに
[Ateam Commerce Tech Inc. Advent Calendar 2021](https://qiita.com/advent-calendar/2021/ateam-commerce-tech)の20日分です。
本日は@hibiheionが担当します。
業務では主に自転車ECサイト[cyma](https://cyclemarket.jp)のバックエンドの機能をRailsで書いています。


# RubyMineとのかかわり
RubyMineはJetBrainsが提供しているRubyが得意なIDEです。
cymaのバックエンドは数年前にRailsへリプレースしたのですが、その頃から愛用しています。
最近はTypeScriptやReactといったフロントエンド系の開発への関わりも出てきてRubyMineではつらいのではないかという懸念もあったのですが、そういったものに対してもコード補完などは効いて問題なく開発できました。
このあたりは多彩なIDEを作っているJetBrainsの面目躍如といったところかもしれません。


# RubyMineのプラグイン
上で書いたようにRuby以外の開発もスムーズにできるのはプラグインで機能を拡張できるおかげです。
2年前のアドベントカレンダーでRubyMineのプラグインについて書いていたのですが、それ以降は必要になったものしか入れていなかったので改めて調査してみました。
その中から以前に紹介していなかったもので気に入ったものを紹介します。
以前の記事で紹介したものについては以下をご覧ください。

- [RubyMineをさらに便利にするプラグインたち：前編](https://qiita.com/hibiheion/items/01670ac2c508b25f9f15)
- [RubyMineをさらに便利にするプラグインたち：後編](https://qiita.com/hibiheion/items/e3000e12de25f4313680)

使用したRubyMineのバージョンは2021.2.3です。
執筆時点の最新版は2021.3ですが、対応できていないプラグインがいくつかあるので様子を見ています。


## 調査の進め方
以下の方法で調査しています。

- RubyMineのプラグインでダウンロード数が1,000件を超えているものを対象とする  
https://plugins.jetbrains.com/search?orderBy=downloads&products=ruby
- 特定のサービスや言語のサポートを追加するものは除外
- 説明を読んでやりたいことが理解できないものは除外
- 少し触って使い方のわからないものは除外

ちなみにプラグインの数は最初の条件だけだと約630個あったのですが、
他の条件を加味した結果実際に試してみたものは100個にも満たないと思います。


## 紹介内容について
- 各プラグインの基本機能のみ説明しています。詳細は各プラグインのWebページをご確認ください。
- 個人的な評価を三段階＋特別枠でつけています。
    - 優：知らなかったことを後悔している
    - 良：積極的に使っていきたい
    - 可：あったら使う
    - 特別枠：役には立たないが紹介したい
- ショートカットはキーマップ次第で変わるのでメニューからの操作で説明しています。なお、メニューから操作するとショートカットキーを教えてくれるプラグインもあります。
- プラグインの情報は2021年年12月時点のものです。
- 紹介するプラグインの多くはPHPStorm等の他のJetBrains製品でも利用できます。


# プラグイン一覧

| 名称 | 概要 | 評価 |
| :-- | :-- | :-- |
| [GitLink](#gitlink) | 今いる行をGitHubやGitLabで表示する | 優 |
| [Quickly Change Editor Font Size](#quickly-change-editor-font-size) | フォントサイズをまとめて変更できる | 優 |
| [TabMover](#tabmover) | タブの位置を入れ替えることができる | 優 |
| [Code comments](#code-comments) | ソースコードとは別にソースコードのコメントを書く | 良 |
| [OnLineSearch2](#onlinesearch2) | 選択範囲を指定した検索エンジンで検索する | 良 |
| [Rainbow CSV](#rainbow-csv) | CSVファイルの列ごとに色を変える | 良 |
| [Git Branch Cleaner](#git-branch-cleaner) | 不要だと考えられるブランチをまとめて削除する | 可 |
| [Partial Navigation](#partial-navigation) | スクロール量を調整する | 可 |
| [ProjectTree Color Highlighter](#projecttree-color-highlighter) | プロジェクトツリーのファイルやフォルダに色をつける | 可 |
| [Power Mode Ⅱ](#power-mode-%E2%85%B1) | キー入力を楽しくする | 特別枠 |


## GitLink
https://plugins.jetbrains.com/plugin/8183-gitlink

### 機能
- キャレットが当たっている行をGitHubやGitLabで表示する
    - ブラウザを開かずにリンク先だけをコピーすることも可能
- 修正箇所などを共有するときに便利

### 使い方
- GitHubなどをブラウザで開く
    1. 該当箇所にキャレットを合わせた状態で右クリックする
    1. 右クリックメニューの「Open in GitHub」を選択する
- GitHubなどへのリンクのコピー
    1. 該当箇所にキャレットを合わせた状態で右クリックする
    1. 右クリックメニューの「Copy GitHub link」を選択する
- 設定の変更
    - 設定画面の「Other Settings→GitLink」を開く


## Quickly Change Editor Font Size
https://plugins.jetbrains.com/plugin/14717-quickly-change-editor-font-size-preference

### 機能
- フォントサイズをまとめて変更できる
    - 標準機能のフォントサイズの拡大・縮小ではそのとき見ているファイルのフォントしか変わらない
    - このプラグインを使うと他のファイルのフォントサイズにも反映される
        - 正確には言設定画面の「Editor→Font」のサイズ設定を変更している
- リモートワークで画面共有をしていると文字が見えにくいという問題がたびたび起きるので助かる

### 使い方

説明のために機能の検索から実行していますが、メニューやショートカットを割り当てるのが現実的です。

- フォントサイズの拡大
    1. shiftキーを2回押して表示される検索ウィンドウで「editor font」を検索する
    1. 検索結果から「Increase Editor Font Size Preference」を選択する
- フォントサイズの縮小
    1. shiftキーを2回押して表示される検索ウィンドウで「editor font」を検索する
    1. 検索結果から「Decrease Editor Font Size Preference」を選択する
- フォントサイズの初期化
    1. shiftキーを2回押して表示される検索ウィンドウで「editor font」を検索する
    1. 検索結果から「Reset Editor Font Size Preference」を選択する


## TabMover
https://plugins.jetbrains.com/plugin/10131-tabmover

### 機能
- タブの位置を入れ替えることができる
    - 隣への移動だけでなく、先頭や末尾への移動、タブグループ間の移動も可能
- 少し前のRubyMine本体のバージョンアップ後にドラッグ＆ドロップでタブの移動ができなくなってしまっている
    - 設定を見落としている可能性もある

### 使い方
説明のためにメニューから実行していますが、繰り返し実行することが多いためショートカットを割り当てるのが現実的です。
プラグインのインストール時に割り当てられるキーマップもあります。

1. 移動したいタブを開いた状態で右クリックする
1. 右クリックメニューの「Move Tab→下記の一覧のアクション」を選択する（省略しているものもある）
  
| 動作 | アクション名 |
| :-- | :-- |
| 先頭へ移動 | Move Tab to First |
| 末尾へ移動 | Move Tab to Last |
| 左へ移動 | Move Tab to Previous |
| 右へ移動 | Move Tab to Next |
| 左のタブグループへ移動 | Move Tab to Previous Splitter |
| 右のタブグループへ移動 | Move Tab to Next Splitter |
| 左のタブグループもしくはウィンドウへ移動 | Move Tab to Previous Windows/Splitter |
| 右のタブグループもしくはウィンドウへ移動 | Move Tab to Next Windows/Splitter |
| 新しいプロジェクトウィンドウへ移動 | Move Tab to New Windows |


## Code comments
https://plugins.jetbrains.com/plugin/8351-code-comments

### 機能
- ソースコードとは別の場所にソースコードのコメントを残すことができる
- コメントをつけた場所の一覧からコメントの場所にジャンプできる
    - コメントつきのブックマークのような使い方も可能
- コメントをダウンロードすることもできる
![code_comment.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206611/9e6ebe50-c3b3-ec42-1d01-2821b2276d34.png)

### 使い方
- コメントの追加
    1. コメントを追加したい範囲を選択する
    1. トップメニューの「Code→Add Comment」を選択する
    1. コメントを入力し、「OK」をクリックする
- コメントの一覧
    1. ツールウィンドウの「Code Comment」を開く
- コメントへのジャンプ
    1. Code Commentのツールウィンドウでコメントをダブルクリックする
- コメントの削除
    1. Code Commentのツールウィンドウでコメントを選択する
    1. Code Commentのツールウィンドウの「-」ボタンをクリックする


## OnLineSearch2
https://plugins.jetbrains.com/plugin/12678-onlinesearch2

### 機能
- 選択範囲を指定した検索エンジンで検索する
  - システム標準のブラウザを開く
- Getパラメータで検索キーワードを受け取るシステムであれば検索エンジンとして登録できる
- 初期設定のままだと使い勝手が悪い
  - 例えば、「present?」とGoogleで検索しても「present?」という単語の検索結果にしかならないため
  - 設定を変更して「ruby + 選択範囲」といったような検索できるようにすると使いやすくなる
![online_search.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206611/174236ec-692b-6d83-de29-e93140cb04f1.png)

### 使い方
- キーワード検索
  1. 検索したい範囲を選択した状態で右クリックする
  1. 右クリックメニューで「OnlineSearch→登録した検索エンジン」を選択
- 設定変更
  - 設定画面の「Other Settings→OnlineSearch」を開く


## Rainbow CSV
https://plugins.jetbrains.com/plugin/12896-rainbow-csv

### 機能
- CSVの列ごとに色をわけて表示する
![rainbow_csv.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206611/65427977-439d-8b92-0881-f20b12b62832.png)

### 使い方
- CSVファイルの色分け
    - プラグインを有効にするだけ
- 設定の変更
    - 設定画面の「Editor→General→Rainbow CSV」を開く
- カラーの変更
    - 設定画面の「Editor→Color Schema→Rainbow CSV」を開く


## Git Branch Cleaner
https://plugins.jetbrains.com/plugin/10059-git-branch-cleaner

### 機能
- 不要だと考えられるブランチをまとめて削除できる
    - 削除対象のブランチは一覧から選択する
- 以下の条件に該当するブランチが対象となる
    - ブランチがmainブランチにマージ済み
    - リモートブランチが存在しない
- ローカルブランチの削除のみでリモートブランチには反映されない点は注意が必要
![git_branch_clearner.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206611/448e3602-f733-b89e-7ede-57da86d23998.png)


### 使い方
- ブランチの削除
    1. 右クリックメニューの「Git→Delete Old Branches...」を選択する
    1. 削除するブランチにチェックを入れる
    1. 「DELETE SELECTED」をクリックする


## Partial Navigation
https://plugins.jetbrains.com/plugin/11952-partial-navigation

### 機能
- スクロール量を調整する
    - スクロール量は設定画面で設定できる
- 通常のスクロールは1画面分移動するが、画面の半分だけ移動するといったことができる

### 使い方
説明のために機能の検索から実行していますが、メニューやショートカットを割り当てるのが現実的です。

- 下へスクロール
    1. shiftキーを2回押して表示される検索ウィンドウで「partial page」を検索する
    1. 検索結果から「Partial Page Down」を選択する
- 上へスクロール
    1. shiftキーを2回押して表示される検索ウィンドウで「partial page」を検索する
    1. 検索結果から「Partial Page Up」を選択する
- 設定の変更
    - 設定画面の「Other Settings→Partial Navigation」を開く


## ProjectTree Color Highlighter
https://plugins.jetbrains.com/plugin/13951-projecttree-color-highlighter

### 機能
- プロジェクトツリーのファイルやフォルダに色をつける
  - タブにも反映される
![projectree_color.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206611/92e104b3-5c2f-a34f-2ea9-9becc3d0a524.png)

### 使い方
- 色を付ける
  1. プロジェクトツリーのファイルやフォルダ、もしくはタブを右クリックする
  1. 右クリックメニューの「Highlight→Color」を選択する
- 色をクリアする
  1. プロジェクトツリーのファイルやフォルダ、もしくはタブを右クリックする
  1. 右クリックメニューの「Highlight→Clear」を選択する


## Power Mode Ⅱ
https://plugins.jetbrains.com/plugin/8251-power-mode-ii

### 機能
- 役には立たないのだが、特別枠としてどうしても紹介したかった
- 言葉で説明するより動画を見た方が早いので上のリンクの動画を見てください
- 直接的な実用性はない
    - メンタル面での高揚感は得られるかもしれない
    - 余裕のないPCだと動作が重くなりがち
- 同じような「activate-power-mode」というプラグインもあるが、こちらは動かなかった

### 使い方
- POWER MODEの使用
    - プラグインを有効にするだけ
- 設定変更
    - 設定画面の「Appearance & Behavior→Power Mode Ⅱ」を開く
    - 「ENTER POWER MODE!」が全体のオン・オフの切り替え
![power_mode_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206611/7663ab61-cc3d-353d-7196-e224b4d82843.png)


# まとめ

有名なものは以前に紹介済みということもあって使いたいと感じるプラグインがあるのか不安もあったのですが、終わってみれば10個のプラグインを発見することができました。
前に調査したときになかったものもありましたので、プラグインも定期的に見直したほうが良いということを実感しました。

以前の記事とかぶりますが、最後にプラグインの開発者の皆様に対して感謝を述べて締めたいと思います。
プラグインを作ってくださってありがとうございます！


# 次回予告

次回のアドベントカレンダーは@hytkgamiさんの「Next.jsアプリケーションにメンテナンスモードを実装する」の予定です。