Railsで新しいPJに入る時のコードリーディング(2)

kappaz.hatenablog.com の続き。

前回はERB図を中心に、扱っているデータの観点でコードを見ていった。

今回はGemfileやRoutesから、アプリの使われ方という観点でコードリーディングを進める。

相変わらず殴り書きメモレベル。 いつかリライトして、役に立つ資料にしたい所。 (でQiitaに投稿してみる)

Gemfileを一通りみてみる。

使っているGemを一通り見てみれば、 割とコスパ良く組み込まれている機能が分かり、 割と全体像がつかめるのではないだろうか。

知らないGemを調べる

ググる程度でOK. あとは代表的なコード上の使い方もできれば把握したい。 コード中に合致する箇所があると理解が進む。 ない場合は、さらに一段深い使い方をしている、という意味で、 注意が必要な箇所かも。

Gemを分類してみる

Gemにも色々な種類があって、 単純に機能を拡張するためのものや、 開発をサポートするためのもの、 テストのためのもの、 本番環境にアップロードするためのもの、 など色々ある

これを簡単に分類してみて、 特に"機能拡張"するためのものに絞って調べてみると、 Railsアプリケーション全体の様子が、少し見えてくるんじゃないかなぁと感じた。

分類の例

  • Rails 5.2 デフォルト
  • 独自追加
    • 機能拡張系
      • アーキテクチャ
      • view 系
      • 非同期処理、プロセス管理系
      • 暗号化系
      • 認証
      • データ処理?系
      • JS系
      • 外部アプリ連携 系
      • 開発サポート系
    • 動作確認・デバッグ
      • テスト系
      • 外部出力ドキュメント系
      • 本番環境系
    • 環境構築系
      • Deploy系
      • サービス監視系

コードリーディングでアプリの全体像をつかむ目的なら、 上記のうち機能拡張系に注目するといいんじゃないかなぁと仮定。

実際に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があったりするので、確認してみる。

分からない場合は、先任者に確認してみても良い気がする。