トラブルシューティング
ShogiArena の使用中に起きやすい問題を、症状ごとに原因と対処の順でまとめています。 見出しには実際に表示されるエラーメッセージを載せているので、手元のメッセージで検索してください。
インストール関連
pip install でエラーが発生する
Python バージョンが古い
ERROR: Package 'shogiarena' requires a different Python: 3.10.0 not in '>=3.11'
解決:Python 3.11 以上にアップグレードしてください。
# Python バージョン確認
python --version
# pyenv を使用している場合
pyenv install 3.11.0
pyenv global 3.11.0
依存パッケージのビルドエラー
原因:ビルドに必要なシステムライブラリやコンパイラが不足しています。
解決:
# Ubuntu/Debian
sudo apt update
sudo apt install build-essential python3-dev
# macOS (Homebrew)
brew install python@3.11
# Windows
# Visual Studio Build Tools をインストール
エンジン関連
エンジンが起動しない
エラー: FileNotFoundError: [Errno 2] No such file or directory
原因:エンジンのパスが間違っています。
解決:
-
パスが正しいか確認
ls -l /path/to/engine -
プレースホルダーを使用している場合、設定を確認
shogiarena config show -
絶対パスで試す
engine_path: "/full/path/to/engine"
エラー: PermissionError: [Errno 13] Permission denied
原因:エンジンに実行権限がありません。
解決:
chmod +x /path/to/engine
エラー: Engine startup timeout
原因:エンジンの起動に時間がかかりすぎています(ニューラルネットワークモデルの読み込みなど)。
解決:engine 設定の handshake_timeout を長くします。
# engine.yaml
name: "SlowEngine"
engine_path: "/path/to/engine"
handshake_timeout: 60 # 秒
トーナメント全体の既定値として指定したい場合は run 設定側に書きます。
system:
engine_handshake_timeout: 60
エラー: error while loading shared libraries
原因:必要な共有ライブラリがシステムにインストールされていません。
解決:
# 不足しているライブラリを確認
ldd /path/to/engine
# 例: libtbb.so.2 が必要な場合
sudo apt install libtbb2 # Ubuntu
brew install tbb # macOS
エンジンオプションが反映されない
原因:オプション名が間違っているか、エンジンがそのオプションをサポートしていません。
解決:
-
エンジンを手動で起動してオプションを確認
/path/to/engine > usi # option name ... が表示される > quit -
大文字小文字に注意(
Threadsvsthreads) -
エンジンのドキュメントを確認
トーナメント実行関連
トーナメントが開始しない
エラー: No instances available
原因:インスタンス設定が正しくないか、インスタンスに空きがありません。
解決:
-
インスタンス設定ファイルを確認
cat examples/configs/resources/instances/README.md -
slotsとmax_enginesの設定を確認name: "local" type: "local" slots: 4 max_engines: 8 -
デフォルトインスタンスを使用
# run 設定の instances を外してローカル既定設定に任せる shogiarena run tournament tournament.yaml
エラー: Config validation failed
原因:設定ファイルに構文エラーがあるか、必須フィールドが欠けています。
解決:
-
YAML の構文エラーを確認
# Python で YAML を読み込んで確認 python -c "import yaml; yaml.safe_load(open('tournament.yaml'))" -
必須フィールドが揃っているか確認
enginesリスト(少なくとも 2 つ)rules(時間制御などのルール定義)
-
サンプル設定と比較
cat examples/configs/run/tournament/example.yaml
dry-run で設定を検証する
shogiarena run tournament tournament.yaml --dry-run
設定の検証とスケジュール生成のみを行い、実際の対局は行いません。
対局が途中で止まる
エラー: Engine timeout during game
原因:エンジンの思考時間が長すぎるか、エンジンがクラッシュしています。
解決:
-
時間制御を確認
rules: time_control: time_ms: 10000 increment_ms: 100 -
エンジンのログを確認
shogiarena results summary /path/to/run --format json ls /path/to/run/transcripts -
エンジンを単体でテスト
shogiarena run mate myengine.yaml startpos --ply-limit 5
対局数が想定より少ない
原因:games_per_pair の設定が小さいか、SPRT が早期停止しています。
解決:
-
games_per_pairを増やすtournament: games_per_pair: 100 # デフォルトは 4 -
SPRT の場合、早期停止条件を確認
sprt: elo0: 0.0 elo1: 5.0 alpha: 0.05 beta: 0.05 max_games: 400
ダッシュボード関連
ダッシュボードが開かない
エラー: Address already in use
原因:指定したポートを別のプロセスが使用しています。
解決:
-
別のポートを指定
dashboard: enabled: true api_port: 8081 # デフォルトは 8080 -
使用中のポートを解放
# ポート 8080 を使用しているプロセスを確認 lsof -i :8080 # プロセスを停止 kill <PID>
ブラウザで接続できない
原因:ファイアウォールまたはネットワーク設定が接続を遮っています。
解決:
-
ローカルホストで確認
http://localhost:8080 -
別のブラウザで試す
-
ファイアウォールを確認
# Linux (ufw) sudo ufw allow 8080/tcp
ダッシュボードが更新されない
原因:Live WebSocket または画面別の stream 接続が切れています。
解決:
-
ブラウザをリロード(F5)
-
ブラウザのコンソールでエラーを確認
- F12 キー → Console タブ
-
Network タブで接続を確認
- Live View:
/ws - WebSocket diagnostics:
/api/ws/diagnostics - Tournament summary:
/api/tournament/summary/stream - SPSA:
/api/spsa/.../stream
- Live View:
リモート実行関連
SSH 接続エラー
エラー: Host key verification failed
原因:リモートサーバーのホストキーが登録されていません。
解決:
# 手動で接続してホストキーを登録
ssh user@remote-server
# または known_hosts をバイパス(非推奨)
ssh -o StrictHostKeyChecking=no user@remote-server
エラー: Permission denied (publickey)
原因:公開鍵認証が正しく設定されていません。
解決:
-
公開鍵を登録
ssh-copy-id -i ~/.ssh/id_rsa.pub user@remote-server -
秘密鍵のパーミッション確認
chmod 600 ~/.ssh/id_rsa -
SSH エージェントに鍵を登録
eval $(ssh-agent) ssh-add ~/.ssh/id_rsa
ファイル同期エラー
エラー: Remote project_root does not exist
解決:
# リモートでディレクトリを作成
ssh user@remote-server "mkdir -p ~/shogiarena"
エンジンが見つからない
原因:リモート側にエンジンが配置されていません。
解決:
-
プロビジョニングを強制
shogiarena run tournament tournament.yaml --provision force -
または、リモート側に手動で配置
scp /local/path/to/engine user@remote-server:/remote/path/to/engine
データベース関連
データベースが破損した
エラー: database disk image is malformed
原因:SQLite データベースファイルが破損しています。
解決:
-
データベースを削除して再実行(データは失われます)
rm {output_dir}/tournament/runs/.../game.db -
またはバックアップから復元
cp game.db.backup game.db
データベースがロックされる
エラー: database is locked
原因:複数のプロセスが同時にデータベースにアクセスしています。
解決:
-
他のプロセスを停止
# ShogiArena のプロセスを確認 ps aux | grep shogiarena # 停止 kill <PID> -
ダッシュボードを停止してから再実行
パフォーマンス関連
対局が遅い
原因:
- エンジンの思考時間が長い
- 並列実行数が少ない
- システムリソースが不足
解決:
-
時間制御を短縮
rules: time_control: time_ms: 5000 # 5秒 increment_ms: 50 -
並列実行数を増やす
tournament: num_parallel: 8 # CPU コア数に応じて調整 -
システムリソースを確認
# CPU 使用率 top # メモリ使用状況 free -h
メモリ不足
エラー: MemoryError または OOM Killer
原因:エンジンのメモリ使用量が大きすぎます。
解決:
-
ハッシュサイズを減らす
options: Hash: 256 # MB 単位(デフォルトより小さく) -
並列実行数を減らす
tournament: num_parallel: 2 -
max_enginesを制限name: "local" type: "local" max_engines: 4
その他
ログファイルの場所がわからない
# 設定を確認
shogiarena config show
# 出力ディレクトリを確認
ls {output_dir}/tournament/runs/
ls {output_dir}/spsa/runs/
ls {output_dir}/generate/runs/
デフォルトは以下の通り:
- Linux:
~/.local/share/shogiarena/output - macOS:
~/Library/Application Support/shogiarena/output - Windows:
%LOCALAPPDATA%\shogiarena\output
設定をリセットしたい
# 設定ファイルを削除
rm ~/.config/shogiarena/settings.yaml # Linux
rm ~/Library/Application\ Support/shogiarena/settings.yaml # macOS
del %APPDATA%\shogiarena\settings.yaml # Windows
# 再初期化
shogiarena config init
プレースホルダーが展開されない
原因:shogiarena config init を実行していません。
解決:
-
設定を初期化
shogiarena config init -
または、絶対パスを使用
path: "/full/path/to/engine"
サポート
問題が解決しない場合は、以下の情報を含めて GitHub Issues で報告してください。
- ShogiArena のバージョン:
uv run shogiarena --version - Python のバージョン:
python --version - OS とバージョン
- エラーメッセージの全文
- 再現手順
- 設定ファイル(機密情報は削除してください)
GitHub Issues: https://github.com/nyoki-mtl/ShogiArena/issues
脆弱性、credential、未公開の exploit は public Issue へ投稿しないでください。 セキュリティ上の問題は Security Policy に従い、private vulnerability report で連絡してください。