記事更新日: 2019年03月31日, 05月06日

将棋しょうぎ物理ぶつり棋譜きふ
- What is a physical record of shogi?

KITASHIRAKAWA_Chiyuri
こんなこと やってるの わたしだけなんで、説明しないといけないよな☆
全体像が知りたければ 第29回コンピューター将棋選手権 の[参加チーム]に置いてある きふわらべのPR文書 でも読んでろだぜ☆
ソースの Git hubは ここだが、大会へのライブラリ登録はしてないぜ☆

目次 - Table of contents.

戻る - back

1. 第一象限☆
- First quadrant ☆.

KITASHIRAKAWA_Chiyuri
すべてが新しいので お前とは会話が通じない☆
そこで、今日 初めてコンピューター将棋を見る人間に説明するつもりで 駒を動かしながら 説明する☆
20190331wcsc52a1.png
KITASHIRAKAWA_Chiyuri
これは、お前らが ふだん 見慣れている後手から見た将棋盤だぜ☆
KIFUWARABE
早く指せだぜ☆
20190506wcsc111a1.png
KITASHIRAKAWA_Chiyuri
数字が 左向きとか 下向き なのは すっきりしないだろ☆?
KIFUWARABE
何が すっきりしないのか 分からないが……☆
20190331wcsc52a2b1.png
KITASHIRAKAWA_Chiyuri
この将棋盤は Third quadrantサード クァドリン ☆
OKAZAKI_Yumemi
早く 指しなさいよ!
20190506wcsc112a1.png
KITASHIRAKAWA_Chiyuri
数字が 右向きと 上向き なら すっきりするだろ☆?
KIFUWARABE
矢印の方向を 趣味で変えただけにしか見えない☆
20190331wcsc53a1.png
KITASHIRAKAWA_Chiyuri
きふわらべ は First quadrantファースト クァドリン で将棋盤を持つぜ☆
KIFUWARABE
どっちでもいいのに……☆
OKAZAKI_Yumemi
上手うわてにしただけじゃないの
戻る - back

2. 大橋ナンバーズ☆
- Piece identify. Order of "Ohashi" mode ☆.

KITASHIRAKAWA_Chiyuri
プロには 駒の並べる順番にも 流行りがあるそうだぜ☆
20190331wcsc54a1.png
KITASHIRAKAWA_Chiyuri
上手の王から、下手の玉、
上手の左金、下手の左金 と交互に置いていくらしい☆ 大橋のおっさんは 右利きだったのかも知れないな☆
KIFUWARABE
どこから並べても同じなのに……☆
20190328wcsc49a3.png
KITASHIRAKAWA_Chiyuri
親しみの深さを優先し、大橋流の並べ順を 背番号に採用した☆
背番号は 0から 数え始めることにしたぜ☆
KIFUWARABE
偶数は 上手の位相いそう、 奇数は 下手の位相 だな☆
OKAZAKI_Yumemi
位相とか言うの止めなさい。読者が逃げるわよ!
KITASHIRAKAWA_Chiyuri
将棋の駒は 相手の駒を取って 自分の駒になったり、
自分の駒を取られて 相手の駒になったり するので、
偶数が上手、奇数は下手 というのは 駒を取るまで☆
戻る - back

3. 半プレイヤー☆
- Player 0.5 and 1.5☆.

