【えすろっく】

SLOC(ソースコード行数) とは?

💡 コードの量を数える物差し、ただし質は測れない
📌 このページのポイント
物理SLOC vs 論理SLOC 1 // コメント行 2 function add(a, b) { 3 return a + b; 4 } 5 (空行) 6 // コメント行 7 function sub(a, b) { 8 return a - b; 9 } 物理SLOC 9行 全行(空行+コメント含む) 論理SLOC 4行 実行文のみ 有名プロジェクトの規模 Linux カーネル ≈ 2,800万行 Kubernetes ≈ 400万行 VS Code ≈ 50万行 ⚠ SLOCは規模の目安であり、品質や生産性は測れない
SLOCの数え方と有名プロジェクトの規模
ひよこ ひよこ

SLOCって、ただコードの行数を数えるだけなの?

ペンギン先生 ペンギン先生

基本的にはそうだよ。でも単純に見えて奥が深いんだ。空行やコメント行を含めて数える「物理SLOC」と、実際に動くコードの文だけを数える「論理SLOC」の2種類があるんだよ。同じプロジェクトでも、どちらで数えるかで数値がかなり変わるんだ

ひよこ ひよこ

行数が多いほど優秀なプログラマってことなの?

ペンギン先生 ペンギン先生

実はその逆のことも多いんだ。優秀なエンジニアほど少ない行数で同じ機能を実現できる。SLOCで生産性を評価しようとすると『わざと冗長に書いた人が高評価になる』という皮肉な結果になりかねないんだよ

ひよこ ひよこ

じゃあSLOCは何の役に立つの?

ペンギン先生 ペンギン先生

プロジェクトの規模感を把握するのには便利だよ。たとえばLinuxカーネルは約2800万行、Kubernetesは約400万行、みたいにプロジェクトの大きさを比較できる。工数見積もりで『このくらいの規模だと何人月かかる』という目安にも使われるんだ

ひよこ ひよこ

どうやって数えるの?手で数えるのは無理だよね?

ペンギン先生 ペンギン先生

cloc、scc、tokeiといった専用ツールを使うよ。コマンド1つでプロジェクト全体の行数を言語別に集計してくれるんだ。sccは速度が速くて、tokeiはRust製で正確。CI/CDに組み込んで、コードベースの成長推移をグラフ化するチームもあるね

ひよこ ひよこ

SLOCの代わりにもっといい指標はないの?

ペンギン先生 ペンギン先生

SLOCだけに頼らず、複数の指標を組み合わせるのが今の主流だよ。たとえばサイクロマティック複雑度(コードの分岐の多さ)、コードカバレッジ(テストの網羅率)、チャーン率(変更頻度の高いファイル)などを併用するんだ。SLOCは『規模の目安』として使い、品質は別の指標で測るのがベストだよ

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「SLOC」って出てきたら「ソースコードの行数で規模を測る物差し」と思えればだいたいOK!
📖 おまけ:英語の意味
「Source Lines of Code」 = ソースコードの行数
💬 Source(ソース)Lines(行)of Code(コード)の頭文字を取った略語だよ。LOC(Lines of Code)と呼ばれることもあるよ
← 用語集にもどる