「人工知能をつくっただけで終わり」では、研修の魅力は半減します。研修でつくった人工知能プログラムを皆で冷静に、そして熱心に評価することこそが、研修の肝です。

 この評価を通じて、いざ人工知能を実践するときに、研修で学んだものが役立つようになるでしょう。今回は研修でつくってきた人工知能のプログラムの評価方法を見ていくことにします。

 研修でプログラムをつくりっぱなし、というのは、研修の一番おいしいところを食べ損ねています。研修は、期間中につくったプログラムを評価し、それを拡張することに繋げていくところがおいしいのです。プレゼンやデモをさせて、受講者相互で評価させれば、盛り上がり、非常に美味なイベントになります。

 さらに将棋を題材にしたときは、将棋大会を開催できますから、こちらでも大いに楽しめ、満腹になります。図1につくったプログラムの評価の様子を示します。

図1●つくったプログラムの評価は盛り上がる
図1●つくったプログラムの評価は盛り上がる
[画像のクリックで拡大表示]

ソフトウエア工学的に評価してみる

 つくったプログラムを評価する方法には、ワイワイガヤガヤと皆で評価する方法に加え、ソフトウエア工学的に評価する方法があります。すなわち、伝統のある(昔ながらの)ソフトウエア工学の教科書にあるような計測基準の指標を用いて、評価することです。

 いくら人工知能であっても、「人工知能らしく見えるだけ」では駄目です。将棋で言えば、「ただ強いだけ」ではいけません。ソフトウエア工学からみてビューティフルであってこその人工知能であり、将棋プログラムです。それでこそ人工知能プログラミングの研修です。

 ソフトウエア工学は、大人数でつくる大規模なソフトウエア開発を想定した、一種のマナーや規則です。その教えは、表面的なものから、プログラマーの精神をえぐってくる本質的なものまで様々なものがあります。

 まず表面的な評価の例として、コードメトリクス(Code Metrics)があります。これはプログラムコードの評価基準のことで、例えば、1関数の大きさやグローバル変数の個数など各種の指標があります。

 コードメトリクスの基本的な教えは「小さく少なくシンプル」につくることです。この教えからは受講者は「1関数の大きさが50行を超えてはいけません」「グローバル変数を2個以上使ってはいけません」「分岐が10個以上あってはいけません」などの規則を守ることになります。

 コメントがどの程度プログラムに記述されているかも、また重要な指標になります。です。インデントや改行、空白などのプログラミングスタイルも、表面的な美しさを競うときには必要です。

 ソフトウエア工学上の本質的な評価軸としては、アルゴリズムやデータ構造、クラス設計の評価があります。

 例えばクラス設計では、「蜘蛛の巣」状のクラス設計は論外ですが、その元凶になる「集中型」や「多重経路」のクラス設計も駄目です。「モスク型」や「ツリー型」のクラス設計が望ましいものです。クラス設計の例を図2に示します。

図2●クラス設計の例
図2●クラス設計の例
[画像のクリックで拡大表示]

 これらのソフトウエア工学について、表面的なものから本質的なものまでを学ぶコツは、優秀なプログラムを真似ることです。例えばプログラムイディオム(Program Idiom)を覚え、それを真似することです。プログラムイディオムとは将棋における定跡のようなもので、プログラムで多く出現するコードのことです。言うなればプログラムの慣用句のことです。

 あるプログラムイディオムを多くの人が頻繁に使っていることは、それが優れたコードであることを意味しています。それを真似ることは、無用の独自性を出させないための戒めにもなります。研修では、このようなイディオムから離れているコードを指摘することも重要です。図3にこのソフトウエア工学的評価を示します。

図3●ソフトウエア工学的な評価も重要
図3●ソフトウエア工学的な評価も重要
[画像のクリックで拡大表示]

 プログラミングの上達のコツは、優れたプログラムを鑑賞して、それを模倣し、自分のものにすることです。このことを、研修を通じて学ばせます。

 これ以外にも多くの指標で評価ができますが、研修の場ではプログラムを評価することだけにして、決して受講者自身をその場で評価してはいけません。注意してください。