KITASHIRAKAWA_Chiyuri
この節では 半プレイヤー を説明するが、これは無くてもいい。
わたしの理論を 説明 しやすくするために用意しただけの アマージナリィ(Imaginary;想像上の) の概念なので、
他の人は 好きなように 実装すればいい☆
20190506wcsc113.png
KITASHIRAKAWA_Chiyuri
将棋は 先手と 後手 があるが……☆
20190506wcsc113a1.png
KITASHIRAKAWA_Chiyuri
0.5手と 1.5手 を追加することで、あとで説明に出てくるリクツを カンペキに説明できるようになった☆
OKAZAKI_Yumemi
4面指しするの?
KITASHIRAKAWA_Chiyuri
しない☆
0.5手 と 1.5手 は 記録係 だぜ☆
KITASHIRAKAWA_Chiyuri
大橋流で40手 指したところを考えてくれだぜ☆ つまり平手初期局面☆
20190506wcsc114a1.png
KITASHIRAKAWA_Chiyuri
定刻になりましたので きふわらべの先手でお願いします☆……、
とか言ってる 間(ま) が 0.5手目だぜ☆
KIFUWARABE
要らんなあ☆
20190506wcsc114.png
KITASHIRAKAWA_Chiyuri
回転方向は 反時計回りな☆
OKAZAKI_Yumemi
こだわるわねぇ
20190506wcsc114a2.png
KITASHIRAKAWA_Chiyuri
半プレイヤーを1つ進める符号は | (タテボウ)だぜ☆
OKAZAKI_Yumemi
1手進めるのに 2本 要るんじゃないの?
KITASHIRAKAWA_Chiyuri
要る☆
20190506wcsc115.png
KITASHIRAKAWA_Chiyuri
moveムーゥ は 指し手 な☆
コンピューターの中では、1手目を 0 と数える☆
戻る - back

4. リバーシブル指し手☆
- Reversible physical move ☆.

