【えすろっく】

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)と呼ばれることもあるよ
← 用語集にもどる