Railsで新しいPJに入る時のコードリーディング(2)
前回はERB図を中心に、扱っているデータの観点でコードを見ていった。
今回はGemfileやRoutesから、アプリの使われ方という観点でコードリーディングを進める。
相変わらず殴り書きメモレベル。 いつかリライトして、役に立つ資料にしたい所。 (でQiitaに投稿してみる)
Gemfileを一通りみてみる。
使っているGemを一通り見てみれば、 割とコスパ良く組み込まれている機能が分かり、 割と全体像がつかめるのではないだろうか。
知らないGemを調べる
ググる程度でOK. あとは代表的なコード上の使い方もできれば把握したい。 コード中に合致する箇所があると理解が進む。 ない場合は、さらに一段深い使い方をしている、という意味で、 注意が必要な箇所かも。
Gemを分類してみる
Gemにも色々な種類があって、 単純に機能を拡張するためのものや、 開発をサポートするためのもの、 テストのためのもの、 本番環境にアップロードするためのもの、 など色々ある
これを簡単に分類してみて、 特に"機能拡張"するためのものに絞って調べてみると、 Railsアプリケーション全体の様子が、少し見えてくるんじゃないかなぁと感じた。
分類の例
- Rails 5.2 デフォルト
- 独自追加
コードリーディングでアプリの全体像をつかむ目的なら、 上記のうち機能拡張系に注目するといいんじゃないかなぁと仮定。
実際にGemを使ってみる。
適当にRails newして、実際にGemを組み込んで機能を実現してみる。 結局手を動かさないと、深い意味では身に付かないので、 自分でコード書いてみるのはいい学習になりそう。
READMEに書いてあるGetting Startedレベルでもいいので、 使って見るのは多分有用。
Routesから対応するHelper/Path/Action等を見ていく
ユースケースを確認するという観点。 Railsが提供している機能を見る一番分かりやすいやり方は、 やはりRoutes。
config/routes.rbを見るよりも、 localhost:3000/rails/info/routes を見た方が分かりやすい。
https://qiita.com/satoruk/items/529c19d5c77e6aa79cb1
とりあえず書いてるURLにアクセスする
rails/info/routes に記載されたPathをコピーして、 片っ端からアクセスしてみる。
基本RESTFullなので、URLとRailsのディレクトリ構造が対応しているので、 この辺りを確認することで、操作画面とコードが頭の中で結びつくようになる、はず。
全体像を理解することが目的なので、 あまり深くまで掘り下げない。 対応するアクションにたどり着いたくらいで良しとする。
アクセスできない場合
考えられるのは2パターン
:idなど、何かしら動的な変数が必要
この場合は、ひとまず似たPathを持つ別の所からアクセスし、 操作画面上目的のパスに遷移できるルートが無いかを見てみるといいと思う。
例えば /projects/:id/ にアクセスしたい場合、
ひとまず /projects にアクセスして、/projects/:id/に遷移するルートが無いか探してみる。 (割と勘でいけるはず)
View間の関係も見れて、一石二鳥。
どうしても辿り着けない場合
上のやり方でどうしても辿り着けない場合、 もしくは、Pathが変数を必要としていないのに、アクセスするとエラーする場合、
これは本来は必要無いのに残されている可能性がある。
同じActionで他にPathがあったりするので、確認してみる。
分からない場合は、先任者に確認してみても良い気がする。