コンピュータ将棋動画勢!

観るコン将(コンピュータ将棋観戦オンリー勢)から見たコンピュータ将棋の記述

コンピュータ将棋フルスクラッチ勢あれこれ 第一回 古参ソフト編

今回はゆるふわな記事なので常体で。

 

コンピュータ将棋の大会には、公開されているコンピュータ将棋ソフトのソースコードを一定の条件の下で利用して良いという制度がある。

大部分の開発者はオープンソースの将棋ソフトに自分の改良のアイディアを上乗せして大会に出場するのであるが、中には「他人のソースコードをなんて使わない、できる限りの部分を自作してやるぜ!」というDIY精神を発揮し、フルスクラッチからの開発にこだわる人も一定数いる。*1

この辺、「DIYこそが最も尊ばれるべきもの」と、自己満足であるはずのDIY精神を他者に押し付け気味なフルスクラッチ*2がいたり、社会性が不十分*3フルスクラッチ勢を露骨に見下してマウントを取りたがるライブラリ勢がいたりと、コンピュータ将棋界隈において最も闇の深い部分の一つである。

 

そんな闇の部分はさておき、個性という意味においては最も多様であるのがフルスクラッチ勢であることは疑いようがない。彼らは「光の当たらない個性的な将棋ソフトを紹介しよう」という趣旨の本ブログで、最も注目すべきソフトたちである。

今回の記事は、このフルスクラッチ勢のソフトたちの中で特筆に値するものを、用いる技術や開発方針、あるいは年季や完成度で雑に分類し、リストアップしてみようという試みである。

 

注: YSSやApery、技巧、やねうら王といった超強豪のソフトはもちろんフルスクラッチ勢であるのだが、すでに十分に光が当たっているため今回は取り扱わないものとする。また、現役を引退して久しい*4ソフトも取り扱わないものとする。私がよく知らないためだ。

 

では、今回は世界コンピュータ将棋選手権がまだ「世界」を冠していなかった時代、1999年以前の一桁回から参加を続けている将棋ソフトを紹介していこうと思う。

 

古参フルスクラッチ勢将棋ソフト

柿木将棋

第1回から参加している。というか開発者の柿木義一氏は、コンピュータ将棋協会理事なので参加者兼主催者をしている。ゲームソフトにもなった超有名ソフトなので紹介は短めに。機械学習や並列化を取り入れる等、現在も少しずつ改良されているようである。

 

隠岐

現役の古参ソフトと言えば、何と言っても増本智宣氏により開発されている*5隠岐」である。1994年の第4回コンピュータ将棋選手権の初参加は、現役ソフトの中では1991年の第1回から参加している柿木将棋、1992年の第2回から参加しているYSS、1993年の第3回から参加している臥龍(次節で紹介)に次ぐ記録*6である。コンピュータ将棋選手権が世界コンピュータ将棋選手権となった後も、隠岐は断続的に大会に出場を続け、直近の2020年に行われた第一回世界コンピュータ将棋オンライン大会にも出場している。

 

隠岐は20年くらい前に二次予選に出場したこともあり、当時中堅ほどの強さであったようだ。その後戦績が振るわないため、おそらくその時代を最後に更新が止まっているものと思われる。IF文を羅列したルールベースで指し手を決めるという、コンピュータの性能が足りな過ぎて探索すら満足にできなかった時代の将棋ソフトの姿をそのまま残す*7生きた化石シーラカンスのような貴重なソフトウェアである。

 

アピール文書*8によれば、終盤は二手読みであるそうだ。

ちなみに、二手読みでもきふわらべより圧倒的に強い。

 

臥龍

隠岐に並ぶもう一つの古参ソフトは、1993年第3回コンピュータ将棋選手権に初出場をしていた高田淳一氏による「臥龍*9である。そして、高田淳一氏は現在コンピュータ将棋協会の理事でもある。

アピール文書によれば、臥龍Javaで書かれたソフトで、特徴量を手打ちした評価関数を用いた100kNPSほどの探索をしているそうである。ルールベースの次の時代、かつBonanzaメソッドが流行する以前の時代である2000年当時の中堅プログラムの趣きを残したソフトである。

 

