質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
86.02%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

RubyMine

RubyMineは、Ruby/Ruby on RailsベースのWebアプリケーション開発を行うためのIDEです。コードエディタやコードアシスタンス、グラフィカルなデバッガを搭載しており、様々なバージョン管理システムに対応しています。

Q&A

解決済

rubymineのジャンプ機能を使いこなしたい

k499778
k499778

総合スコア599

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

RubyMine

RubyMineは、Ruby/Ruby on RailsベースのWebアプリケーション開発を行うためのIDEです。コードエディタやコードアシスタンス、グラフィカルなデバッガを搭載しており、様々なバージョン管理システムに対応しています。

1回答

2グッド

1クリップ

1255閲覧

投稿2021/04/25 11:18

編集2021/04/25 11:26

前提・実現したいこと

元々Java開発が中心でしたが、今Railsを勉強しています。
RubyMineを使っていますが、ジャンプ機能について少し違和感があり、ご相談させていただきたいです。

メソッドなどを選択して「Command クリック」をすると、その呼び出し元が表示されたりします(ジャンプするときもありますが)。
例:updateを「Command クリック」時
イメージ説明

JavaのEclipseの感覚だと、呼び出し元に基本的にジャンプするように思いますが、
RubyMineでは基本的に候補が表示され、あとは自分で該当のメソッドを自分で探す形になるのでしょうか?
また、皆さんはどのようにメソッドの呼び出し元を確認したい場合、操作しますでしょうか?
候補が表示され、その中から自分で該当クラスを探し見つける形でしょうか。

例の画像は少し標準のメソッドなので、たとえが悪いかもですが、
例えば、Fugaクラス内で、Hogeクラスのexecuteメソッドが使われており、どのような定義になっているかを確認したいときに、executeを「Command クリック」すると、そのままHogeクラスのexecuteメソッドにジャンプせず、候補が表示されました。

なので、Hogeクラスで「Command クリック」して、ジャンプし、その中でファイル内検索で「execute」と検索して、該当のexecuteメソッドの定義を確認しました。

少しJavaだと一発で定義元にジャンプできたのでめんどくさいな。と思ってしまいます。
そこがコンパイル言語とスクリプト言語の差なのでしょうか。
Javaではimportにより明示的に書かれているから、特定できるのでしょうか。。うーん。

皆さんはどのようにメソッドの呼び出し元を確認したい場合、操作しますでしょうか?
教えて頂けると助かります。

試したこと

・ググってみたが、RubyMineのジャンプ機能のリファレンスやジャンプ機能がすごい!という記事が多く、なかなか自分の気にしているところが消化されなかった。

shinoharat, rahhi555👍を押しています

以下のような質問にはグッドを送りましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

グッドが多くついた質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

回答1

1

ベストアンサー

少しJavaだと一発で定義元にジャンプできたのでめんどくさいな。と思ってしまいます。
そこがコンパイル言語とスクリプト言語の差なのでしょうか。
Javaではimportにより明示的に書かれているから、特定できるのでしょうか。。うーん。

ほぼご推察のとおり、言語の特性の違いです。

定義元を正確に特定できるかどうかは、
コンパイル方式(Java) vs インタプリタ方式(Ruby) というより、
静的型付け(Java) vs 動的型付け(Ruby) の違いが影響していると思います。

--

皆さんはどのようにメソッドの呼び出し元を確認したい場合、操作しますでしょうか?

私は、エディタの機能で候補を表示 → あとは自力でコードを読んで判断 という感じです。

めんどくさいと思われる気持ちも十分理解できます。
静的型付けの言語は、IDEでの補完も強力ですから、それと比べるとやや見劣りするでしょう。

--

Ruby の開発コミュニティでも、その辺は課題になっていて、2020.12.25 にリリースされた Ruby3.0 から、静的解析機能(RBS)が導入されました。

これは、通常の .rb ファイルとは別に .rbs という型情報専用のファイルを作ることで、静的型付け言語のようなIDEサポートを受けられるよ、という機能です。
詳しくは以下の記事などを参考にしてください。

https://techlife.cookpad.com/entry/2020/12/09/120454
https://techlife.cookpad.com/entry/2020/12/09/120314

RubyMine では、バージョン 2021.1 から RBS がサポートされているようです。
Ruby のバージョンが 3.0 より前でも使えるようです。

https://www.jetbrains.com/ja-jp/ruby/whatsnew/

ただし、RBS は新しめの機能なので、まだまだ発展途上です。
試すにしても、過度な期待は出来ないと思います。

投稿2021/04/26 03:22

編集2021/04/26 07:27
shinoharat

総合スコア1286

k499778👍を押しています

良いと思った回答にはグッドを送りましょう。
グッドが多くついた回答ほどページの上位に表示されるので、他の人が素晴らしい回答を見つけやすくなります。

下記のような回答は推奨されていません。

  • 間違っている回答
  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

回答へのコメント

k499778

2021/04/26 04:57 編集

ありがとうございます。スッキリしました。 まずはジャンプ手順としても特に現状の動きで問題ないことがわかってよかったです。 なお理由に関しても静的動的の違いということが分かり助かりました。

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
86.02%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

RubyMine

RubyMineは、Ruby/Ruby on RailsベースのWebアプリケーション開発を行うためのIDEです。コードエディタやコードアシスタンス、グラフィカルなデバッガを搭載しており、様々なバージョン管理システムに対応しています。