2点間の距離Lをkmではなく、マイルで出力している。
リスト2-1をもう一度読んでください。赤道半径の単位は、kmとなっています。そのため、純粋に計算すると計算結果は「km」で出力します。ですが、この仕様上、どちらの単位系の指定がないため、実装者によっては異なる単位系で算出する可能性があります。このプログラムでは、米国用に、kmで計算した距離に対し、「0.62137」を乗じて、マイルに変換しています。つまり、仕様が曖昧になっています。
世界の「長さの単位」はメートルだけではありません。例えば、米国ではヤードやマイルを使う可能性があります。単位の未記載は、軽微な抜けですが、場合によっては致命的なバグになります※1)。
※1)仕様の抜けが発生すると、仕様定義者と実装者で問題の押し付け合いが起こります。クライアントが承認した仕様書通りに開発したのに、クライアントは「そんなことは言っていない」と主張し、ソフトウェア開発側が「そちらが承認した仕様書の通りだ」と泥仕合になります。訴訟に発展することも少なくありません(特に、海外の発注案件では頻発します)。仕様定義者は、「細かいことまで書いたらきりがない」と言い、実装者は、「仕様に書いていないから」と反論します。「両者がうまく協力し合えれば」と常々思いますが、大抵は「あっちはあっちでしょ」と知らないふりをします。仕様の抜けは大きなトラブルになりますし、バグで最も多いのが「仕様の抜け」です。くれぐれもご注意を。
例えば、この仕様から、東京駅から大阪駅までの距離を算出するとします。リスト3に東京駅と大阪駅、それぞれの緯度と経度を示します。なお、緯度、経度はGoogle Mapsのデータを参照しました。
駅名 | 緯度[°] | 経度[°] |
---|---|---|
東京駅 | 35.6811622 | 139.7320322 |
大阪駅 | 34.7024804 | 135.4609312 |
リスト3 東京駅と大阪駅の緯度経度 |
東京駅と大阪駅の距離は、リスト3のようになります。リスト3のデータを計算式に入れると、2点間の距離は約403kmと出ます。これをマイルに換算すると、250マイルとなり、約0.62倍も違う結果となります。
Copyright © ITmedia, Inc. All Rights Reserved.