はじめに
昨日のRubyMineアドベントカレンダーは @LuckOfWise さんの「僕がRubyMineを使い始めたたった1つの理由」でした。
この記事の中では「Command + クリック」でコードジャンプする方法が紹介されていましたが、僕はいつも「Command + B」を使っています。
見た感じ、どちらも同じ機能っぽいです。
このコードジャンプ機能、本当に強力で超便利です。
個人的には「RubyMineを使うと確実に生産性が高くなる理由」のトップ3に入ると思います。
今回の記事はこのコードジャンプ機能をもう少し詳しく紹介します。
自分で定義した変数やメソッドにジャンプ!
fruit_params
って何でしょう?とりあえずカーソルを置いてCommand + B!
お、メソッドだった!
Viewの中からジャンプ!
ViewからControllerへジャンプすることもできます。
@fruits
ってどこで定義したんだったっけ-?Command + B!
そうか、Controllerの中で定義してた!
gemのメソッドにジャンプ!
gemを使うととっても便利なんですが、たくさん使いすぎるとどのgemがどのメソッドを提供しているのかわからなくなってきます。
そんなときでもRubyMineがあれば簡単に定義元にジャンプすることができます。
たとえば、このrequire
ってだれがどこで定義してるの??Command + B!
お、こんなところにあった!
ふむふむ、strong_parametersの中だったのか。
ソースツリーの中でファイルの場所を確認することもできます
Projectペインの設定でAutoscroll from Sourceというオプションがあります。
これを付けると今開いているファイルに応じてソースツリーを開いてくれます。
というわけでこのオプションを付けておくと、
ソースツリーの中でファイルの場所を確認することができます。
「ここにあるのか」ということが視覚的にわかって便利です。
Partial viewにも飛んじゃいます。
ViewをDRYにしようと思うと、partialがよく登場します。
DRYになるのはいいんですが、partialばっかりになるとpartial viewを行ったり来たりするのが大変です。
そんなときにもCommand + B!
"form" viewを探してみましょう。
はい、見つかりました!
さっき開いてたファイルに戻りたい?
ジャンプ前のファイルに戻りたいときは Command + [ です。
Command + ] はその反対で1つ先のファイルへ進みます。
Rubyだけじゃない!JSやCoffeeScriptでもジャンプできちゃいます
こちらはCoffeeScriptのコードです。
sortable
ってなんだ?こんなjQueryプラグインいつ入れたっけ?
そーれ、Command + B!
はい、sortable
の定義元はこちらです!
複数の候補が表示される場合もあります
絶対にコレ!と決めきれない場合はRubyMineが候補を表示してくれます。
たとえばさっきの sortable
では jquery-ui-railsとcapybaraが候補に表示されました。
テストコードではないので、ここはjquery-ui-railsでしょうね。
sassでもいいんですよ?
"bootstrap"ってどこにあるの?教えて、RubyMine!
Command + B!!
「はい、こちらです。」(RubyMine氏)
さらにCucumberのstep definitionにまでジャンプしてくれるなんて!!
Cucumberは非プログラマにとっては読みやすいテストツールですが、そのぶんプログラマにはちょっと負担の高いツールだったりします。
うまく動かないテストをデバッグするときはstep definitionの定義元を探すのに四苦八苦したりすることもあると思います。
でも大丈夫。RubyMineがあればそんなときでも定義元にジャンプできます。
というわけでやってみましょう。
Cucumberのシナリオを開いて、カーソルを移動して、Command + B!
おー、こんなところにあったのね!
たまにジャンプできない場合もあります
Rubyは動的型付言語なので、静的なコード解析で必ず定義元が見つかるとは限りません。
定義元を推測できない場合、「できません」とお断りされる場合があります
とはいえ、十分実用的なレベルでジャンプしてくれるので、百発百中でなくとも僕は満足しています。
まとめ:Command + Bを使えばデバッグやコードリーディングの作業効率が飛躍的に高まります!
というわけで今回はRubyMineのコードジャンプ機能を紹介しました。
ご覧の通り、RubyMineはありとあらゆるコードにジャンプしてくれます。
コードを見てその正体がわからなかったときは、とりあえず「Command + B」しましょう。
そうすればRubyMineが定義元へ案内してくれます。
普通に開発するときはもちろん、うまく動かないコードをデバッグしたり、gemのコードリーディングをしたりするときも本当に便利です。
先日公開した「RubyとRailsにおけるTime, Date, DateTime, TimeWithZoneの違い」という記事を書くときにもRubyMineは大活躍しています。
あっちこっちでCommand + Bして「おー、このメソッドはこんなところで定義されていたのか!!」という発見を繰り返してました。
もしかすると、他のテキストエディタでも頑張れば同じようなことができるのかもしれません。
しかし、やり方を調べたり、プラグインをインストールしたりする手間は絶対に発生します。
一方、RubyMineならインストールするだけですぐに高機能なコードジャンプが使えるようになります。
確かにRubyMineは有料のIDEです。
しかし年間1万~2.5万の出費(ライセンスによる)で日々の開発がこれだけ効率化されるのであれば、十分な費用対効果が得られるはずです。
「Rubyって楽しいんだけど、どこでクラスやメソッドが定義されてるのかわかりにくいんだよな~」と思っている方はぜひRubyMineの導入を検討してみてください!
Ruby on Rails IDE :: JetBrains RubyMine
あわせて読みたい
メインの開発ツールをVimからRubyMineに変更した理由
RubyMineアドベントカレンダーの1日目の記事です。
なぜVimからRubyMineに乗り換えたのか、という理由を書いてみました。
Rubyでメソッドの定義場所を見つける方法
RubyMineを使っていない頃はこんなふうにメソッドの定義場所を探していました。
ごめんなさい、この時代に戻るのはもう無理です。。。