先にWindows版を公開
今は、macOS版EdaxBoardをWindows版から移植開発中で、既に公開準備の段階に入っているのだが、今回追加した機能についてはWindows版にも逆移植したので、先にWindows版のVer1.1.0を公開した。
今回追加したメインの機能は「データベース」機能なのだが、この追加が必要になったのは、「対局のLoop実行」オプションを「対局」-「モード」に追加したからだ。
更に、「対局のLoop実行」オプションを追加したのは何故だったのか、というと、Edax同士のセルフ対局から、Bookを構築可能にしようとしたからだ。
もっとも、そんな機能を追加しなくても、Edax単体でBookを構築したければ、Edax本家の「対局の自動学習」相当機能である「auto-store」と「対局のLoop実行」相当機能である「auto-start」をOnに設定してセルフ対局である所の「m 2」を実行すれば良い。
にも関わらず、EdaxBoardでは、本家のそういった機能は使わずに、独自機能として、「対局の自動学習」と「対局のLoop実行」用意したのだが、これは、EdaxBoardとEdaxとの同期を取れる様にする為だ。
具体的には、もし、本家の機能を使ってEdax同士のセルフ対局を行わせた場合、EdaxはEdaxBoardに何ら干渉される事なく対局を何度も繰り返せる事になるので、標準出力に出力されるテキストの量は膨大になっていく。
勿論、そういったテキストをEdaxBoardが確実に処理できるだけのマシン性能があれば良いのだが、CUIによる盤面描画とGUIによる盤面描画のどちらが軽いか? なんてのは、火を見るよりも明らかだ。
つまり、EdaxBoard的には、標準出力に出力されたテキストの処理が終わるまで、次の対局を開始してもらいたくないので、Edaxにはループ実行機能は使わせず、次の対局が可能になった時点で、自分が次の対局を開始する格好にしてある訳だ。
と、言う事で、Edax単体でBookを構築したければ、Edax本家をCUIで操作できる人なら、何もEdaxBoardの「対局のLoop実行」なんて機能を使う必要はない。
なので、EdaxBoardには、Edax本家では実現できない機能を追加する必要があった。
つまり、各対局を自動的にデータベースに保存できる機能を実装しない事には、EdaxBoardを使ってEdaxのセルフ対局でBookを構築していく! なんて事をする意味がないので、今回、「対局のLoop実行」機能の追加と同時に、データベース機能も追加する事になった訳だ。
ちなみに、Edax的には、各対局をデータベースに保存する意味は殆どないかもしれない。
何故なら、そんなデータベースがあったとしても、使い道がないからなのだが、にも関わらず、そんなデータベースを構築可能にしたのは、MasterReversi的には、このデータベースがあれば、Bookを更新できるからだ。
つまり、Edax単体でみれば、Bookの構築にEdaxBoardは必要ないのだが、EdaxBoardを使ってBookの構築をやっていれば、データベース出力結果をMasterReversiのBookに適用して、その後、エンジン対局なんかを行えば、EdaxのBookに問題があれば、修正できる可能性も高くなる訳だ。
そんな回りくどい事をしなくても、EdaxのBookはテキスト形式で出力できるのだから、そのデータをMasterReversiで読み込める様にすれば良いのでは? という声も聞こえてきそうだ。
勿論、MasterReversiにそういった機能を追加するのは難しくはないのだが、そもそも、Bookとは何だろう? という基本的な考え方が、EdaxとMasterReversiでは異なる訳だ。
具体的には、Edaxの場合、そのテキスト出力形式から、Bookというのは、ある局面の特定の着手候補に対する評価値! が登録されたデータ集、という感じになる。
一方で、MasterReversiのBookというのは、これもテキスト形式で出力してみれば判る筈なのだが、対局棋譜が登録されたデータ集、という感じになる。
Bookを使う場合、ある局面の評価値がそのまま登録されているEdaxの方が検索は簡単確実なのだが、MasterReversi的にも、内部的には、Bookは検索しやすい形にハッシュテーブルを作成して再構築してあるので、検索したい局面の盤面から簡単に検索できるし、処理に時間がかかる事もない。
両者で違いが出てくるのは、MasterReversiのBookというのは、内部的には、常に、対局棋譜をツリー状に記憶した格好になっているので、EdaxだとかWZebraなんかにあるNegaMax処理は不要! という事だ。
何故なら、NegaMax処理というのは、Bookの各局面の登録をツリー状に並べて、最善進行が行われた場合に、その局面のその着手の対局結果はどうなるのか、というのを計算で求める処理になるのだが、MasterReversiでは、常に、Bookデータはツリー状に並べられていて、そのBook値というのは、そのツリーの最善進行を辿って計算されているからだ。
その結果として、MasterReversiでは、対局結果をBookに登録すると、瞬時に処理が終わり、次にBookが検索される時には、MegaMax処理が行われた場合と同一のBook値が参照可能になっている。
つまり、MasterReversiのBookというのは、EdaxだとかWZebraなんかのBookとは基本的な考え方も構築方法も完全に異なるので、EdaxのBookデータをそのまま取り込むのは危険なので、色々と検証なんかも必要になる事も鑑みれば、作者的には、そんな事はしたくない訳だ。
と、言う事で、EdaxのBook構築用の対局から、MasterReversiのBookを改善したければ、EdaxのBookデータを持ってくるよりも、対局データを持ってきた方が速いし確実なので、EdaxのBook構築は、今回の様な形で行う格好にしてみた訳だ。
なお、macOS版についても、既にリリース可能な状況なのだが、やはり、TiDecompについては、macOS版も作っておいた方が、今後、色々とソースコードを有料公開! みたいな事をしようとする場合に便利なので、今回、作っておく事にした。
TiDecompは単純なソフトなので、多分、明日中には出来ると思われるので、macOS版については、Windows版と同様に、見た目上、TiDecomp + 独自暗号化圧縮ファイルの形式で、明日か明後日には公開できる見込みだ。

