【あさーしょん】
アサーション とは?
最終更新:
💡 ここでは、この条件が成り立つはず
プログラムやテストで、成り立つはずの条件を確認する表明。Pythonを例に失敗時の動作、無効化と入力検証との違いを解説します。
📌 このページのポイント
- 成り立つはずの条件を、コードで表して確認
- 失敗した場合の扱いは、言語やライブラリによって異なる
- テストでは、値や例外など期待する結果を確認
- 無効化される場合があるため、必須の入力検証とは区別
アサーションは、正しさの保証?
「ここではこの条件が成り立つはず」と表して確認するものだよ。確認する条件を満たしたことは分かるけれど、プログラム全体の正しさまで保証するものではないんだ。
条件が違ったら、どうなる?
言語や使う機能によるよ。Pythonのassert文は、有効な状態で条件が偽ならAssertionErrorを送出する。例外が処理されるかや、テストの結果として報告するかも、周りの仕組みに関係する。
if文でチェックするのと何が違う?
ifは条件に応じて処理を選ぶ構文だよ。アサーションは、期待する条件の確認という目的がある。外から来る不正な入力など、通常起こり得る失敗を必ず処理する仕組みとは区別しよう。
テストでも使う?
本番でも、必ず確認される?
Pythonのassert文は、-Oで最適化するとコードが生成されない。ほかの言語にも設定で扱いが変わるものがある。必ず必要な入力検証や処理を、無効化できるアサーションだけに任せないようにしよう。
もっと詳しく知りたい人へ
アサーションの条件に、更新処理を入れてよい?
確認を無効化すると、その式も評価されない場合があります。必要な更新や通信などを条件式の中に入れず、処理と確認を分けます。
アサーションが失敗したら、すべてバグ?
期待と実際が食い違った手がかりです。実装だけでなく、テストの期待、前提や環境の問題も調べます。失敗する確認を消すだけで済ませないようにします。
まとめ:ざっくりこれだけ覚えればOK!
「アサーション」って出てきたら「成り立つはずの条件を、コードで確認する表明」と思えばだいたいOK!
📖 おまけ:英語の意味
「Assertion」 = 表明・主張
💬 コード中では、その時点で期待する条件を表し、確認するために使います。