がるの健忘録

エンジニアでゲーマーで講師で占い師なおいちゃんのブログです。

ステップ数換算に思うこと

一応、発想元はここの話。
第15回 下請法 外部委託における元請けの義務を知る
http://itpro.nikkeibp.co.jp/article/COLUMN/20080207/293168/

契約交渉開始の段階で,下請け会社は「プログラムの規模は3万5000ステップ相当」としていたので,再下請け会社は当初3000万〜3300万円の概算金額を提示していたが,その後の交渉の結果,最終的に委託代金は2862万円になった。
ところが実際に開発を始めてみると,プログラム規模は10万1000ステップに上った。このため再下請け会社が下請け会社を被告として3万5000ステップを超える作業工数に対する報酬として1億4618万円を請求する訴訟を起こした。「2862万円という代金は3万5000ステップの規模を前提にしたものであり,それを超えた場合は追加費用が発生する」,というのが原告(再下請け会社)側の主張だった。
裁判所は,「被告が提供した機能仕様書と詳細設計書に基づいて,契約締結までに原告がより正確な見積もり額を算定することは可能だった」としたうえで,「契約書には対価を総額2862万円とすることは記載されているが,プログラム規模の記載はない。このため,受託業務の規模が3万5000ステップ程度であることを前提として委託代金を決定した事実は契約には存在しない」と判断し,原告の請求を棄却した。(東京地方裁判所1997年6月12日判決,判例時報1546号29頁)

んと………。
例えば。以前に本当にあった怖い話ですが。
とある、まぁかなり大きいプロジェクトの共通ルーチンを作成してたです。で、ほかの人のルーチンと比較しても、自分のルーチンは明らかに10倍以上の頻度でcallされてたです(ンなもんキャリア1年の餓鬼にやらせるなよっていいたいけど確か書類上は8年のキャリアだったからなぁ… orz)。
当然ながら性能が出ないってことで、うちのルーチンに「速度削れ〜」命令が出てたです。
その時の計測単位。ダイナミックステップ。簡単に言うと「マシン語換算で何命令走るか」。ええ確かに速度に直結します。1.5GのCPUなら、1命令は1/1.5G 秒。15命令だったロジックを10命令に落とせれば、5/1.5G 秒速度が縮まります。
………ええありえないですよ本当の話ですが。
OSも某F社様のOSだったのでOSチームとやり取りできたのは行幸だったのですが。
何せ頂戴した文章が、例えば

memcpy(第一引数、第二引数、第三引数)

第三引数が4の倍数の場合、15DS + 第三引数*5DS。
第三引数が4の倍数ではないが2の倍数の場合、18DS + 第三引数*6DS。
第三引数が上述以外の場合、20DS + 第三引数*7DS。

とかなんとか。そ〜ゆ〜感じ(数字は適当 & DSはダイナミックステップの略)。
このフェイズってか世界観において、ステップ数は色々な意味で意味があるです。


時は流れてって別にそんなに経過してませんが。
Cとかだと………うんまぁまだ「step数=規模」って感覚は強いのかな? と。
もちろん

  i += 10;

という処理を

  i += 1;
  i += 1;
  i += 1;
  i += 1;
  i += 1;
  i += 1;
  i += 1;
  i += 1;
  i += 1;
  i += 1;

という風にするテクニックとかが「step数によって金額が決まる現場」において存在しないわけでもなかったのですが。
さすがに

  i += 1;
  i += 1;
  i -= 1;
  i += 1;
  i += 1;
  i -= 1;
  i += 1;
  i += 1;
  i -= 1;
  i += 1;
  i += 1;
  i += 1;
  i += 1;
  i -= 1;
  i += 1;
  i += 1;
  i -= 1;
  i += 1;
  i += 1;
  i += 1;

と書く現場はなかったであろうと信じたいのですが*1
それでもまだ、ある程度「自力でごりんごりんしなきゃいけない言語」において、step数は多少なり目安になる部分が0ではなかったのではなかろうかと推測します。目安以上のものではないにしても。


んでもって、今。
いい加減OOP華やかりしこのご時勢に、プログラム上の1stepに何の意味があるのかは、どこまでも限りなく果てしなく疑問です。


でまぁそんなこんなを考えるとっていうか考えるまでもなくなのですが。
「作り手がどれくらい苦労するか」ではなくて「買い手にとっていくらくらいのメリットがあるのか」が、値段の本質になってもよいのではないかなぁと。
もちろん「製造コスト」ってのはあるわけで、だからこそ「安けりゃ作らねぇよ」的発言が成り立ちうるのですが。


まぁ1986年に締結した契約云々の文言があるので。そのころはまだそうだったんだろうし今は違うんだろうなぁと思いたいのですがええ。
でもいまだにstep換算とかエラー率とかで東奔西走するお話も耳に入ってきたりするので。
ふらりぶらりと、メモ。

*1:とはいっても、規定のstep数にあと100stepだけ足りない、とかいうところで本当に絶対にやらなかったのかと聞かれると「どうなんでしょうねぇ」としかいえませんが