AIにコードの案を依頼するときは、先に入力、計算式、期待する結果、異常な入力の扱いを決めます。動くように見えるコードでも、単位の取り違えや境界条件の抜けがあり得ます。ここでは、距離と速度から所要時間を求める短いPythonの例で確認手順を示します。
掲載コードはこの記事の説明用に作成し、Python 3.12.14で8種類の入力を実行確認しました。特定のAIサービスの出力を比較した実験ではなく、すべての入力や業務利用での正しさを保証するものでもありません。
コードより先に仕様を書く
| 項目 | 今回の仕様 |
|---|---|
| 入力 | 距離km、速度km/h。数値または数値に変換できる文字列 |
| 計算式 | 距離 ÷ 速度 × 60。結果は分 |
| 許可する値 | 距離は0以上、速度は0より大きい有限の数 |
| 許可しない値 | 負の距離、0以下の速度、非数値、NaN、無限大 |
| 範囲外の計算 | 結果が有限でなければValueError |
これは一定速度で進む計算です。信号待ち、休憩、道路状況は含みません。実際の移動時間については自転車で1km走る時間の考え方も参照してください。
AIに依頼する場合の文例
Pythonの標準ライブラリだけで、距離kmと速度km/hから所要時間を分で返す関数を作ってください。距離は0以上、速度は0より大きい有限の数に限定します。数値に変換できる文字列も受け付け、非数値、NaN、無限大、計算結果が範囲外になる場合はValueErrorとしてください。1km・12km/hで5分になることと、異常な入力の確認例を示してください。
AIへの入力に、パスワード、APIキー、顧客データ、利用許可のない社内コードを含めないでください。ここでの例は、外部の通信や追加パッケージを必要としません。
実行確認したコード例
import math
def minutes(distance_km, speed_kmh):
distance = float(distance_km)
speed = float(speed_kmh)
if not math.isfinite(distance) or not math.isfinite(speed):
raise ValueError("有限の数を入力してください")
if distance < 0 or speed <= 0:
raise ValueError("距離は0以上、速度は0より大きい数にしてください")
result = distance / speed * 60
if not math.isfinite(result):
raise ValueError("計算できる範囲を超えています")
return result
print(minutes(1, 12)) # 5.0
floatで数値に変換し、math.isfiniteでNaNと無限大を除外します。次に距離と速度の条件を確認し、計算結果も確認しています。数値に変換できない文字列では、floatがValueErrorを発生させます。
正常な値と異常な値を両方試す
| 入力(距離, 速度) | 実行結果 |
|---|---|
| (1, 12) | 5.0分 |
| (0, 12) | 0.0分 |
| (1, 0) | ValueError |
| (-1, 12) | ValueError |
| (“abc”, 12) | ValueError |
| (“nan”, 12) | ValueError |
| (1, “inf”) | ValueError |
| (1e308, 1e-308) | ValueError |
確認日:2026年10月11日。上の表は掲載コードを実行した結果です。浮動小数点の計算には丸め誤差があり、通常の入力でも期待値と小さな差が生じる場合があります。金額や厳密な桁数を扱う計算へ、そのまま流用する例ではありません。
エラーを直したら同じ入力を再確認する
修正を依頼するときは、エラーの内容、使った入力、期待値、実行環境を示します。コードを変更したら、失敗した入力だけでなく、以前通った正常な入力も再確認します。AIが「修正済み」と説明したことだけを完了の根拠にしません。
実際のアプリでは、許可する入力の種類、画面へのエラー表示、権限、依存パッケージ、ライセンスなど、別の確認が必要です。計算例が通ったことと、システム全体が安全に動くことは分けて判断します。
参考資料
Python公式ドキュメント:math.isfinite、組み込み関数float。関数の仕様確認に利用。AIで時間が短縮できたかの測り方は業務効率化の確認方法、情報管理はChatGPTの情報漏洩対策を参照してください。

コメント