既存のRailsアプリケーションの規模感を掴むためのメモです。 各ファイル毎に見ていくと規模感が掴むきっかけになりそうです。
rails routes
エンドポイント、URLの雰囲気を掴む。
- テキストに落とすと見やすい
rails routes > ファイル名
で出力結果をファイル出力
- 量と種別
- 質
- 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
コマンドの詳細。
wc
コマンドxargs
コマンド- 出力結果を次のコマンドに渡す
- https://tech-lab.sios.jp/archives/29544
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起動時に自動読み込みされる
参照
スタートアップで戦い抜いてきたRailsアプリをどう直す? 既存Railsアプリを攻略する時にCTOが見ているポイント - ログミーTech