IHARA Note このページをアンテナに追加 RSSフィード

2012-04-18 (Wed)

弱いコンピュータ将棋「こまお」について。

 今日日記は周回遅れの技術で作ったコンピュータ将棋の話です。

 先日、「こまお」というコンピュータ将棋公開しました。こまおの特徴はとにかく弱いことです。攻めは遅く、受けはほとんどできず、筋は悪く、一手詰すら見つけられません。その上、平手から10枚落ち(玉と歩だけ)まであるので、10枚落ちを選べばほとんどの人が勝てるでしょう。アルゴリズム的にも数世代前のものを使っており、しかも、わざわざ駒損する筋を選んだりします。

 なぜ、そんなコンピュータ将棋を作ったのか。それが今日日記の本題です。昨年末だったと思いますが、プロ棋士の遠山五段がニコニコ動画生放送で、コンピュータ将棋について「人を育ててくれるようなコンピュータ」について言及していた憶えがありますちょっと記憶曖昧なのですが)。そのときは、将棋の道場は人手不足ルールから教えなければならない人はさすがに教えていられないこともあるということがセットで語られていた気がします(ここ半年くらいでこのあたりはかなり変わってきた気もしますが)。これを聞いて当時の私は、「ルールならハム将棋で憶えることができるじゃないか」と思っていました。それから、そこから少しレベルアップした人には「金沢将棋」がすでにあると思っていました。そして、さらに強い人には「激指」もあります私自身は金沢将棋激指プレイしたことはありませんが評判はよいです)。つまり、すでに人間を育てるソフトは充分に揃っていると思っていました。

 その考えが甘いと分かったのは、とある将棋初心者と盤をはさんで指したときでした。私もそれほど強くはないので、私が4枚(飛角香)落として指しました。その初心者の方は「金沢将棋のレベル1に負ける」と言っていました。序盤は問題なさそうに思えたのでいい勝負かと思った矢先、銀をタダで捨ててきました。狙いは特になさそうでした。そして、角と金を交換してきました。これも狙いはありませんでした。さら飛車を捨てて銀と交換してきました。不思議な指し手だと思いつつも、指し続けました。終局して家に帰ってから、あの人はハム将棋の10枚落ちにも負けるだろうと思いました。

 将棋というのはやはりそこそこ強くないと面白くないもので、やはりある程度の強さがないと観戦すらできません。ある程度というのは私の感覚だと、ハム将棋の平手にまぐれで(あるいは攻略サイトを見ながら)一回勝つ程度です。で、そこまでたどりつくためには、何局も指す必要があります。そして、何局も指すためには、半分くらいは勝てないと続きません。将棋というのは勝てないと面白くないのです。そういうわけで、ハム将棋に勝てない人のための将棋必要だと感じました。だから作りました

 作る前に、指導対局をする側のプロ棋士にどういうことに気をつけているかといったことを聞いたりもしました。具体的に対局中にどういったアドバイスをするのかということです。いろいろと教えていただきましたが、相手の指し手についての感想を言うとのことだったので、私にできる範囲で人間の指し手について言語しました。主に駒の価値に重点を置いた台詞になっています指導対局では指導する側の指し手そのものにも意味があるものですが、そこまではとても実装できませんでした。また、指導を受ける側のアマチュアの方にも簡単に話を聞かせていただき参考にしました。

 実際に作ってみて、「勝てた!」という喜びの声も聞こえてきましたが、大きな反省点も二つありました。

 一つは、それでもやはり強すぎるらしいということです。10枚落ちに負ける友人もいました。また、開発過程をセミクローズドな空間で公開していたのですが、10枚落ちのランダム指しに苦戦する友人もいました。落とす枚数に応じて弱くするといった凝った設計にする必要もあったかもしれません。

 もう一つは、Firefoxを主たるテスト環境にしていたので気づかなかったのですが、IEだと重いということです。ウィンドウズのデフォルトブラウザIEなのでそれを基準にテストするのが当然だったはずですが、思い至りませんでした。その後、軽くしようと努力しましたが(重いコードであるという自覚はあったのでいじれば軽くなるはずだと思っていました)、私の技術ではどうにもならず、結局最初の重いままの状態で公開しています。一つ言い訳を書くとすれば、JavaScriptを触るのは初めてであり、またGUIも初めてであり、そもそもコードを書くのは得意ではなかったのです。JavaScriptを憶えるのに購入したのは「JavaScript&jQueryレッスンブック」という本です。本自体は分かりやすかったですが、プログラミングが苦手なので途中で挫折しました。

 それから反省点ではありませんが、やはり自然な指し手で弱くするのは難しかったです。弱いというのは要するに最善手から程遠いということですが、単純に悪い手を指そうとすると不自然になるのです。このあたり、学問的にも面白い研究課題だと思います人間はなぜか自然な悪手を指すことができるのです。

 あと、「こまお」という名前をつけるにあたり知恵を貸してくださった方々ありがとうございました。どうでもいい話ですが、漢字で書くと「駒男」でもあり、「子猫(こ・まお)」でもあります

 長くなりましたが、とにかくせっかく弱いコンピュータ将棋を作ったのでたくさんの初心者と戦って負けたいと思っています

