複数言語を使うならRubyMine/IntelliJオススメ! 


ずっとJetBrains製品が好きで愛用してきたんですが、いまだにRubyMineやIntelliJ IDEA Ulitimateを使いこなせていないのでいないので勉強も兼ねて、少し調べてみました。
今回はRubyのような動的言語でもIntelliJ/RubyMineが便利な点を中心に書いています!


🐝 Mac/Windows/Linuxを同じ操作感で使える

IntelliJのエディタのもうひとつの魅力は主要なOS、Mac/Windows/Linuxをサポートしていること。
開発環境に悩まされることなく、開発を続けられるのは大きな魅力。

🍮 豊富な言語、フレームワークをサポート

IntelliJのエディタの魅力のひとつは豊富な対応言語とフレームワークをサポートしていること。

Web - Java/Scala/Go/Ruby/Python/PHP/Node.js
FW - Spring/Rails/Play/Django/Lalabel/Angular
スマホ - Android/iOS/Kotlin

つまり別の言語を扱う際にも、便利な機能がそろった状態で開発を始めることができ、
エディタを切り替えることなく、開発ができる。

🎳 コードの静的解析機能の充実

スペルチェック

レビューの前に自分でスペルミスに気付くことができる

コーディングスタイル

ストレスのない範囲で自動で整形してくれるのでコーディングスタイルが一定になる

スクリーンショット 2016-03-11 8.22.36

🚕 コード保管がすばらしい

  • Rubyのような動的言語でも80%くらいOK。(ただし、メタプロだとかなり無理)
  • Active Recordの動的に作られるメソッドなどはフレームワークレベルでサポート

メソッドを探したり確認する時間が減って、処理の流れが追いやすくなる。

🚌 リファクタリング機能が充実

変数やメソッドのリネーム、メソッドへの切り出しなどがショートカット1つで実現できます!

🐰 シンタックスハイライトが賢い

Rubyのファイル内なのに、SQLのシンタックスハイライトを前後の文脈から推測して設定してくれる。心優しい。

😀 テストUIがわかりやすい

変更を監視して自動でRSpecを実行するといったかゆいところに手が届く機能が充実。

🐹 ローカルの変更を探しやすい

ローカルでファイル単位で変更を自動で保持してくれている(行の編集からファイル削除まで)ので、
Gitにコミットしきれないような細かい変更履歴を確認できる。

(Git連携)ブランチ間で比較ができる

Gitで現在のブランチとdevelop/xxxとのブランチの比較が簡単にできる。

(Git連携)コミット時の差分を見ながら修正できる

コミット時の差分を見ながらコードを修正できる。

😎 定義元にジャンプ(Command + B)

定義元にジャンプも容易です。Gemのソースコードなどにジャンプするのが簡単なのは魅力です。
ただし、Javaのように一発では飛べない(候補が複数ある場合もあります)

🗽 構造選択が賢い(Command + ↑)

構造選択(Structure Selection)と呼ばれるもので、文法を解釈して構造の単位で選択範囲を広げてくれます。
コレは地味だけどめっちゃ便利っす!

🎉 複数行選択も賢い (Command + Control + G)

複数行選択もできます。しかも同一ファイル内での同じ文字列を一括置換も簡単です!

🚜 何でも検索できる(SHIFT x 2)

クラス、メソッド、単語が出現している場所、ファイル、各種操作までなんでも検索できる機能。
一度でまとめて検索ができるのは便利です。

😸 何回か前のコピー&ペーストを探す(Command + Shift + V)

他のフリーソフトでもできますが、過去にコピーした古い文言の履歴を持っていて、その履歴からコピー&ペーストをできる。

🐠 Mac向けのkeymapのPDF

IntelliJが配布してくれているIntelliJ/RubyMine向けのキーマップが書かれたリファレンスシートです。
印刷して近くに貼っておいてコーディングのときに見れるようにしておくと捗ります。

WindowsやLinuxのリファレンスシートもググるとすぐ見つかります!

🎂 チームに導入することで

  • ゆるやかにRubyMineに誘導した結果、6-7人の開発チーム全員がRubyMine / IntelliJ使いに。
    • (※ 強制はNGと思います、こだわりがなかったのでいいところをひたすらアピールしました)
  • チーム内で導入することでコードの整形や静的解析が統一されるのでRubyでもメリットがあると実感。スペルミスなど、お互いに無用なレビューの指摘が減る。
  • Rubyのような動的言語でもツールを統一するメリットは大きいと実感。

以下はIIJさんの開発チームがIntelliJを導入された時の発表資料です。

🏈 サムライズムさんのIntelliJハンズオン!

この記事を書くのにあたってIntelliJの勉強(特にJava周り)も兼ねて、サムライズムさんが主催している
IntelliJ IDEAハンズオン」に参加してきました。
無料でビールまでいただけて、 @yusuke の小粋な解説でハンズオンができるので、
いろいろ知らなかった機能を知ることができて、人生で一番有意義なハンズオンでした!

🐯 参考リンク

📚 おすすめの書籍