動機
新しいプロジェクトに参加した時、もうメソッドだらけでどこに定義されているか調べることにかなり苦労しました。早くキャッチアップするためには、「早く調べて理解する力」が非常に重要と感じ、先輩エンジニアにも聞きながらまとめてみました。
調べ方も一長一短あります。
プロジェクト内で定義されているメソッドの場合
1. git grep -n <メソッド名>
- エディタの全文検索より、ターミナルで色付きで表示されるので見やすいです
- -n オプションで行番号がつくので、コマンド + パスクリックでエディタで開きます!
- デメリット:あくまで文字列検索。かなり沢山ヒットしたりする。 "def メソッド名"とすると多少絞られる。
2. ブラウザでGithubの検索窓に入力し、"in this repository"で検索
- この方法は1.と結果は同じなのですが、マッチした箇所の上下数行もまとめて表示されます。
- エディタを使いたくない時にいいです
- デメリット:あくまで文字列検索。かなり沢山ヒットしたりする。 "def メソッド名"とダブルクオーテーションをいれると絞られる
3. pry-docsのshow-source機能を使う
- Railsコンソールで、
$ <メソッド名>
ORshow-source <メソッド名>
- 定義箇所のdefからendまでを表示してくれます!
- パスも出るので、コマンド + クリックでエディタで表示できます。
- デメリット:user.method を調べたい時、Userインスタンスを作成してからでないと調べられないので手間。
4. Pryの"step"機能を使う
- binding.pryで停止した時に、stepを実行すると、そのメソッド内に"入る"ことができます。
- 処理の流れと変数の定義も見ることができ、深い理解ができます。
- Rails/Gemなど深いところも見れます。
- デメリット:binding.pryの設置と、処理を走らせ止めることがめんどくさい。
Gemなどプロジェクト外で定義されている場合
1. Dashで検索する
- Dashとは、素のRuby、Rails, Gem、JavaScriptなど色んなドキュメントの横断検索ができるツールです。
- ソースコードに加えて、そのメソッドの説明付きなので理解も早くなります。
- VSCodeに拡張機能"Dash"をいれることで、コマンド + H でDash検索に飛べます
- デメリット:たまに調べたいGemがなかったりする
2. bundle show <gem名>
- Gemのインストールされたディレクトリが表示されるので、VSCodeならコマンド + クリックで別ウィンドウで開くことができます。
- デメリット:gitやpryは使えないので、エディタの横断検索でメソッドを見つける必要があります。
3. Pryの"step"機能を使う
- プロジェクト内で定義されているメソッドの場合と同じです。
4. ブラウザでGithubの検索窓に入力し、"in this repository"で検索
- プロジェクト内で定義されているメソッドの場合と同じです。
その他
1. Rubymineの定義元ジャンプを使う
- VSCode使用者なので使ったことないです。が、RubyやRails、Gem内の定義ならDashでほぼまかなえる気がします。
- デメリット:高い、遅い
2. VSCodeの拡張機能 Solargraphを使う
- Rubyメソッドの上にカーソルを載せるだけで、そのドキュメントや使用例が表示されます。
- 補完機能もあり
- デメリット:Dockerを使用する場合は辛い。SolargraphはそのLanguage serverを起動させ続ける必要がある。Solargrapコンテナを立ち上げ、Portの設定をVSCodeにする必要がある。参考:Docker環境でsolargraphを使う方法
最後に
- 皆様の「調べ方」が知りたいです。
- 他に良い方法があれば、コメントにて教えてくださいm(_ _)m