KITASHIRAKAWA_Chiyuri
じゃあ、1手 指してみようぜ☆?
KIFUWARABE
7六歩☆
KITASHIRAKAWA_Chiyuri
待てだぜ☆
20190506wcsc116.png
KITASHIRAKAWA_Chiyuri
まず最初に タテボウ だぜ☆
KIFUWARABE
盤面 何も変わってないのに……☆
20190331wcsc55.png
KIFUWARABE
7六歩ななろくふ
KITASHIRAKAWA_Chiyuri
その 日本将棋連盟(JSA)式 の符号は、
わたしが 完全解析 したところ、なるほど、合理的に整理整頓されてるぜ☆
KIFUWARABE
他にも コンピューター将棋選手権式の大会用ゲームサーバーで使われる CSA符号
コンピューター将棋エンジンの思考部を自動対局させるのに向いた USI符号 もあるぜ☆
KITASHIRAKAWA_Chiyuri
JSAジェイ エス エー 符号は 秒読みでも短く読み上げられ、まぎれも無い、
CSAシー エス エー 符号は JSA符号をそのままに 移動元を加えただけで、読み上げの利点を捨て、将棋の素人でも駒を動かせる利点を加え、
USIユー エス アイ 符号は 手書きのときに駒を書き漏らすなどのミスを防止する、など それぞれ得意がある☆
KITASHIRAKAWA_Chiyuri
これらの符号と異なる、
新しく提案するのが リバーシブルReversible物理Physical指し手Move 符号、RPMアール ピー エム符号 だぜ☆
OKAZAKI_Yumemi
フーン
KIFUWARABE
黙って USI使ってればいいのに……☆
KITASHIRAKAWA_Chiyuri
RPM符号の利点は 検討シーンの操作も 棋譜に含めることができる 記述のフレームワーク になることだぜ☆
つまり 囲碁 でも マージャン でも 指で物を動かすゲームの棋譜として 応用可能☆
画面の向こうで そんなこと したくない とか言ってるだろ☆ 動かしながら説明する☆
20190331wcsc56a1.png
KITASHIRAKAWA_Chiyuri
きふわらべ に スカイ升 フィンガーチィ(指先)升 を1つ追加した☆
開発中には スカイ升 と呼んでいたので、古い画像では sky升 と描いてあるのが残っている☆
OKAZAKI_Yumemi
駒台ではなくて?
KITASHIRAKAWA_Chiyuri
駒台ではない☆
KIFUWARABE
世界一周も飽きて 空を飛ぶようになったか☆
KITASHIRAKAWA_Chiyuri
フィンガーチィ升のアイデアは 計算機科学に出てくる Tower of Hanoiハノイの塔  から もらった☆
空きスペースがないから むずかしい問題になってるんだぜ、 ということを教えてくれる遊びだぜ☆
20190331wcsc57.png
KITASHIRAKAWA_Chiyuri
升の番号を指定すると、すべて フィンガーチィ升 と入れ替える操作だと思ってほしい☆
20190331wcsc57a1.png
KITASHIRAKAWA_Chiyuri
升の番号を2回指定するだけで ちゃんと 駒が進んだな☆
それが 何の駒なのか 指定することは不要☆
OKAZAKI_Yumemi
ハハーン。 操作だけに特化したのね
20190331wcsc57a2.png
KITASHIRAKAWA_Chiyuri
手番の交代のときは、 わざわざ タテ棒 を記述して 区切ってくれだぜ☆
KITASHIRAKAWA_Chiyuri
タテ棒の代わりに、 [2] とか手目を書いて それを区切りに使ってもいい☆
手番の交代が分かればなんでもいい☆
20190331wcsc57a3.png
KITASHIRAKAWA_Chiyuri
慣れてくると、 半角空白区切りで 符号をつなげて 一気に操作してもいい☆
先頭から 逐次 読み取るだけなんで 同じことだぜ☆
KIFUWARABE
じゃあ 先手番一手損角換わりで☆
KITASHIRAKAWA_Chiyuri
あわてるなだぜ☆
まずは タテボウ だぜ☆
20190331wcsc57a3b1.png
KIFUWARABE
その タテボウ は必要なのか……☆?
20190331wcsc57a4.png
KITASHIRAKAWA_Chiyuri
まず、取る駒を フィンガーチィ升 に入れる☆
20190331wcsc57a5.png
KITASHIRAKAWA_Chiyuri
フィンガーチィ升で 駒を 180°回転 させる符号は マイナス にした☆
OKAZAKI_Yumemi
めんどくさ……
20190331wcsc57a6.png
KITASHIRAKAWA_Chiyuri
駒台は スタックになっている☆ ゼロから始まるアルファベット で指定しろだぜ☆
このとき 先後付き駒Piece を指定する必要があるぜ☆
20190331wcsc58.png
KITASHIRAKAWA_Chiyuri
使わない駒を置く場所もある☆
UTF-8 エンコーディングなら、英字と 半角カナを 同時に使える☆
銀はシルバー☆
OKAZAKI_Yumemi
駒の種類を止めて 全部 数 にできないの?
KITASHIRAKAWA_Chiyuri
駒台に 駐車場のように 番号 を付けて使うのは、駒を探すときの スキャンの実行時間がかかるので
駒の種類を指定して ぱっと 使えるようにした☆
20190331wcsc57a7.png
KITASHIRAKAWA_Chiyuri
よいしょっ☆
20190331wcsc57a8.png
KITASHIRAKAWA_Chiyuri
プラス記号で裏返すぜ☆
20190331wcsc57a9.png
KITASHIRAKAWA_Chiyuri
成り込めたな☆ もう大変☆
20190331wcsc57a10.png
KITASHIRAKAWA_Chiyuri
最後に タテボウ を忘れるなだぜ☆
OKAZAKI_Yumemi
人間が使う棋譜じゃないわよね
KITASHIRAKAWA_Chiyuri
| 77 76 | | 33 34 | | 22 - 0B 88 + 22 |
という棋譜になるんだが、これは逆再生できる☆
20190331wcsc57a10.png
KITASHIRAKAWA_Chiyuri
逆再生の1発目は タテボウ だが、
盤面に変化はない☆
20190331wcsc57a11.png
KITASHIRAKAWA_Chiyuri
22 で 馬が指先に戻る☆
めんどくさいので あとは省略する☆
KIFUWARABE
リバーシブルだな☆
OKAZAKI_Yumemi
JSAだって、 CSAだって、 USI だって リバーシブルじゃない。
そこらへんの どの棋譜アプリでも 1手戻すボタンがあるわよ
KITASHIRAKAWA_Chiyuri
その3つの符号は コンピューターが 取った駒などを覚えているから 逆再生できるわけで、
終局図から 人間に 逆順で1手ずつ 棋譜を伝えても 逆再生できないはずだぜ☆
KIFUWARABE
逆再生したいやつなんか いないからな☆
KITASHIRAKAWA_Chiyuri
わたしの RPM符号 は、 人間でも逆再生できる ☆
手間が多くて いやだが……☆
KITASHIRAKAWA_Chiyuri
そして、 RPM符号 にだけ できる特長として、
1手戻す という操作も 1本の棋譜に記録できる ☆
というのも、RPM符号 は 指すのも、戻すのも、違いがない☆
KIFUWARABE
ゲームツリーを上ったり下りたりするなら 変化なんか忘れてしまわないと、
記憶が 宇宙の原子の数 を超えてしまうぜ☆?
KITASHIRAKAWA_Chiyuri
全部の変化を見るから 宇宙の原子の数 を超えてしまう☆
有力な変化だけを検討するのは、大盤解説では ふつうに やってるだろ☆
コンピューター将棋ソフトにも その表現力を与える☆
OKAZAKI_Yumemi
与えて どうすんの?
KITASHIRAKAWA_Chiyuri
投了図を与えると、どんな局面だったか 戻していく という勘が付く☆
OKAZAKI_Yumemi
付くのかなぁ?
KITASHIRAKAWA_Chiyuri
現局面から指していく評価関数と、起こり得そうな投了図から逆順で指していく評価関数の2つを作って、
時間軸を挟み撃ちにするというのが リバーシブルの骨子 だぜ☆
OKAZAKI_Yumemi
探索と、詰めルーチンを 同じアルゴリズムで 一石二鳥するの?
KITASHIRAKAWA_Chiyuri
時間軸を 行ったり来たり すれば かしこくなる はずだぜ☆
理屈としては、水平線効果 に対して なんらかの対処方法を与えたい☆
KIFUWARABE
できんのか☆?
KITASHIRAKAWA_Chiyuri
考え中☆
戻る - back

