---
title: ウチのrails stats
tags: 
author: [あっきー](https://www.docswell.com/user/kuronekopunk)
site: [Docswell](https://www.docswell.com/)
thumbnail: https://bcdn.docswell.com/page/L7132NLDEG.jpg?width=480
description: つくてくトーク 〜ウチのとこ〜 https://tsukulink.connpass.com/event/344807/
published: March 05, 25
canonical: https://www.docswell.com/s/kuronekopunk/KXE31M-rails-stats-2025
---
# Page. 1

![Page Image](https://bcdn.docswell.com/page/L7132NLDEG.jpg)

ウチのrails stats
#つくてくトーク 〜ウチのとこ〜 #6
ツクリンク株式会社 あっきー（@kuronekopunk）


# Page. 2

![Page Image](https://bcdn.docswell.com/page/G7WPR4V8E2.jpg)

⾃⼰紹介
●
あっきー @kuronekopunk
●
ツクリンク株式会社
●
経歴
○
○
エンジニアリングマネージャー
2011年 新卒 SESでPHP
2012年 ㈱ハンズシェア創業（現：ツクリンク㈱）
■ ツクリンクの0→1の開発
■ PHP→Railsのリプレイス
■ SEO、グロースハック
■ データアナリスト
■ 採⽤広報
●
イベント『EMゆるミートアップ』『カクカクシカジカモデリング』
●
ポッドキャスト『ぐんぐんfm』


# Page. 3

![Page Image](https://bcdn.docswell.com/page/4JZKR249J3.jpg)

まずはrails statsを⾒てみよう


# Page. 4

![Page Image](https://bcdn.docswell.com/page/YE6QRV3DEV.jpg)

rails statsを⾒てみよう


# Page. 5

![Page Image](https://bcdn.docswell.com/page/GE5R8DL8J4.jpg)

stats項⽬のおさらい
Lines: コードの⾏数（コメント⾏や空⾏も含む合計⾏数）
LOC (Lines of Code): ソースコード⾏数（コメント⾏‧空⾏を除いた実際のコード⾏数）
Classes: クラスの数（定義されているクラス数）
Methods: メソッドの数（定義されているメソッド数）
M/C (Methods per Class): 1クラスあたりの平均メソッド数
LOC/M (LOC per Method): 1メソッドあたりの平均コード⾏数
Code to Test Ratio: コードとテストの⽐率


# Page. 6

![Page Image](https://bcdn.docswell.com/page/972DK8LV7R.jpg)

statsの各項⽬を⾒てみよう


# Page. 7

![Page Image](https://bcdn.docswell.com/page/DJY2N6QQJM.jpg)

メソッドあたりのコード⾏数
（LOC/M）


# Page. 8

![Page Image](https://bcdn.docswell.com/page/V7N8XZK2E8.jpg)

メソッドあたりのコード⾏数（LOC/M）
Controllers: 7⾏
Models: 10⾏
メソッドは短いほうが読みやすく保守しやすいため⼩さい値が望ましい


# Page. 9

![Page Image](https://bcdn.docswell.com/page/YJ9K8ZVDJ3.jpg)

メソッドあたりのコード⾏数（LOC/M）
Sandi Metz⽒のガイドライン⽈く5⾏以内
（オブジェクト指向設計実践ガイドの著者）
https://yiming.dev/blog/2017/08/23/sandi-metzs-rules-for-oop/#org30afdda
RubocopのMetrics/MethodLengthデフォルトは10⾏
https://github.com/rubocop/rubocop/blob/4decbc32dfbc30497866a2799328b82fb0be5029/config/default.yml#L2748
→推奨は5〜10⾏程度らしい


# Page. 10

![Page Image](https://bcdn.docswell.com/page/GJ8R81P57D.jpg)

メソッドあたりのコード⾏数（LOC/M）
ツクリンクではRubocopの設定が50⾏
⼀部に神メソッドがいるかも


# Page. 11

![Page Image](https://bcdn.docswell.com/page/LJLKRQ137R.jpg)

クラスあたりのメソッド数（M/C）
コード⾏数（LOC/C）


# Page. 12

![Page Image](https://bcdn.docswell.com/page/47M2R1WM7W.jpg)

クラスあたりのメソッド数（M/C）
Controllers,Models: 6method/class
神クラス、Fat Model、Fat Controllerなどを避けたい


# Page. 13

![Page Image](https://bcdn.docswell.com/page/P7RMRLYLJ9.jpg)

クラスあたりのメソッド数（M/C）→クラスあたりのコード⾏数（LOC/C）
メソッド数は処理にもよるのでクラスあたりのコード⾏数を参照してみる
Sandi Metz⽒のガイドライン⽈く1クラス100⾏以内
https://yiming.dev/blog/2017/08/23/sandi-metzs-rules-for-oop/#orgf9800e1
RubocopのMetrics/ClassLengthも100⾏
https://github.com/rubocop/rubocop/blob/4decbc32dfbc30497866a2799328b82fb0be5029/config/default.yml#L2720


# Page. 14

![Page Image](https://bcdn.docswell.com/page/PJXVRW46EX.jpg)

クラスあたりのコード⾏数（LOC/C）
ツクリンクではRubocopの設定が250⾏
⼀部に神クラスがいるかも


# Page. 15

![Page Image](https://bcdn.docswell.com/page/3JKQRVZGJD.jpg)

コードとテストの⽐率
(Code to Test Ratio)


# Page. 16

![Page Image](https://bcdn.docswell.com/page/LE3P8MD5J5.jpg)

コードとテストの⽐率 (Code to Test Ratio)
本番コード⾏数と同程度か
それ以上のテスト⾏数が望ましい
「1:0.7」は少ない？


# Page. 17

![Page Image](https://bcdn.docswell.com/page/8EDLM6PYJG.jpg)

テストコードを深堀りしてみよう
2025/02/20時点でのCoverageAllのカバレッジ 79.1%
⼀般的には80~90%くらいがベター
どんどん増やせばいいの？
→
No
テスト実⾏にもコストがかかるので過不⾜なくテストしていきたい。


# Page. 18

![Page Image](https://bcdn.docswell.com/page/V7P2RYN278.jpg)

テスト実⾏時間を⾒てみる
test_unit（Unitテスト、Integrationテスト）
実⾏時間7分、1.5万件、2並列
test_system（E2Eテスト）
実⾏時間9分、600件、4並列


# Page. 19

![Page Image](https://bcdn.docswell.com/page/2JVDRGKXJQ.jpg)

テストにはコストがかかる
CIを待つ時間、レビューやデプロイの遅れるビジネス的な影響
CIを実⾏するコンピューティングの料⾦
1⽇あたりのPush回数(エンジニア数 x ⽇あたりのエンジニアのPush数)
組織が⼤きくなる、Push頻度が増えるほどCI実⾏コストは⾼くなっていく
テストが消されるまで永続的にコストがかかっていく💰


# Page. 20

![Page Image](https://bcdn.docswell.com/page/5EGYM8QREL.jpg)

良いテストコードを書いていくために
テスト設計について学び、コストの低いテストで担保できないか考慮して
テストコードを書いていきたい
出典: https://speakerdeck.com/twada/building-automated-test-culture-2024-winter-edition?slide=60


# Page. 21

![Page Image](https://bcdn.docswell.com/page/4JQMR9KY7P.jpg)

さいごに
rails statsの話から、最近気になっているテストのコストの話をしました。
statsの指標のLOC/MやM/Cも、ただ分割すれば良いわけではなく、オブジェクト
指向の原則にそって適切に設計し分割していくことが⼤事です。
また設計次第でテスト容易性も変わるためテストにも響いていきます。
より良いソフトウェアを作っていくためにオブジェクト指向から改めて学んでい
きましょう。


# Page. 22

![Page Image](https://bcdn.docswell.com/page/K74V8XPZJ1.jpg)

Thanks. 🙌


