【Python Coding】コードチェックを効率的にするassertの使い方
こんにちは、TAKです。
今回は、pythonのコーディングで使えるassert文について紹介していきたいと思います。
「assertって何?」と思われてこの記事を見ている方がほとんどだと思うので、この記事ではassertの意味と使い方を中心に解説していきます。
【こんな人に読んで欲しい記事です】
● pythonの「assert」について知りたい方
● assert文が使える場面や活用方法を知りたい方
先に結論を言ってしまうと、assertは「pythonコードのデバックやテストをしたい時」「エラー発生時にメッセージを出力させたい時」に使える機能です。
エラー管理の必要性やエラー発生の可能性がない方であれば、assert文を知っておく必要はありませんが、誰だってエラー出ることありますよね。
よりpythonのレベルが高くなり、pythonコードが複雑になるにつれて、エラーや検証の回数は増えていくはずですので、今のうちに使い方をマスターしておきましょう。
難しくないです。
assertの役割は「コードチェック」
すでに説明しましたが、assertはpythonのコードをチェックするための機能です。
そのため、数値を集計したりデータを加工するようなことは(当然)出来ません。
pythonを使ったプロダクトを開発するような場合には、「こういうデータを与えたらどうなるか?」をチェックしたいニーズがあります。また、想定外のデータを(関数などで)受け取った場合にもエラー理由を出力させたいニーズがあるので、そのような時に使われると認識してもらえればOKです。
プロダクトの開発とまではいかなくても、個人で大量のコードを書いているような場合、ポイントでassert文を書いておくことで、エラー発生時にその理由を把握し、より効率的にコードを修正することが可能となります。
必要ライブラリのインポート
まず最初に、今回使うライブラリをインポートしておきます。
assert機能は標準ライブラリで使えるので特に準備はいりませんが、今回numpyを用いた配列をデータとして作成していくのでインポートしてあります。
エラーがない場合|assertなし
では実際にデータを作成してassertの使い方をみていきましょう。
その前に、まずは特にエラーがない場合(assertなし)のコードをみて、その後にエラーがある場合(assertあり)のコードを見ていきたいと思います。
データとしては、numpyを用いた「100行3列の乱数」を用います。
そして、「各行ごとに平均値が知りたい」と仮定し、その平均値を返す関数を作成します。
イメージしやすいように、AIモデルのパラメータ値の平均を求めたいと考えてみてください。
何かを予測するために、このAIモデルは3つの特徴量を持っているといった感じです。
(AIとの関連性が今一つわからない方は、単純に数値を横方向に足して平均していくと思ってください。)
上記のように、各行ごとに値の平均を算出することが出来ました。
では、モデルを構築するにあたり、特徴量(カラム)の数を必ず「3つ」にしたいようなケースで、想定外のデータを受け取った場合にはどうすればいいでしょうか?
こんな時こそ「assert」が使えます。
エラーがある場合|assertあり
ではまず、関数に渡すデータを少し変えておきましょう。
「100行4列」のデータを用意します。
そして、先ほどの関数にassertを追加したコードが以下となります。
「assert」の使い方ですが、「assert+条件式(+エラー時メッセージ)」だけでOKです。
条件式に一致すれば問題なくコードが進みますが、条件式に合わない場合には設定したエラーメッセージが表示されることになります。
試しに先ほど作成した関数にデータを渡してみます。
すると、渡したデータの特徴量(カラム)数が「3つ」でないため、エラーとなります。
assert文を設定した時に「エラー時メッセージ」を指定しないと、上記のように空白メッセージが出力されます。
assert文にエラーメッセージを追加して、エラー内容を把握しやすいようにしてみます。
先ほどと同じデータを渡してみます。
すると、赤枠のようにエラーメッセージが表示されてよりわかりやすくなりましたね。
以上が、assertの具体的な使い方となります。
さいごに
今回は、pythonの「assert」について概要と使い方を中心に紹介してきました。
テスト時やコードチェック時にassert文を挿入して、効率的なコーディングが出来るようにしてみてください。
またね~