LoginSignup
156

More than 5 years have passed since last update.

RubyMineのコードジャンプ機能は本当にすごい!!困ったときはCommand+Bを押すべし!

Last updated at Posted at 2014-12-09

はじめに

昨日のRubyMineアドベントカレンダーは @LuckOfWise さんの「僕がRubyMineを使い始めたたった1つの理由」でした。

この記事の中では「Command + クリック」でコードジャンプする方法が紹介されていましたが、僕はいつも「Command + B」を使っています。
見た感じ、どちらも同じ機能っぽいです。

このコードジャンプ機能、本当に強力で超便利です。
個人的には「RubyMineを使うと確実に生産性が高くなる理由」のトップ3に入ると思います。

今回の記事はこのコードジャンプ機能をもう少し詳しく紹介します。

自分で定義した変数やメソッドにジャンプ!

fruit_paramsって何でしょう?とりあえずカーソルを置いてCommand + B!

Screen Shot 2014-12-10 at 4.18.30.png

お、メソッドだった!

Screen Shot 2014-12-10 at 4.19.14.png

Viewの中からジャンプ!

ViewからControllerへジャンプすることもできます。
@fruitsってどこで定義したんだったっけ-?Command + B!

Screen Shot 2014-12-10 at 4.20.30.png

そうか、Controllerの中で定義してた!

Screen Shot 2014-12-10 at 4.20.40.png

gemのメソッドにジャンプ!

gemを使うととっても便利なんですが、たくさん使いすぎるとどのgemがどのメソッドを提供しているのかわからなくなってきます。
そんなときでもRubyMineがあれば簡単に定義元にジャンプすることができます。

たとえば、このrequireってだれがどこで定義してるの??Command + B!

Screen Shot 2014-12-10 at 4.26.58.png

お、こんなところにあった!

Screen Shot 2014-12-10 at 4.27.16.png

ふむふむ、strong_parametersの中だったのか。

Screen Shot 2014-12-10 at 4.27.37.png

ソースツリーの中でファイルの場所を確認することもできます

Projectペインの設定でAutoscroll from Sourceというオプションがあります。
これを付けると今開いているファイルに応じてソースツリーを開いてくれます。

というわけでこのオプションを付けておくと、

Screen Shot 2014-12-10 at 4.27.55.png

ソースツリーの中でファイルの場所を確認することができます。
「ここにあるのか」ということが視覚的にわかって便利です。

Screen Shot 2014-12-10 at 4.28.21.png

Partial viewにも飛んじゃいます。

ViewをDRYにしようと思うと、partialがよく登場します。
DRYになるのはいいんですが、partialばっかりになるとpartial viewを行ったり来たりするのが大変です。

そんなときにもCommand + B!
"form" viewを探してみましょう。

Screen Shot 2014-12-10 at 4.44.59.png

はい、見つかりました!

Screen Shot 2014-12-10 at 4.45.26.png

さっき開いてたファイルに戻りたい?

ジャンプ前のファイルに戻りたいときは Command + [ です。
Command + ] はその反対で1つ先のファイルへ進みます。

Rubyだけじゃない!JSやCoffeeScriptでもジャンプできちゃいます

こちらはCoffeeScriptのコードです。
sortable ってなんだ?こんなjQueryプラグインいつ入れたっけ?
そーれ、Command + B!

Screen Shot 2014-12-10 at 4.35.38.png

はい、sortableの定義元はこちらです!

Screen Shot 2014-12-10 at 4.36.17.png

複数の候補が表示される場合もあります

絶対にコレ!と決めきれない場合はRubyMineが候補を表示してくれます。
たとえばさっきの sortable では jquery-ui-railsとcapybaraが候補に表示されました。
テストコードではないので、ここはjquery-ui-railsでしょうね。

Screen Shot 2014-12-10 at 4.35.57.png

sassでもいいんですよ?

"bootstrap"ってどこにあるの?教えて、RubyMine!
Command + B!!

Screen Shot 2014-12-10 at 4.41.32.png

「はい、こちらです。」(RubyMine氏)

Screen Shot 2014-12-10 at 4.41.48.png

さらにCucumberのstep definitionにまでジャンプしてくれるなんて!!

Cucumberは非プログラマにとっては読みやすいテストツールですが、そのぶんプログラマにはちょっと負担の高いツールだったりします。

うまく動かないテストをデバッグするときはstep definitionの定義元を探すのに四苦八苦したりすることもあると思います。
でも大丈夫。RubyMineがあればそんなときでも定義元にジャンプできます。

というわけでやってみましょう。
Cucumberのシナリオを開いて、カーソルを移動して、Command + B!

Screen Shot 2014-12-10 at 5.02.47.png

おー、こんなところにあったのね!

Screen Shot 2014-12-10 at 5.07.38.png

たまにジャンプできない場合もあります

Rubyは動的型付言語なので、静的なコード解析で必ず定義元が見つかるとは限りません。
定義元を推測できない場合、「できません」とお断りされる場合があります

Screen Shot 2014-12-10 at 5.19.36.png

とはいえ、十分実用的なレベルでジャンプしてくれるので、百発百中でなくとも僕は満足しています。

まとめ: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
Screen Shot 2014-12-10 at 14.36.12.png

あわせて読みたい

メインの開発ツールをVimからRubyMineに変更した理由
RubyMineアドベントカレンダーの1日目の記事です。
なぜVimからRubyMineに乗り換えたのか、という理由を書いてみました。

Rubyでメソッドの定義場所を見つける方法
RubyMineを使っていない頃はこんなふうにメソッドの定義場所を探していました。
ごめんなさい、この時代に戻るのはもう無理です。。。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
156