前回の続き。探索部について深い理解が得られるように、ここで時代を遡り原始的な探索部として、昔の将棋ソフトについて見ていこう。
太古の将棋ソフト
世界で最初に作られた将棋ソフトは、瀧澤武信さん(現CSA会長)が1975年に作られた将棋ソフトだと言われている。
WCSC28の懇親会で私とQhapaqの澤田さんが瀧澤会長に「あれは何の言語で書かれたのですか?」と尋ねたところ、「Fortranで…」とお答えいただいた。Fortranが死ぬほど嫌いな澤田さんはその瞬間「ヒェッ」と毒蛇を踏みつけたときのような奇声を上げ、Fortranに親を殺されたかのような恨みしかない私は「ムグゥ」とヤンキーにカツアゲされてボディーブローをお見舞いされたかのような奇声を上げた。瀧澤会長に対して失礼極まりない態度の二人であったが、二人にとってはそれぐらいの衝撃であった。
ちなみに小谷善行さん(現CSA副会長)は、当時(1970年代後半)、将棋ソフトをLISPで書いていたとか何とか…。
1980年代の将棋ソフト
将棋ソフトが一般的に知られるようになるのは1980年代だと思う。
1980年ぐらいに『月刊アスキー』のマイクロオセロリーグというオセロソフト同士の対局企画が始まった。その第3回である1982年に森田和郎さんが参加して優勝された。(『森田のオセロ』としてアスキーから販売) 1980年代最強のオセロソフトと言えると思う。
森田さんはそのころから将棋ソフトのほうも作り始める。おそらく、『森田のオセロ』が意外と売れたので将棋ソフトを作ればもっと売れると思ったからではないかと私は邪推している。実際、森田和郎さんは、この2年後である1984年にPC-8801用の将棋ソフト『森田和郎の将棋』をエニックスから発売する。このソフトはコンピュータ将棋の草分け的存在である。
これを皮切りにファミコン向けの将棋ソフトもたくさん発売された。
『内藤九段 将棋秘伝』(SETA/1985年)
『森田将棋』(SETA/1987年)
『谷川浩司の将棋指南Ⅱ』(ポニーキャニオン/1988年) ※ 初代『谷川浩司の将棋指南』はMSX用のソフト
『ファミコン名人戦』(SNK/1988年)
『谷川浩司の将棋指南Ⅲ』(ポニーキャニオン/1989年)
『ファミコン将棋竜王戦』(アイマックス/1991年)
…
このようにWCSC1(第1回世界コンピュータ将棋選手権)が1990年に開催される時にはすでにかなりの数の商用将棋ソフトが発売されていたし、商用版であるからかなり本気で作られていた。おそらくほとんどのソフトは、オールアセンブラで書かれていたし、『森田将棋』に至っては、森田さんがオセロソフトで培ったノウハウが投入されていたから、当然ながら現在のαβ探索のようなことはやっていたと思われる。(αβ探索について詳しいことは次回記事で書く。)
『森田将棋』がαβ探索していた証拠をここで提示するのは難しいが、森田さんが『マイコンBASICマガジン』誌に1988年ごろちょくちょく記事を書くようになって、そこにAIの話題が何度か取り上げられていた。そこには「αβ探索」について触れている記事もあったと思うし、『月刊アスキー』のマイクロオセロリーグの記事でもαβ探索について森田さんが触れている記事があったと思う。そんなわけで当時にはすでにαβ探索は十分一般的になっていたと思う。
大昔(30年前)の将棋ソフトというと事情を知らない人は「高校のパソコン部で学園祭のためにN88-BASICで作りました」ぐらいを想像してしまうかも知れないが、そうではなく、ファミコンブームに後押しされ、森田和郎さんのような天才プログラマーがガチ(本気)で作ったソフトが商用ソフトとして多数存在していたということであるな。
とは言え、『森田将棋』が別格なだけで、他のファミコンソフトは、1手詰めに気づかず頓死することは多々あった。有名なのは、『内藤九段 将棋秘伝』を15手で詰ませるという手順である。
なんと、1手詰めが見えていない。このソフトは1手すら読んでいないのかというとそうではなく、選択的にしか先を読んでいないので1手先ですら読めていない指し手があるということだ。(と思う)
1秒間に100局面しか読めない将棋ソフト
ところで、大昔のソフトでは、1秒間に100局面ぐらいしか読めなかったという話がある。
https://twitter.com/tanaseY/status/1129194787783921664
ここで言う大昔がどの時代かよくわからないが、1秒間に100局面というとファミコン版の『森田将棋』がおそらくそれくらいであったと思う。
1秒間に100局面ぐらいしか読めない状況だと、評価関数に力を入れるのか、枝刈りに力を入れるのか、選択的探索に力を入れるのか、その開発者によって力の入れどころがまちまちなので、そういうソフトを長い持ち時間で対局させたときに差がでるのは、まあ、そうなんだろうなとは私は思うものの、当時のソースコードが入手できる形で残っているわけでもないのでそのへん検証のしようがない。想像にまかせて理由をあれこれ書くのもアレなので、この件はこれくらいに留めておく。
超低ノード(1手10局面)で最強
ところで、1手につき10局面を読める場合と100局面を読める場合とで指し手の方針が全く異なることには読者は異論ないであろう。
1手につき10局面しか読めないのであれば、駒をタダ取りされる指し手と王手を回避することに注力するだろう。飛車が取られそう(だから逃げる)だとか、駒を取れそう(だから取る)だとか、取ったあとに取り返されそうだとか、その手を指した直後に詰まされそうだとか、そういう致命傷になりかねない指し手を最優先にして読まなければならない。
ところが1手につき100局面読むのであれば、そういう指し手ばかりではなく、駒を取ったり取られたりする指し手以外も考えるべきである。なにせ、プロの将棋の棋譜に出てくる8割以上の指し手は駒を取らない指し手なのであるから。駒を取らない指し手が最善手である局面が8割以上あるというのに、それらの指し手を適当にしか読まないのでは強くなるはずがない。
このように超低ノード(少ない探索局面数)の場合、駒の取り合いや、王手回避、王手になる指し手などを中心に調べていく必要がある。
これらは現代の将棋ソフトとはずいぶん事情が異なると思うかも知れないが、実際は全くの逆である。
現代のソフトであっても上記(致命傷になりかねない指し手を最優先にして読む)と似た読みは確かにやっているのだ。そう。それが静止探索である。
つづく
追記 [2019/06/15 7:00]
本記事で書いた『内藤九段 将棋秘伝』の件で、TAS方面の方から補足情報をいただいたので貼り付けておきます。
内藤九段将棋秘伝がhttps://t.co/3dv74yxdJdのように1手頓死するのは、序盤を極力定跡で指しているのが一因です。64歩と取り込む前に手数(アドレス$05C1)を50以上に書き換えると52金左と受けてきます
このソフトは1手読み(相手の応手は読まない)なので、自力で読んでも頓死する局面はあると思いますが https://t.co/DcqIgBKMbc
— TaoTao_tas (@TaoTao_tas) June 14, 2019
引きの強さに定評のある連載
ワロタ
やねうら王をファミコンに移植したら、どのくらいの強さになりますか?
メモリを1MBぐらい使わせてもらえるならKP64かKP128が収まるでしょうし、100npsぐらい出るはずなので1手10秒思考していいなら1000局面読めることになるので、(少ないメモリにプログラムを収めるために枝刈りを簡略化するなどして弱くなる部分があるとしても)R2400ぐらいはいくかと。
RAM 2KB, ROM 1MB(8Mbit) でお願いしますヽ(`Д´)ノ!
RAM 2KBだと指し手展開するバッファすらきつそう(´ω`)
人名が入っていたソフトって、その名前のプロ選手とのタイアップなのかと思っていたが、そのソフトを開発した人の名前だったのかという新事実orz
えー?(´ω`)
NINTENDO64の「最強羽生将棋」は昔持ってました!
プロ棋士とタイアップソフトっておそらく全将棋ソフトの2%以下だと思う
ソフトのタイトルにプロ棋士のお名前を冠している作品は少なそうですね。
この記事読みつつネット見てたらこんなの見つけてビビッタ
https://archive.org/details/mycom-basic-magazine-1988-04/page/n205
うわ!懐かしい!
それしかし、引用したいの、森田さんの記事ではなくそのページで合ってます?
これは説明が全然足りていませんでした。
すみません。
「ベーマガ」で検索していると
そのページが見つかりました。
で、見てみると、ベーマガ見れてビックリしました。よく見ると「インターネットアーカイブ」じゃありませんか!
わくわくしながら、もっと見てみると、
「インターネットアーカイブ」で見れるベーマガは
これ一冊でした。しょぼーん
森田さんの記事とかあれば最高だったんですが
「ベーマガなつかしいなぁ」ってだけでした
残念
あー、そうなんですね…。私はベーマガ、創刊号から10年分ぐらい持ってたんですけど、15年ぐらい前に家買ったときに新居に持っていくか悩んで捨てちゃいました…。
”出来れば6月前半位に”1手10秒で強い将棋ソフトは1手
1秒でも強いのですか?その1”という標題で投稿して
いただけますか?”
上記のコメントに戸惑っておられましたが私の言いたいことは
将棋エンジンのレーティングをされている某氏が”1手1秒で計測
している”と書き込まれていた件についてです
数千万ノード以上でないと実力を発揮できないelmo(KPPT)等の
エンジンが確実に存在するのに高性能PCとはいえ対戦数を増やす
為に低ノード(約1500万ノード)でレーティング計測しているのは
あまり意味がないと思います 対戦数が4分の1になってもノードを
4倍に上げるべきだとレーティング表のelmo(KPPT)の数値を見るたび
に思います 普段次の1手のチェックや棋譜解析を1手1秒で使用して
いる人はあまりいないと思われますから
という理由で上記のコメントを書き込みました
ああ、そういう意味なんですね。長い時間での棋力の伸びを見たいときは、0.1秒と1秒とのR差を見ると参考になったりします。(`・ω・´)b