第11回 何か作ってみよう「1.人工知能?!」

11−1 人工知能?!

初心者向け入門講座、ということでフローチャートだのオブジェクトだのと、基本的なことをキッチリと見てきました。
しかし、世の中のプログラマーが全てキッチリしているか、というとそうではありません。
少なくとも、趣味の日曜プログラマーさんの中には、キッチリしたフローチャートなんか作ったことがない、という方も少なくないはずです・・・私だけかもしれませんが・・・
今回は、フローチャートや仕様をしっかりまとめてから作る、という「開発的な」アプローチからちょっと外れて、興味を持ったことをプログラミングしていく、という、より趣味的なアプローチをしてみたいと思います。
本職の人には「なんてことを紹介するんだ」と怒られるかも知れませんが、この行き当りばったりのプログラミングでは、意外と基本的なことが必要になってくるものなのでテーマとして取り上げてみました。

さて、興味を持ったものをプログラミングしていく、それはとても楽しいものです。
例えば、自分が使いやすいメモ帳やこづかい帳を作ってみたり、また、撮影メモや時間割など、日常に連携するものを作ったり、はたまた、GPSを使って冒険に出たり、一攫千金を狙ったりと、趣味と実益を兼ねたプログラミングを楽しんでおられる方は、みなさん、一様に「楽しい」と言われます。
この楽しさは、BASICという言語が、人間の言葉に近いように設計されている事とも大きく関係があるはずです。
言葉が近い、ということは、自分の考えを表しやすいので、人間の言葉を理解できないPalmには酷ですが、人間側はとても楽な言語です。

    
    感覚的ですが、こんな感じです


今回、作ろうと思ったのは「人工知能」です。
・・・と言っても、会話ができたり、テレビを見ながら踊ったりするような複雑なものではなく、虫ケラ程度の知能を作ってみたいと思います。
これは、私が何かで読んで興味を持ったお話から、作ってみようと思ったことです。

1つはアリや蝶など、昆虫の動きは、人間が色々考えているより簡単な動作とルールの組み合わせで成り立っている、と言った話でした。
要するに「○○な事を考えて行動しているんじゃないか?」というような複雑な心理は人間が勝手に思いこんだだけで、実際は、まっすぐ歩く、何かあったら、横に避ける程度の簡単な動作を組み合わせているだけだ、という話で、たしか、アリの動きをシミュレートしたサンプルプログラムを見たような気がします。

また、夜、灯りのまわりでクルクル回っている蛾を見たことがあるでしょう。
あれは、人間的に見ると、嬉しそうに舞っているのかな、などと何らかの感情を込めた目で見てしまいますが、彼らも簡単なアルゴリズムで動いているらしいのです。

    
    意外と単純なアルゴリズムなのです

まず、常に両目から同じ角度で光が入ってくるように、体の向きを調整している、というアルゴリズムを持っています。
そのおかげで、遠くで光っている月明かりに対して、その方向に飛んでいくことはありません。
そして、灯りの近くに来ると、片側だけ光が強くなりますね。したがって、もう片方の目に光を入れようとして、光の方向を向くために体を調整するので、結果的に円を描くわけです。
その上、羽の仕組みが、光がたくさん入る目とは逆の方の羽が激しく動くようになっているそうで、そのため、クルクルと、だんだん円が小さくなっていくわけです。
良く出来ているなぁ、と思う反面、期待したような感情は無さそうですね。

そんなことで、今回は、そんな昆虫の動きになぞらえて、自分で勝手に「仮想の昆虫」を考え、そこに「簡単な知能」を作ってみることにしました。
ちょっと、難しそうですが、まず、ベースとなる知能は、ごく簡単にしておきます。

  「まっすぐ歩く、壁に当たったら方向を変え、また歩き続ける」

う〜ん、先ほどのお話と比べると、知能の欠片も感じられない知能ですね。
そして、プログラム的には

  「このムシが勝手に動いている中に、障害物を置いたり消したりできる」

としましょう。これで、歩き回っているムシにちょっかいを出したりできますね。
さて、こんな頭の悪そうなムシをイメージしながら、進めていく事にしましょう。

     
     頭悪そうで、悪かったねェ〜

目次へ     次へ

第11回 何か作ってみよう「1.人工知能?!」