山田将棋

山田泰広氏による「山田将棋」は、1996年の第6回から将棋コンピュータ将棋選手権への参加を続けている古参ソフトの一角である。アピール文書によれば、評価関数の重みは手入力で、Bonanza以前の将棋プログラムの総決算とも言うべき、当時のお手本のような感じの技術を採用している臥龍が並列化、静止探索やLMR, Killer Move等をやっていなかったりするが(臥龍はそのわりにnull move pruningは実装しておりちょっとちぐはぐな印象)、山田将棋はそれらを網羅しており*10かなり完成度が高い印象を伺わせる。新規にフルスクラッチで参入した参加プログラムが山田将棋に勝つのはなかなか難しいと思われる*11。近年もフィッシャークロックへの対応等、きちんとメンテナンスが行われているようである。なお、C言語で書かれている。凄いデバッグとメンテがしにくそう……

 

なり金将

「なり金将棋」は村山正樹氏による将棋プログラムであり、2001年の第11回より継続的に世界コンピュータ将棋選手権への参加を重ねている。2001年の第11回は、前回記事で取り上げたうさぴょんの初参加の回でもある。

初参加が第11回ということで、先ほど自分で言ったはずのこの記事での「古参」の定義からは外れるのではあるが、なり金将棋は何年かに一度、割と大きなリファクタリングを行い2012年にはマルチコアでの並列化を実装したり、2013年にはUCTを方策にしたMCTSを実装してみたり、2014年~2015年は学習部を含めほぼすべてを書き直してみたり2016年には強化学習とGA(遺伝的アルゴリズム)で評価関数を学習してみたり、と面白い試みに意欲的に挑戦しており、村山氏がコンピュータ将棋の開発を現在もとても楽しんでいる様子が伝わってくるため、本稿で取り上げてみた。

 

さて、ここまで書いて思ったのだが、考えてみれば、ライブラリ制度のない時代の古参ソフトがフルスクラッチ勢なのは当然だった。意外に多くのプログラムが古参であり、現在も少数ながら更新を続けているプログラムがあることは感慨深い。

 

他にもコンピュータ将棋選手権一桁回から参加している古参ソフトとしては氏家一朗氏による「scherzo」*12等があるが、ほとんど情報が公開されていないないため、実情を伺い知ることができない。そのため古参ソフトの紹介はこの辺にしておく。

 

次回は別の視点からフルスクラッチ勢将棋ソフトを見ていくこととする。

*1:フルスクラッチを自称する割に探索部はチェスソフトのソースコードをほぼパクったりしている人も居るため、私のような外部の人間の感覚的には意味不明なのだが。

*2:この界隈のフルスクラッチ勢には、「フルスクラッチであれさえすれば、既存のアイディアをなぞっただけでも独自性になる」という、苦労と独自性を履き違えた、よくわからない頑迷な信仰が存在する。しかも彼らはネタ勢を標榜しながら異様なまでに勝ち負けに拘っていたりする。

*3:自分の成果を自慢したいのは誰でも一緒だが、大人は謙遜せずとも、上手く自己顕示欲を他人への利益の中に隠してwin-winの自慢をするものだ。金持ちが募金したりね。

*4:2010年以降大会に出ていない、とか。

*5:大会に出場はされ続けているものの更新は止まっているようなので、開発されている、という言い方が正しいかどうかは微妙。

*6:そしてYSSは今現在も最先端のディープラーニングに精力的に取り込んでいる。偉大すぎ

*7:ファミコンの時代のソフトの手法である。

*8:一読に値する個性豊かな文章である。

*9:当時は高田将棋

*10:futility pruningがあれば完璧なのだが……

*11:額賀大輔氏によるshogi686が初参加で勝っているが、結構レベルの高いプログラムだった。

*12:評価関数にニューラルネットを使う(予定)らしい。一言だけなので詳細不明。ライブラリ問題のいざこざで近年は開発引退中?