シェルスクリプトやインタプリタ型言語でエンジンを実行したい方へ - sunfish-shogi/electron-shogi GitHub Wiki

エンジンを起動する条件

インタプリタ型言語で記述されたエンジン、あるいはシェルスクリプト経由でエンジンを実行する場合にエンジンを登録できない(実行できない)というお問い合わせを複数頂いています。

Linux や MacOS の場合、以下の条件をみたすことが必要です。

  • シバン (Shebang) を正しく記述していること
    • シバンとはテキストファイルの先頭に記述する #! で始まる命令です。
    • シェルスクリプトを /bin/bash で実行したい場合には #!/bin/bash と書きます。
    • Python であれば #!/usr/bin/env python が一例です。
    • よくある間違いとして、環境変数の設定が反映できていないケースがあります。 Issue #231 も参考にしてください。
  • 実行権限が付与されていること
    • 例えば chmod +x ファイル名 等で実行権限を付与します。(この例だと全てのユーザーが対象になります。)
    • 権限がついているかどうかは例えば ls -l で確認できます。

Windows の場合は拡張子 .exe .cmd .bat に対応しています。

将棋所との動作の違いについて

将棋所の古いバージョンでは、テキストファイルに対して無条件に Bash を実行していました。 しかし、これはファイルの実行権限や拡張子を無視したセキュリティ的に好ましくない実装です。 将棋所の掲示板で指摘があり、新しいバージョンでは確認画面が追加されたものの、依然として実行権限を無視しています。

Electron 将棋では標準的な方法で子プロセスを実行しているため、 OS で推奨されている方法でスクリプトを設定してください。