Railsアプリケーションの規模感の掴み方

既存のRailsアプリケーションの規模感を掴むためのメモです。 各ファイル毎に見ていくと規模感が掴むきっかけになりそうです。

rails routes

エンドポイント、URLの雰囲気を掴む。

  • テキストに落とすと見やすい
    • rails routes > ファイル名 で出力結果をファイル出力
  • 量と種別
    • エンドポイント
    • RailsのViewの数
    • APIの数
    • よく分からないものの数
    • APIバージョニング
    • URLの設計
    • 設計思想

rails stats

rails stats コマンドで何がどのくらいか、規模感を掴む。

  • モデル
    • 数で規模感が分かる
  • テスト
    • テストが多い処理は複雑
    • どこの処理がふくざつなのか
  • JavaScript
    • フロントの作り込み具合
  • Rails
  • 非同期処理
    • 非同期処理の割合がどれぐらいか

Gemfile、package.json

どんなライブラリが使われているのか把握する。

  • 作り手の意思(選択思想?)
  • Gemfile
    • Deviseは使われているか?
    • 設計に影響の出るGemは使われているか?
      • Railsのレールに乗れるのか?
    • ライブラリのバージョンは?
    • ファイル保存系ライブラリは何か?
    • 知らないGemは?

ファイル行数で規模感を掴む

以下のコマンドで規模感を掴む。

  • model
    • find ./app/models -name "*.rb" | xargs wc -l | sort -n -r
  • erb
    • find ./app/views -name "*.erb" | xargs wc -l | sort -n -r

コマンドの詳細。

モデルの概要を掴む

モデル行数等でモデルの概要を掴む。

  • find ./app/models -name "*.rb" | xargs wc -l | sort -n -r
  • userモデルを基準に他がどんな規模なのか?
  • 多くのことをやっているモデルはどのモデルか?
  • どのモデルが大きいのか?
  • userモデルに匹敵するモデルはどのモデルか?

user.rb

user.rb は殆どのアプリケーションで使われているので把握しやすい。

  • コードスタイルの把握
  • 実装思想を掴む
  • user.rbでどれぐらいメンテナンスされているか測れる
  • Rubyの書き方の癖を掴む

config/initializers/-

諸々の確認ができる。

イニシャライザファイルには、フレームワークやgemがすべて読み込まれた後に行いたい設定(フレームワークやgemを設定するオプションなど)を保存できます。

  • Gem等の外部ライブラリの設定ファイル
  • Rails起動時に自動読み込みされる

https://railsguides.jp/configuring.html#%E3%82%A4%E3%83%8B%E3%82%B7%E3%83%A3%E3%83%A9%E3%82%A4%E3%82%B6%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%92%E4%BD%BF%E3%81%86

参照

スタートアップで戦い抜いてきたRailsアプリをどう直す? 既存Railsアプリを攻略する時にCTOが見ているポイント - ログミーTech