AIの作ったプログラムの検証

AIの作ったプログラムの検証

記事
IT・テクノロジー

プログラミングのスキルは不要か?

AIに作りたいプログラムをお願いすると、作ってくれるという事が現実になってきています。そうなると、プログラミングの知識がなくても、ある分野のアプリのアイデアさえあれば、プログラム開発も可能になってきます。
実際に、プログラミングの学習は不要になるのでしょうか?この記事では、その辺について考えてみることにします。

検証は必要!

前の記事にも書いた通り、AIの生成するプログラムは、間違いを含む可能性はありますし、意図したように動作しない可能性は残ります。
プログラムを生成した際に、AIはある程度の説明をしてくれる場合が殆どだと思います。その説明は、いかにも「もっともらしく」、それを読む限り問題なさそうに見えます。しかし、実際は、説明と実際のコード(プログラム)があっていない場合もあれば、何か条件が抜けていて、完全ではない場合がかなりあります。
従って、検証なしにそのままAIが生成したコード(プログラム)をそのまま使うのは、ほとんどの場合問題になります。

プログラムの基本

プログラムは、簡単に言ってしまえば、あるデータを渡して、それを処理して結果を出すというのが基本です。
プログラムをAIに生成してもらう場合、どんなデータを渡して、それを元にどんな結果が欲しいかを伝えることが基本になるかと思います。これだけならば、特にプログラムの知識は必要ありません。どんなデータかと、どのように処理してほしいかが明確になっていれば、AIにプログラム生成を頼めることになります。
そこで、検証は、実際にAIが作ったプログラムがその通りに動いているかを調べれば良いことになります。つまり、実際にデータを渡してその結果が意図するものになっていれば良いかを調べれば良いことになります。
この部分だけをみると、特にプログラミングの知識も必要なさそうに見えます。

例で示したデータの動作は殆どの場合OK!

実際にプログラムの生成をAIに頼む場合、いくつかの例になるデータを示して、それがどのような結果になるかを示す場合があるかと思います。
このような場合、例で挙げたようなデータ処理は、殆どの場合、期待通りに動作する事が多いです。当然、この例で挙げたデータを使って検証すれば良いのですが、これでは不十分な事も多くなります。理由は、かなりのケースでは、「例外的」なデータが存在するからです。人間がプログラムを作成する場合もある事ですが、こうした「例外的」なケースではプログラムが期待通りに動作しない場合があります。

どう検証するか?

では、どのように検証すればよいかということになりますが、これには大きく分けて2つの方法が使われています。
* 全てのデータを試す
* データをグループ分けして全てのグループを試す
という感じになります。

全てのデータを試すことができれば、そのプログラムはきちんと動作することになります。ただし、全てのデータを試すのは意外に難しく、これができる場合は限られています。
例えば、入力データが「1から100までの全ての整数」みたいな場合は簡単ですが、何らかの条件がついた場合には少し複雑になって全てのデータを試すのが難しくなる場合もあります。例えば、お店の売上を計算するアプリを考えた場合に、定価販売と、割引販売、さらに割引率が時間によって変わる場合は、組み合わせが増えて、全てのデータを試すのが難しくなってきます。特に生物を売っている場合、売れ残りを防ぐために、閉店前に違った割引率で売る場合というのはスーパーでよく見かける話です。
こうした場合、グループ分けして、各グループでのサンプルデータを作って検証すればテストのパターンを減らす事ができます。
ただし、このグループ分けをする場合、プログラムの中身を理解している方が確実にできる場合が多くなります。これは、当然プログラムの中でそれぞれの「条件」によって「異なる処理」をしているので、条件と異なる処理をすべてテストする必要があるためです。

ホワイトボックステストとブラックボックステスト

上であげた、全ての組み合わせをテストする方法を「ブラックボックステスト」と呼んでいます。また、プログラムの中身を理解した上で、全ての処理系統をテストする方法を「ホワイトボックステスト」と呼びます。
ブラックボックステストでは、全ての組み合わせのデータをテストするので、プログラムの中身を理解していなくてもテストが可能になります。
一方でホワイトボックステストは、ある程度プログラムの中身を理解していないとどうしても、抜けが出てくるのでプログラムを理解してテストする必要があります。

まとめ

今回の投稿では、プログラムのテストの大まかな方法について書いてみました。これは、人間が書いたプログラムでも同じですが、AIが生成したプログラムの場合、さらに重要になってくると言えます。
全てのデータの組み合わせを試せる場合には、プログラムの知識がなくても、検証は可能になりますが、全てのデータを試すのが難しい場合には、ある程度プログラムの中身を理解した上でテストする必要があるので、プログラミングの学習はある程度必要になるという事になります。

次回以降は、この検証についてさらに掘り下げていきます。
サービス数100万件のスキルマーケット、あなたにぴったりのサービスを探す