脊尾詰と直接対話する方法

閲覧数: 12
コメント数: 0

概要


詰将棋エンジンの標準入出力(CLI)操作手順と活用のメリットを解説した記事です。Windows環境で「脊尾詰」を直接起動し、usiコマンドによる接続確認から、メモリ設定やSFENを用いた解図指示、余詰探索のオプション指定、quitによる終了までの一連のコマンド例を分かりやすく整理しました。また、合駒検証や配置変更時の余詰チェックの自動化スクリプト化、LLM(AI)エージェントとの連動といった、GUIアプリ操作にはない標準入出力ならではのメリットについても触れています。

執筆補助/ gemini 3.6 flash
 
※ 脊尾詰は2017年に公開されたプログラムです。
ダウンロードや起動などの導入・使用については自己責任でお願いいたします。
 
「LLMが詰将棋を『ソフト解答』できる時代へ」の記事(=5qt4w5aqym)でも触れたように、詰将棋エンジンは標準入出力(CLI)を介して直接対話することが可能です。
 
通常は将棋所やShogiGUI、ShogiDroidといったGUIアプリからエンジンを登録して利用しますが、エンジン単体での直接起動も行えます。以下ではWindows環境での操作例をご紹介します。
 
コマンドプロンプトやPowerShellからの起動も可能ですが、今回はより手軽なGUI経由の起動手順を解説します。
 

脊尾詰の起動とハンドシェイク


 
まず、エクスプローラーからダウンロード済みの脊尾詰の実行ファイル(`SeoTsume.exe`)をダブルクリックして起動します。
※ ダウンロード方法等については [パナ将棋のWebサイト]panashogi.web.fc2.com/seots... (http通信です。保護されていないので注意)をご参照ください。
 
起動すると黒いコンソール画面(コマンドプロンプト形式の画面)が表示されるので、USIプロトコルを用いて対話を行います。
 
キーボードで以下のように入力してEnterキーを押します。
 
```
usi
```
 
正常に受け付けられると、以下のような応答が返ってきます。
 
```
id name SeoTsume 1.2
id author Masahiro Seo
option name Do_YoTsume_Search type check default false
option name YoTsume_Second type spin default 30 min 1 max 3600
usiok
```
 
`usiok` と表示されれば、エンジンとのハンドシェイク(接続確認)は成功です。
 

解図コマンドの実行


 
ハンドシェイク成功後、続けて以下のようにコマンドを入力していくことで、脊尾詰に詰将棋を解かせることができます。
 
```
setoption name USI_Hash value 256
setoption name Do_YoTsume_Search value true
setoption name YoTsume_Second value 60
isready
usinewgame
position sfen <解きたい局面のSFEN>
go mate 60000
```
 

各設定項目・コマンドの解説

 
* **`setoption name USI_Hash value 256`**
使用するメモリ容量(MB単位)の指定です。この設定を行わないとエラーになる場合があるため、必須の指定となります。
* **`setoption name Do_YoTsume_Search value true`**
余詰探索を行うかどうかを指定する任意オプションです(`true` で探索実行)。
* **`setoption name YoTsume_Second value 60`**
余詰探索に割り当てる時間を秒単位で指定します(任意設定)。
* **`position sfen <SFEN>`**
`sfen` の後ろに解かせたい局面のSFEN文字列(`9/9/9/...` のような局面フォーマット)を入力します。SFEN文字列は将棋GUIアプリ等から簡単にコピー作成できます。
* **`go mate <ミリ秒>`**
`go mate` の後ろに詰み探索の制限時間をミリ秒単位で指定します。例えば **60秒** の場合は `60000` と入力します(`infinite` を指定すると無制限に探索します)。
 

解図ログの読み方と終了方法


 
コマンドを送信すると、以下のような探索結果が順次出力されます。
 
```
info currmove *** depth …
info string Now start to search another solution.
…
…
…
info string Another solution was not found.
checkmate …
```
 
* `Now start to search another solution.`:表示された手順を作意として認識し、別解(余詰)の探索を開始したことを意味します。
* `Another solution was not found.`:調査の結果、余詰が見つからなかったことを示します。
* `checkmate ...`:最終的な詰み手順(または結果)が出力されます。
 

エンジンの終了

脊尾詰を終了する場合は、コンソール画面で以下のコマンドを入力します。
 
```
quit
```
 

標準入出力操作のメリット


 
一般的な利用においてはGUIアプリを経由する方が直感的で扱いやすいですが、以下のようなケースでは標準入出力(CLI)を直接操作・自動化する方が大きなメリットをもたらします。
 
* **玉方の合駒検証の自動化**
合駒(歩〜飛の7種類)ごとに詰むかどうか、およびその手数を手作業で1つずつ確かめる代わりに、スクリプトを組んで一括処理・自動化できます。
* **配置変更に伴う余詰チェック**
駒の配置を微修正した複数パターンについて、一括で余詰の有無を検証できます。
* **LLM(大規模言語モデル)や外部エージェントとの連携**
LLMにとってもGUI操作よりCLI形式のテキスト対話の方が親和性が高いため、AIを用いた自動解図・作図環境の構築に適しています。
 
※ 将棋エンジンは状態を保持する対話型プログラムのため、LLMエージェントから呼び出す際はラッパーアプリ(中継用のプログラム)を作成するなどの工夫を行うと、よりスムーズな連携が可能になります。
 
将棋エンジンごとにオプションなどが異なりますが、
usiプロトコルを用いている限りは同じように対話できます。
 
なお、スマホから直接対話する場合はもう一段難しくなりますが、
Termuxから脊尾詰 Android版を使うことで直接起動できます。
もし機会があれば解説記事を出します。

コメント(0)