4. 使用例 WCSC28_F6_PAL_HFW.csa☆
- Example of use ☆. WCSC28_F6_PAL_HFW.csa ☆.

KITASHIRAKAWA_Chiyuri
細かい仕様は おいておいて、使ってみた例を紹介しよう☆
去年の 優勝ソフトと、準優勝ソフトが 決勝で当たったときの 棋譜 だぜ☆
KIFUWARABE
棋譜を並べることは 任せろだぜ☆!
20190331wcsc59a1.png
20190331wcsc59.png
OKAZAKI_Yumemi
…………
KITASHIRAKAWA_Chiyuri
…………☆
KIFUWARABE
…………☆
KITASHIRAKAWA_Chiyuri
一応、
f で 1個進む、 ff で 1手進む、 fff で 10手進む、 ffff で 400手進む、
b で 1個戻る、 bb で 1手戻る、 bbb で 10手戻る、 bbbb で 400手戻る、
d で 1個消す、 bb で 1手消す、 bbb で 10手消す、 bbbb で 400手消す、
ぐらいの機能はある☆ 400 というのは 全部進めるぐらいの意味だぜ☆
戻る - back

5. 使用例 WCSC_F2_QHA_TNK.csa☆
- Example of use ☆. WCSC_F2_QHA_TNK.csa ☆.

KITASHIRAKAWA_Chiyuri
カパックと タヌキも 見てみようぜ☆
20190331wcsc59a1.png
20190331wcsc59.png
OKAZAKI_Yumemi
…………
KITASHIRAKAWA_Chiyuri
…………☆
KIFUWARABE
…………☆
OKAZAKI_Yumemi
わたしたちが 棋譜を眺めても なんにも分かんないのよ!