【すてっぷすう】

ステップ数 とは?

最終更新:
💡 プログラムの「行数」を数えたもの

プログラムのソースコードが何行あるかを数えた、規模の目安になる数値。空行やコメントを数えるかなど数え方のルールで値が変わり、行数が多いほど良いコードとは限らない。

📌 このページのポイント
main.py 1 def greet(name): 2 msg = "こんにちは" 3 msg += name 4 return msg 5 6 def calc(x, y): 7 return x + y 8 9 print(greet("田中")) コード(9行) ステップカウンター 9 ステップ(空行込み) 空行を除くと 7 行数 = 品質ではない 多くても少なくても それだけでは分からない ステップ数は数え方をそろえて使う「規模感」。行数だけでは品質は分からない
ステップ数はソースコードの行数(LOC)。空行やコメントの扱いで値が変わり、行数だけでは品質は分からない
ひよこ ひよこ
ステップ数って何?
ペンギン先生 ペンギン先生
プログラムのソースコードが何行あるかを数えた数字だよ。「このシステムは10万ステップある」みたいに、プログラムの規模感をざっくり示すために使われるんだ。
ひよこ ひよこ
行を数えるだけなら、誰が数えても同じじゃないの?
ペンギン先生 ペンギン先生
それが違うんだ。空行やコメント行を入れるか、1行に2つの文を書いたら1と数えるか2と数えるかで値が変わる。だから比べるときは、同じルール・同じツールで数えたものどうしにするのが大事だよ。
ひよこ ひよこ
ステップ数が多いと良いプログラムなの?
ペンギン先生 ペンギン先生
必ずしもそうじゃないよ。同じ処理をコピー&ペーストで何度も書けば行数は増えるし、逆に1行に詰め込みすぎて読みにくいコードもある。行数だけでは「良いか悪いか」は分からないんだ。
ひよこ ひよこ
じゃあ何で使われてるの?
ペンギン先生 ペンギン先生
規模の目安として分かりやすいからだよ。見積もりの参考にしたり、テストの量や不具合の数を「1000行あたり」でならして比べたりする。ただ行数を人の生産性の評価に使うと、行数を増やす書き方を招きやすいから注意が必要だね。
ひよこ ひよこ
行数以外にプログラムの複雑さを測る方法ってあるの?
ペンギン先生 ペンギン先生
「サイクロマティック複雑度(循環的複雑度)」という指標があるよ。if文やループなどの分岐から、プログラムの中を通る独立した経路の数を求めるんだ。同じ100行でも分岐が多いほど値が大きくなり、テストで確かめるべき経路も増える。ステップ数が「長さ」なら、こちらは「枝分かれの多さ」を測るイメージだね。
もっと詳しく知りたい人へ

物理行と論理行はどう違う?

物理行はエディタで見た改行ごとの行数、論理行は文(ステートメント)の数だよ。たとえば1行に「a = 1; b = 2;」と書けば物理行は1、論理行は2になる。どちらが正しいというより、組織の中で数え方を決めて記録しておくことが大切で、米国SEIの報告書もこの数え方のルールを明確にするための枠組みを示しているんだ。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「ステップ数」って出てきたら「プログラムが何行あるかを数えた規模の目安」と思えればだいたいOK!
📖 おまけ:英語の意味
「step count / LOC」 = 手順の数・行数
💬 stepは「一歩・一手順」。プログラムの1命令を1ステップと数えることからきている。LOCはLines of Codeの略だよ

参考資料

← 用語集にもどる