こんにちは、社畜です
大規模プロジェクトのリーダーを務める、7年目の現役エンジニアです。
さて、先日に下記ツイートをしました。
素人とプロのプログラムの違いは「検証」にあります。
現場で7年働き確実に言えますが
・作って満足するのが素人の仕事
・作ったものを100%保証するのがプロの仕事
プログラミングの時間以上にじっくり検証します
つまり、保証する力
多分大丈夫 と 絶対大丈夫 の間には決定的な技術力の差があります
実際の現場では、プログラミングの何倍も時間をかけて、正しく作れたかの「検査・検証」をします。
少し厳しい内容ですが、本当に大切なことなので過去に自分に向けて伝えるつもりで、
記事を執筆させていただきます。
誰もが最初は初心者。1つ1つの仕事を完璧にこなしましょう!
プログラミング初心者が初めて仕事を受けたとき、やらないと必ず後悔すること

結論ですが、非常にシンプルです。
不具合なく正しく動くプログラムを作れたかの確認
になります。
「そんなん知ってるよ~」と言いたいところだとは思いますが、もう少しだけ閉じずに待ってください。
プログラミングの中でも、「組み込み」と呼ばれる分野(飛行機や車など)だと、
たった1つのミスも許されないソフトウェアを作ってるスペシャリストがたくさんいます。
私たちの楽しく幸せな生活は、組み込みエンジニアの「完璧な保証」を前提に成り立っています。
100点満点と99点の差は1点じゃない。
-東京喰種 CCG本局所属 二等捜査官 滝澤 政道より -
「人の命を背負っている」ぐらいの覚悟をもって作ったプログラムかどうかは、受注側はすぐわかります
「作ったプログラムをどうやって確認すれば良いかわからない」という場合は、
この後の内容は非常に有益で、これから受注する仕事で成功する手助けになると思います。
ぜひ、最後までご覧ください
不具合なく正しく動くプログラムを作れたかの確認方法
結論は下記です。作ったプログラムに応じて使い分けていきましょう
- 結果を比較して判断するもの : 表を作ってどう動くべきかを整理する
- 値を比較して判断するもの : 最大値・最小値・中央値・範囲外・規定外の値で動きを確認する
例を出しながら1つずつ出しながら説明していきます。
結果を比較して判断するもの : 表を作ってどう動くべきかを整理する
例えば、下記はじゃんけんで勝ち負けを判定するプログラムの例です。
・自分が出す可能性があるのは、ぐー/ちょき/ぱー の 3種類
・相手が出す可能性があるのは、ぐー/ちょき/ぱー の 3種類
トータル 3 x 3 = 9個の可能性があります。
これに対して、本当はどうあるべきかを表で整理しましょう

その後は、この表の中の組み合わせになるように作れたか1つ1つ確認していく形になります。
「めんどくせぇー」と思うかもしれませんが、この確認した結果はそのまま依頼主に「保証書」として提出することができます。
これが「保証するプログラム」のすごさです。
依頼主は感動して、もうあなたのプログラミングから離れられなくなること間違いありません。
値を比較して判断するもの : 最大値・最小値・中央値・限界値・範囲外・規定外の値で動きを確認する
例えば、下記は身長が150cm以上、170cm以下の人を判定するプログラムの例です。
(あくまで説明用のサンプルです。わかりやすくするためにわざとコード内に”cm”とか”身長”とか書いています)
if ((150cm <= 身長) && (身長 <= 170cm)):
print("150cm~170cmの人です")
else:
print("対象外です")
この時、実際の数値と位置づけは下記のようになります。
判断の切り替わりとか、特に影響が大きい部分を重点的に確認します。
- 最大値 : 170.0cm(ぎりぎり170cm以下の人)
- 最小値 : 150.0cm(ぎりぎり150cm以上の人)
- 中央値 : 160.0cm(真ん中の値)
- 限界値 : 149.9cm, 170.1cm(ぎりぎり150cm以上、170cm以下の人ではない)
- 範囲外 : -50cm, 800cm (どちらも人の身長の範囲としてあり得ない数値)
- 規定外 : 百七十センチ(プログラムとして想定してない値)

#IF文の直前で強制的に数値を書き換えて確認する
身長 = 149.9 #限界値検証用
if ((150cm <= 身長) && (身長 <= 170cm)):
print("150cm~170cmの人です")
else:
print("対象外です")
こちらも同じく、閾値に対して実際のパラメータがどのように動くか確認した結果を
そのまま依頼主に「保証書」として提出することができます。
依頼主に納品する
実際ここまで確認した結果は、「検査結果表」としてプログラムと一緒に依頼主に納品しましょう。
- プログラム
- 検査結果表
検査結果表があることで、「こういう確認をして、こういう結果を得ました」という
プログラムの妥当性の客観的に証明することになります。
※もし万が一依頼主と認識の違いがあれば、ここで修正することが可能です。
というわけで、以上になります。
今回の記事が皆様のエンジニアライフの少しでも手助けになっていれば、嬉しいです。
質問はTwitterから受け付けていますので、お気軽にどうぞ
>>pythonで生き延びる社畜(@coin_python) | Twitter
ラジオ放送でもエンジニアについて熱く語っています。こちらもお楽しみください
コメント
[…] […]
[…] […]