mottox2 blog

VSCodeからRubyMineに乗り換えてみた

diaryvscoderubymineeditor

TypeScript+VSCodeの組み合わせはエディタは軽く、補完も最強という特徴があり最高の開発体験を得られます。
ここ最近はほとんどTS(JS)を書いているので開発環境の恩恵を受けていたのですが、久しぶりに仕事でRailsを触ることになりました。1

しかし、最高の開発環境に慣れてしまったあとでRubyを書くと補完が弱い箇所にイライラしたり、JSの文法で書いてしまったりと大分辛さを感じます。とにかくツライ!2

ここで、JetBrains(RubyMine)のライセンスをセールで買っていたことを思い出したので、RubyMineに乗り換えてRuby専用環境の恩恵を受けようと思いました。

初心を忘れないため / RubyMineへの乗り換えを検討している人のために感想を残しておきます。

ファーストインプレッション

  • とにかくショートカットキーがわからない。
  • 補完はサクサク。(いい意味で)Rubyとは思えない。
  • ちょっと重い。特に起動が。
  • Ruby/Railsに特化した機能が便利。
  • Rubyに関してはVSCodeより良さそうな印象。

ショートカットキー

自分はプログラミングを始めて4年ほどVimを使っていたのでVim Pluginは必須です。RubyMineでは「IdeaVim」というVimキーバインドを再現してくれるプラグインが用意されており、インストールの途中、オプトイン形式でインストール出来ます。
Vimキーバインドはプラグインで解決するのですが、エディタ固有のキーバインドに苦戦しています。

VSCodeでよく使った機能との対応を把握すると多少楽だった。このあたりのショートカットは抑えておきたい。

RubyMine VSCode
ファイルのインクリメントサーチ Cmd + Shift + O Cmd + P
コマンドパレット Cmd + Shift + A Cmd + Shift + P
ターミナルの起動 option + F12 ctrl + `

補完がいいぞ

TypeScriptほどじゃないけど、まあまあ書きやすくなった。
Railsプロジェクトだけど、モデルのフィールド名ぐらいの補完はしてくれる。

vimやvscodeではctagsプラグインなどを使って実現していたが、デフォルトでいい感じにしてくれるのはかなり体験がよい。

ちょっと重い

筆者のエディタ遍歴がVimとVSCodeなので、とにかく軽量なエディタを使ってきました。そのこともあり統合開発環境は起動がめちゃくちゃ遅いという印象があります。
iMac 2017でメモリ40GBで「まあ我慢出来る」ぐらいの感想なので、ノートPCで起動しようとは思えないかも…
同じ職場のちょっと古いMBPを使っているエンジニアいわく「まともに動かない」とのこと

Ruby/Railsに特化した機能が便利

大体コマンドパレット(RubyMineでは「Find Action」と呼ぶらしい)からRuby/Railsの各種機能が呼べる。ターミナルもあまり必要なくなってよい。
とりあえず「rake」とか「rails」で検索するといい感じのアクションを示してくれる感じ

今後やりたいこと

  • Ctrl + Aで行頭に、Ctrl + Eで行末に動くショートカットキーを設定した。(Vimキーバインドに乗っ取られてる)
  • VSCodeのCmd + [Cmd + ](インデント変更)に当たるショートカットキーを設定したい。

感想

ちまたのプログラミングスクールではRuby on Railsを教えているスクールが多いとの噂ですが、補完の効くTypeScriptとNext/Nuxtみたいな組み合わせで始めたらいいんじゃないでしょうか?

作りやすさもポイントだとは思うけど、快適に開発出来るかどうかって結構重要だと思います。TypeScript最高!

Rubyに関してはRubyMineでもう少し頑張ってみようと思います。年内はRailsやっていき。

  1. もともとはRailsをずっとやってきた人間なので、去年までRubyの方が得意でした。本当は新規のRails案件は避けていたけど、知り合い経由だったので引き受けた。

  2. TSだと動かす前にエラーがわかることが多いので、更にツライ

B!
event

技術書典7で『Slack App開発レシピ』を頒布します

技術書典7で『Slack App開発レシピ』という技術同人誌を頒布します。(サークルページ) この本は、技術書同人誌博覧会で頒布した『Slack App開発ガイド』の続編になります。 開発ガイド

tip

Node.jsでファイルを直接実行した際にしか動かない処理を書く

Node.jsで他のファイルから呼び出すためのファイルを書いた時に、その関数をいい感じに実行したいと思ったことはないだろうか?具体的にはテストから呼び出すほどでもない用途でnode index.jsを

event

フロントエンドNightで『JSXでつくるDSL』というLTをしてきた

gifteeさんのオフィスで開催された『フロントエンド Night #1』というイベントでLT枠を頂き『JSXでつくるDSL』というLTをしてきました。 > 話したこと話したこと JSXから

lt