
ユニオンシステム時代の先輩は所属会社は違うのだが(こちらはフリーライフ社からパートナー社を経てユニオンシステム勤務、先輩もパートナー社経由でユニオンシステム勤務なので、パートナー社の人から同じ会社から来ている事でよろしくと伝えられていた)で、ひとつ教わったことが開発の守秘義務は会社単位ではなく開発室と営業部の間にもあり営業さんに「いいこと」を教えてしまうとついつい客先でペラペラとはなしてしまうから、というのが理由だった。
そしてまあ、そんな事を今更にネットで誰でも見られるブログの形で吐露するのは、いいかげん色々な秘密を知り過ぎて抱え込んでいるのがしんどいから「誰かに分かってほしい」と思っているからだ。抱えている開発部の秘密は安っぽい手品の種のように裏側から見たらバレバレの虚構だったなら隠す意味もあろうかとは思うが、設計書に当たるソースコードをOSSで世界に発表しても追随者がいないというこの現実。知りたいと思って寄って来ていた人も「もう分らないのが分かったから教えてくれなくていい」となって、憧れた孤高は孤独であり、気付いたら各地の研究室と連携しているという話。
しかしまあ、高校生で大学受験で微分方程式くらいまで丸暗記で乗り切る人もいるかもだが、理解できたという人も恐らく一定数いて、将棋の盤が81マスで、それを面に取って奥行きのある三次元(立方体)くらいで考えたら、高卒で十分理解できるデータ構造だと思っている。
将棋といえばUSIプロトコルが標準だけど、駒の識別子が歩ならPAWNのpであって、例えば金ならGOLDのgだが「5八金右」とかの処理があることを考えると、種別で分けて同じ種別が交錯することを考えると、駒に40種類のIDがあったほうが便利だと考えて、種類KINDのみの81マスの平面に奥行きを与えてIDを追加するあたりから、俺の独自研究の第三幕が始まっている。
そうすると、立体にするなら駒の利きと一般的な評価関数で使われる駒の素点SCOREも三次元上で表現して良い気がする。別にテーブルを持つとなると、構造的に三次元ではなくリレーショナルデータベースRDBになるので、これも躓く人が多い。
そして、この素点は「将棋プログラムって言ったら昔からそういうもの」というところで古い手法から学んだ人が誰も疑いをかけなかったポイントで、そこに素点が本当に正しいかという疑問を投げかけて勝率を上げ優勝したのが平岡拓也さんのApery(英語で猿真似、モンキー、原人みたいな意味)なわけで、将棋ベーシック改もこの時のSCOREを今でも使っている。
伝統的に歩を100点とすると飛車角には10倍に当たる1000くらいの点数が付いて、香車、桂馬、銀、金とスコアが高くなり、実は階段状に1点刻みで歩が1点香車が2点桂馬が3点銀が4点金が5点とするだけで損な交換はしないはずだが、金歩と飛車の交換だと飛車の方が高い故に10点で金2枚となら交換しても良い、くらいのザックリとしたスコアリングが駒の素点である。これ論理があべこべになりそうだが、その素点が是とされるのはそれで十分強い(勝つ)からで、みな勝ったAperyのスコアに従っていて、素点の研究などはそれ以上はされておらず、しかしまあノドチップさんがパラメータを増やして実験を続けられていたので、世の何処かでは新しい強い素点があるのかもしれない(いいかげん)
じゃあ、偉そうにこの素点に懐疑的になったとして、他にどんな計算方式が考えられるかというところが、当研究のテーマであり、毎日(といっても時々だが)頭を悩ますポイントなのである。もちろん三駒関係やNNUEなんかは名前は知っているが、正直良く分からない。
というわけで、ここまで読んで理解出来たら、当ラボ(研究所)の将棋はおしまい。