開発者向け機能の使い方 - sunfish-shogi/electron-shogi GitHub Wiki

はじめに

このページでは主に AI やその他関連ソフトウェアの開発者が利用する機能を説明します。

その他の機能は 使い方 を参照してください。

エンジン起動のタイムアウト設定

エンジンの起動時に一定時間内で最初のコマンドを受信できないとタイムアウトエラーになります。 タイムアウトするまでの時間の長さはアプリ設定で調整が可能です。

engine-timeout-setting

ログ

ログファイルの出力はデフォルトで無効になっています。 必要に応じてアプリ設定からオンにして再起動してください。

log-settings

アプリログと CSA ログ、USI ログはそれぞれ別のファイルへ書き出され、アプリを起動するごとに新しいファイルになります。 なお、アプリを起動しても最初のログが出力されるまでファイルは作られません。

通常、ログは以下の場所に出力されます。

  • Windows: %USERPROFILE%\AppData\Roaming\electron-shogi\logs\
  • macOS: ~/Library/Logs/{app name}/
  • Linux | ~/.config/{app name}/logs/

メニューの「各種フォルダ」-「ログ」で出力先のディレクトリを開くことができます。

スクリーンショット 2024-01-26 190713

また、メニューの「デバッグ」-「ログファイル」(v1.13.0 新機能) では、個別のログファイルをテキストエディタで直接開くことや、 tail コマンドを実行することが可能です。

log-menu

なお、 macOS で「XXXログをTailする」を使って Terminal 上のコマンドを直接実行する場合、 OS のセキュリティ設定で権限の付与が必要です。

監視 (v1.13.0 新機能)

「監視」タブでは USI や CSA プロトコルのセッションの一覧が表示されます。

monitoring

タブを開いている間、 1 秒程度の間隔で最新の状態を画面に表示します。 最後に送信したコマンドや現在の状態を表すコードを確認できます。

Electron 将棋では全体的に非同期に処理が行われるため、例えば USI エンジンの停止に時間がかかっていても処理はバックグランドで継続され、 UI の遷移をブロックしません。 逆に言うと画面上では対局や検討が終わっていてもセッションが完全に終了していない場合があります。 監視タブを見れば生きているセッションの全てを確認でき、必要に応じてプロンプト(後述)を開いたり強制終了することが可能です。

プロンプト (v1.13.0 新機能)

USI や CSA プロトコルのセッションごとにプロンプトウィンドウを開いて、コマンドの履歴を確認したり、手でコマンドを入力することが可能です。

手でコマンドを入力する場合は、送信先が相手側(CSAサーバーやエンジン)なのか Electron 将棋なのかを選択します。 対局中や検討中の不適切なタイミングでコマンドを入力したり、間違ったコマンドを入力した場合、予期しない動作をする可能性があります。 CSA プロトコルや USI の仕様をよく理解したうえで利用してください。

USI や CSA の管理モードセッション (v1.13.0 新機能)

管理モードでは、対局機能や検討機能と切り離した状態で USI や CSA のセッションを開始できます。 これはプロンプトから手でコマンドを入力して USI エンジンを検査したり、 CSA 対局サーバーの設定をする目的で利用できます。 例えば shogi-server で BUOY の設定を変更するときに使います。 逆に管理モードで開始したセッションを後から対局や検討に使うことはできません。

管理モードでセッションを開始するにはメニューの「デバッグ」の中の「USIエンジンを起動(管理モード)」「CSAサーバーへ接続(管理モード)」を選択します。

admin-mode

セッションを開始するとプロンプトウィンドウが開きます。 開始したセッションの一覧は「監視」タブで確認できます。

早期 Ponder (v1.13.0 新機能)

早期 Ponder (Early Ponder) 機能はデフォルトで無効になっており、エンジンごとに設定画面で有効化できます。

早期 Ponder を使用すると CSA プロトコル使用時に CSA サーバーからの応答を待たずに Ponder を開始することが可能です。

USI の go ponder コマンドには残り時間の情報 (btime/wtime/binc/winc) を付与する必要があるため、本来の規格上は CSA サーバーからの応答を待って対局時計を同期する必要があります。 しかし、多くのエンジンにとって時計の同期は ponderhit のタイミングで完了できれば問題なく、 Ponder 開始時点において残り時間は関心ごとではありません。

そこで、 やねうら王の独自拡張 を用いることで go ponder では時間の情報を省略し、逆に ponderhit では時間の情報を付与します。 これによって下図のように CSA サーバーからの応答が遅くても直ちに Ponder を開始できます。

この機能がやねうら王の拡張仕様を利用していることに注意してください。他のエンジンではまともに動かなくなる可能性があります。

コマンドラインツール

Electron 将棋の機能の一部をコマンドラインから利用できます。

  • usi-csa-bridge - USI から CSA プロトコルへブリッジするコマンド

Chromium DevTools

メニューの「デバッグ」-「開発者ツール表示切り替え」で Chrome や Edge で馴染みのある DevTools を利用できます。