将棋覚えたて将棋覚えたて 2015/02/02 22:55 こまおをプレイさせてもらいました
が、やはり強すぎです
こちら4連敗・・・
いくら「弱さを売りに」とあってもこの強さでは信じられません
正直コンピュータが強すぎてつまらなかったです

フィニディフィニディ 2015/02/27 02:36 こまお君といい勝負をしています
ただ、彼はほとんど攻めてこないので、負けることは無いですが、自分がいかに下手かを実感させてくれます

流楠流楠 2015/07/05 02:28 偶にこまお将棋をプレイさせてもらっていますが……
久しぶり過ぎるのもありますが、四枚落ちの
桂馬の攻撃力が高過ぎてこちらの攻め駒を全部取られて、
成駒を作られまくって高確率で積むので本当に挫折しかけます。

同じ初心者用でも、トンボ落ちで金銀が先に落ちて
格段に攻撃力の高くAIの質の高いハム将棋と違い
「普通の駒落ち+ランダムかつ防御寄り」なのですが
それでも準備中に相手の陣形が完成して攻められなくなるので、
こちらとしては、防御はアヒルで必死に妥協して
飛車側の銀と飛車で超必死に突撃→偶に防がれて早期投了の圧力
しか無さそうなのですよね。

ここらへんから、私よりもっと弱い
攻め方も守り方もわからない超初心者にも
分厚い壁になりえると思います。
こまおでも、定石を持つ程暇が無い弱い人に対しては
十分に、いや十二分に強いです。

将棋はじめて4日目将棋はじめて4日目 2015/08/07 22:16
将棋をはじめて4日目で、定石や戦法の知識ゼロですが、こまおには何とか勝てました。私のような超初心者向けにはいい強さだと思います。
これからこまおを使っていろんな戦法を試して行きたいです。

こまお嫌いこまお嫌い 2015/12/07 14:13 こまおは弱いくせにさし方の性格が悪いから嫌い
姑息なさし方が多い
弱いなら弱いなりに作ればいいのに

うにのひとうにのひと 2016/01/07 18:11 ハムに勝てないのでこまおと勝負しましたが、平手で普通に勝ててちょっと感動です。角交換どころか角道すら開けようとしない安心設定に癒されます。
序盤は全く攻めてこないので雁木囲い余裕でした。いつもは受けがザルすぎて囲う前に潰されるんですが、こまおは待っててくれる。将棋苦手でもいろいろな戦形を試せるのが楽しいですね。

強い強い 2016/02/15 19:49 普通に思考が強い人のそれです・・・
アホな一手を全然打ってくれない・・・
ド素人から見たら全然隙が無いです・・・

将棋歴1ヶ月将棋歴1ヶ月 2016/03/07 08:49 最初は六枚落ちでも普通に負けていましたが、初心者向け入門書やサイトで勉強して、矢倉囲いと棒銀を覚えてからは、負けることがなくなりました。連敗中はヤル気を失いかけたので、適度に勝てる相手というのはかなり貴重だと思います。

将棋ってなに?将棋ってなに? 2016/03/10 13:23 将棋ってなに?状態で、毎日こまおと対戦しています。
勝ったり負けたり......楽しいです。
こまおを作ってくれて、ありがとうございます(^^)/

初心者じゃなくてただの下手糞初心者じゃなくてただの下手糞 2016/04/15 01:55 初めて平手でコンピューターに勝てて嬉しかったです。
作者さんに感謝します。