LOC法(エルオーシーほう)とは | 意味や読み方など丁寧でわかりやすい用語解説
LOC法(エルオーシーほう)の意味や読み方など、初心者にもわかりやすいように丁寧に解説しています。
読み方
日本語表記
ソースコード行数法 (ソースコードギョウスウホウ)
英語表記
LOC Method (エルオーシーメソッド)
用語解説
LOC法は、ソフトウェア開発における規模や工数を見積もるための手法の一つである。LOCとはLines of Codeの略称であり、日本語では「ソースコードの行数」を意味する。この手法は、開発するプログラムのソースコードが最終的に何行になるかを予測し、その行数を基準として開発に必要な工数、期間、コストを算出するものである。プログラムの物理的な大きさである行数に着目するため、非常に直感的で理解しやすいという特徴がある。特にプログラミングの経験が浅い初心者にとっても、プログラムの行数が多くなれば開発が大変になるという感覚は掴みやすいため、見積もり手法の第一歩として学ぶのに適している。SLOC法(Source Lines of Code)と呼ばれることもあるが、基本的には同じものを指す。
LOC法の具体的な見積もりプロセスは、過去のプロジェクトデータに基づいて行われるのが一般的である。まず、これから開発するシステムの機能や仕様を分析し、全体のソースコードが何行になるか(予測LOC)を見積もる。この予測は、過去に開発した類似システムの機能と、その際の実際のLOCを比較参照したり、詳細な設計書から各機能の実装に必要なコード行数を積み上げたりすることで行われる。次に、開発チームの生産性を定義する。これは、プログラマ一人が一定期間、例えば一日や一ヶ月あたりに記述できる平均的なコード行数(LOC/人日 or LOC/人月)として表される。この生産性も、過去のプロジェクトの実績データから算出される。そして、「予測LOC ÷ 生産性」という計算式を用いることで、開発全体で必要となる総工数(人月など)を導き出すことができる。最後に、算出した総工数にエンジニア一人あたりの単価を掛けることで、プロジェクト全体の開発コストを見積もる。
このようにシンプルで分かりやすいLOC法だが、その適用にはいくつかの重要な課題と注意点が存在する。最も根本的な問題は、LOCのカウント基準が統一されていないことである。ソースコードの行数を数えるといっても、その方法にはいくつかの流儀がある。例えば、プログラムの動作に直接関係しないコメント行や、コードの可読性を上げるための空行を含めるか含めないかで、総行数は大きく変動する。一般的には、実行可能な命令文のみをカウントする「有効LOC」が指標として使われることが多いが、プロジェクトや組織によってその定義は異なり、単純な比較が難しい場合がある。また、一行に複数の命令文を記述するコーディングスタイルと、一行に一つの命令文を記述するスタイルでも、同じ機能でありながらLOCは変わってしまう。この基準の曖昧さが、見積もり精度に影響を与える大きな要因となる。
さらに、LOC法はプログラミング言語の特性に大きく依存するという欠点を持つ。同じ機能を実現する場合でも、C言語のような比較的記述量の多い言語と、Pythonのような簡潔に記述できる言語とでは、必要なLOCに数倍から数十倍の差が生じることがある。そのため、異なる言語で開発されたプロジェクト同士の規模や生産性をLOCで比較することは適切ではない。また、プログラマ個人のスキルや経験によっても記述されるコードの行数は変わる。経験豊富なプログラマは効率的で無駄のない短いコードを書く傾向があるが、LOC法を生産性の指標として用いると、冗長で長いコードを書いた方が生産性が高いと誤解されるという矛盾が生じかねない。これは、開発の品質よりも量を重視する誤ったインセンティブを開発者に与える危険性もはらんでいる。
加えて、プロジェクトの初期段階、つまり要件定義や基本設計の時点では、最終的なLOCを正確に予測することは極めて困難である。この段階での予測のずれが、そのまま見積もり全体の誤差に直結してしまう。特に、全く新しい種類のシステムや、前例のない機能を開発する場合には、過去のデータが参考にならないため、LOCの予測は憶測の域を出ないこともある。
これらの課題から、現代の複雑なソフトウェア開発において、LOC法単体で見積もりの主要な根拠とすることは少なくなっている。ユーザーにとっての価値や機能の複雑さに着目するファンクションポイント法など、より抽象的で客観的な他の見積もり手法が主流となりつつある。しかし、LOC法が完全に時代遅れになったわけではない。過去の類似プロジェクトが豊富に存在し、使用言語や開発メンバーのスキルレベルが安定している特定の環境下では、補助的な見積もり手法として、あるいはプロジェクト完了後の実績を測定する指標の一つとして今でも有効に活用されることがある。システムエンジニアを目指す者としては、LOC法の基本的な考え方と、そのメリット・デメリットを正しく理解し、どのような状況で有効であり、どのような限界があるのかを把握しておくことが重要である。