「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典イメージぴよ画像「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典

LOC法【見積もり】

pointこの用語のポイント

point見積もりの やり方だよ

pointプログラムの行数をもとにして見積もるよ

point個人的には無意味なやり方だと思ってるよ

point「LOC」の部分は「Lines Of Code」の略だよ

スポンサーリンク

簡単に書くよ

LOC法【見積もり】(読:エルオーシーホウ)とは

工数とかを見積もるときの やり方のひとつ
であり

「このプログラムは中身が1,000行くらいだから100万円にしようか」のように、プログラムの行数をもとにして見積もるやり方
です。


image piyo

詳しく書くよ

サクっと一言で説明すると

「このプログラムの中身は何行だから、何万円ね!」な見積もりのやり方

が「LOC法」です。
プログラムステップ法」とも呼ばれます。

「LOC」の部分は「Lines Of Code(ラインズ・オブ・コード)」の省略表現です。
「Code」はソースコード(人間語で書いたプログラムの元ネタ)を意図しています。
ソースコード(Code)の行数(Lines)をもとにして見積もるやり方だからLOC法です。

例えば、そうですね。

ピヨ子さんがピヨ太君に「ピヨピヨ自動ケーキ作成システム」の開発を依頼することにしました。

LOC法

……が、ピヨ子さんは慎重派です。
まずはピヨ太君に見積もりを出してもらうことにしました。
ぼったくられたら大変ですからね。

LOC法2

ピヨ太君は「ちっ、お昼代とおやつ代を こっそり紛れ込ませようと思ったのに……」と舌打ちしましたが、仕方がありません。
頑張って真面目に見積もることにしました。

う~ん、いくらくらいかなぁ。
ピヨ太君は悩みます。

LOC法3

う~ん、そうだなぁ。
悩んでいたピヨ太君は、ついに閃きました。

LOC法4

ピヨ太君は「プログラムの大きさで金額を決めよう」と考えました。
具体的にはソースコードの行数です。

ピヨ太君の予想では、ピヨピヨ自動ケーキ作成システムのソースコードは100行くらいになりそうです。
1行1万円として100万円の見積もりにしましょう。

ピヨ太君は「ピヨピヨ自動ケーキ作成システムを作るには100万円かかります」な見積書を作って、ピヨ子さんに渡しました。

LOC法5

見積もりを見たピヨ子さんは「全部の処理をつなげて1行で書きなさい。そうすれば1万円よね」と言いました。
ピヨ子さん、鬼ですね。

LOC法6

この話においてピヨ太君のやった見積もりのやり方がLOC法です。
プログラムの行数、もう少し正確に書くとソースコードの行数をもとにして金額を決める見積もりのやり方です。

個人的には、LOC法で見積もるのは昔のやり方だと思っています。
今の時代、LOC法で見積もると逆に怒られるのではないでしょうか。

理由は

ソースコードの行数は、どうとでも調整できるから

です。

例えば、PHPで書かれた以下の処理が あったとしましょう。

■処理1
if($num == 1){
 $result = "1";
}else{
 $result = "1以外";
}


■処理2
$result = ($num == 1) ? "1" : "1以外";

処理1と処理2は、やっていることは同じです。
どちらも

1.$numに「1」が入っていたら、$resultに「1」を入れる
2.$numに「1」以外が入っていたら、$resultに「1以外」を入れる


処理をします。

この同じ処理を、処理1では5行に分けて書いています。
一方の処理2では1行で書いています。

LOC法で計算すると、処理1のお値段は処理2の5倍です。
やっているのは同じ処理なのに、です。

お金を払う方としては、ちょっと納得しにくい差ですよね。

ただし、1行で書いた処理2の方が良い書き方かというと、必ずしもそうとは言えません。
5行に分けて書いた処理1の方が見やすいですし、変更するのも簡単だからです。

例えば、それぞれの処理に

$numが「2」だったら$resultに「2」を入れる

処理を追加して「1以外」を「1、2以外」に変えるとしましょう。

処理1は

if($num == 1){
 $result = "1";
}else{
 $result = "1以外";
}


から

if($num == 1){
 $result = "1";
}elseif($num == 2){
 $result = "2";

}else{
 $result = "1、2以外";
}


に書き換えられます。
パッと見で分かりやすいですよね。

これが処理2になると

$result = ($num == 1) ? "1" : "1以外";



$result = ($num == 1) ? "1" : (($num == 2) ? "2" : "1、2以外");

に なります。

いかがでしょう。
何となくゴチャゴチャしているように感じませんか?

さらに他の処理を追加したら、どうなるでしょう。
処理2の方は、さらにゴチャゴチャしそうですよね。

プログラムというのは

1.同じ処理でも、いろいろな書き方ができる
2.どのような書き方が正解か、一概には言えない


のです。
無駄に長いのは論外ですが、短ければ良いとも言いきれません。

よって、私自身は、LOC法による見積もりに対して「それって、どーなのよ?意味なくない?」と思っています。


image piyo2

一言でまとめるよ

まぁ「LOC法」って単語が出てきたら「ソースコード(人間語で書いたプログラムの元ネタ)の行数を判断基準にする、見積もりのやり方なんだな~」と お考えください。

一番上に戻るよ
スポンサーリンク
書籍画像043
書籍画像045

おまけ

■訳してみるよ

「LOC」は「lines of code(ラインズ・オブ・コード)」の略です。
「lines(ラインズ)」は「line(ライン)」の複数形です。
「line(ライン)」の意味は「線」とか「行」とかです。
「of(オブ)」の意味は「~の」です。
「code(コード)」は今回は「source code(ソースコード)」の略です。
「source code(ソースコード)」はIT用語の「ソースコード」です。
「source(ソース)」の意味は「源」とか「起源」とか「根源」とかです。
「code(コード)」の意味は「記号」とか「暗号」とか「符号」とか「コード」とかです。
「法」は日本語ですね。
何となく くっつけると

「源の記号の行」法

となります。


■検索してみる?




書籍画像
わわわ説明術コラム
宣伝だよ
「分かった!」と思わせる説明の技術 知識ゼロの相手にも伝わるようになる本【Audible】
マンガでわかるITパスポート
ソフトウェア受託現場の「失敗」集めてみた。 42の失敗事例で学ぶ受託開発のうまい進めかた