Slide 1

Slide 1 text

M1 Macと将棋AIとUSI えるLT Vol.28 がねこまさし / @massie_g

Slide 2

Slide 2 text

やりたいこと:将棋AIで形勢判断 ABEMA TVより

Slide 3

Slide 3 text

将棋GUIアプリ と 将棋AIソフト ShogiGUI (Win) http://shogigui.siganus.com/ 将棋丸 - ブラウザ将棋 (Chrome) https://shogimaru.com/ Electron将棋 Electron(Win/Mac) https://sunfish-shogi.github.io/electron-shogi/ 将棋GUI やねうら王 https://github.com/yaneurao/Ya neuraOu 水匠5 https://drive.google.com/drive/folders/19Al6 9YMkJ_cXSBhtn8df9yfxhn8QFCYo 将棋所(Win/Mac) http://shogidokoro.starfree.jp/ dlshogi https://github.com/TadaoYamaoka/Dee pLearningShogi 将棋AI 連携

Slide 4

Slide 4 text

今回:Electron将棋 + やねうら王 ShogiGUI (Win) http://shogigui.siganus.com/ 将棋丸 - ブラウザ将棋 (Chrome) https://shogimaru.com/ Electron将棋 Electron(Win/Mac) https://sunfish-shogi.github.io/electron-shogi/ 将棋GUI やねうら王 https://github.com/yaneurao/Ya neuraOu 水匠5 https://drive.google.com/drive/folders/19Al6 9YMkJ_cXSBhtn8df9yfxhn8QFCYo 将棋所(Win/Mac) http://shogidokoro.starfree.jp/ dlshogi https://github.com/TadaoYamaoka/Dee pLearningShogi 将棋AI 連携

Slide 5

Slide 5 text

オマケ: Electronとは ● https://www.electronjs.org/ja/docs/latest ● Electron は、JavaScript、HTML、CSS によるデスクトップアプリケーションを構築 するフレームワーク ○ Electron は Chromium (ChromeのOSS版) と Node.js をバイナリに組み込んでいる ○ 単一の JavaScript コードベースを維持しつつ、ネイテイブ開発できる ○ Windows、macOS、Linux で動作するクロスプラットフォームアプリを作成できる ● 旧 Atom Shell ○ GitHubが開発、管理 ● 主なアプリケーション ○ VS Code ○ Slack (Desktop版) ○ Discord (Desktop版)

Slide 6

Slide 6 text

セットアップの流れ ● Electron将棋をインストール ○ ダウンロード、インストール ○ 起動→セキュリティで許可→再度起動 ● やねうら王をインストール ○ バイナリをダウンロード、解凍、お好きなフォルダーにコピー ○ 定跡ファイルをダウンロード、解凍、やねうら王のフォルダー にコピー ○ ターミナルから実行→セキュリティで許可→再度実行 ● Electron将棋とやねうら王を連携 ○ バイナリのパスを指定 ○ 定跡ファイルのフォルダと、ファイル名を指定 やねうら王 評価関数 モジュール 定跡 ファイル Electron将棋

Slide 7

Slide 7 text

参考:M1 MacにElectron将棋をインストール(将棋GUI) ● 使い方 ○ https://github.com/sunfish-shogi/electron-shogi/wiki/%E4%BD%BF%E3%81%84%E6%96%B9 ● Electron将棋 のサイトからバイナリをダウンロード ○ サイト https://sunfish-shogi.github.io/electron-shogi/ ○ 安定版バイナリ https://github.com/sunfish-shogi/electron-shogi/releases/tag/v1.2.1 ■ release-v1.2.1-mac.zip をダウンロード(2022.12現在) ● インストール ○ zip を解凍し、.dmg をダブルクリック (ElectronShogi-1.2.1.dmg 022.12現在) ○ ElectronShogi.app をApplicationsフォルダー( or 適切なフォルダー)ドロップ ● 起動 ○ ElectronShogi.app アイコンをダブルクリック ○ セキュリティに引っかかるので、 [システム環境設定]-[セキュリティ]で実行を許可 ○ 再度アイコンをダブルクリックして起動

Slide 8

Slide 8 text

参考:M1 Macにやねうら王をインストール(将棋AI) ● やねうら王 のサイト https://github.com/yaneurao/YaneuraOu/releases ○ M1 Mac版のビルド済みバイナリは無し ○ 参考:M1 Macbook Air でやねうら王を動かしてみた ■ https://shogi.zukeran.org/2022/01/24/yaneuraoh-on-m1-macbook-air/ ● M1 mac 用バイナリのインストール ○ Mac用のKristallweizenバイナリ(2021年クリスマス版)※ちょっと古い ○ https://github.com/bleu48/YaneuraOu/releases/tag/v7.00 ■ Kristallweizen_M1Mac.zip をダウンロード ○ 解凍してできたフォルダー (Kristallweizen_M1Mac)を、適切な場所にコピー ● 定石ファイルを準備 ○ 100テラショック定跡 ■ https://github.com/yaneurao/YaneuraOu/releases/tag/BOOK-100T-Shock ■ 100T-shock-book.zip をダウンロード、解凍 ○ やねうら王のフォルダーの配下に booksフォルダーを作成 ○ booksフォルダーに、解凍した 定跡ファイル(user_book1.db)をコピー ● やねうら王を起動 ○ ターミナルからバイナリ( YanauraOu-by-gcc) を起動 ■ セキュリティに引っかかるので、 [システム環境設定]-[セキュリティ]で実行を許可 ○ 再度ターミナルから起動 ■ isready + [ENTER] と入力 → info〜と表示され、最後に "readyok" と表示されればOK ■ quit + [ENTER] で止める

Slide 9

Slide 9 text

Electron将棋の画面

Slide 10

Slide 10 text

Electron将棋とやねうら王を連携 ● Electron将棋の [設定] - [エンジン設定] メニュー でダイアログを表示 ● 下部の[追加]ボタンをクリック ○ 将棋AIのバイナリ(YanauraOu-by-gcc)を指定 ● ダイアログに戻ったら、[設定]ボタンをクリック ○ エンジン設定で、BookDirを指定 「book」 ○ BookFileで定跡ファイルを指定「user_book1.db」 ○ [OK] でダイアログに戻る ● [保存して閉じる]ボタンをクリック

Slide 11

Slide 11 text

棋譜を解析 ● 棋譜(将棋の手順)を準備 ○ 将棋DB2からKIF形式を コピー ○ https://shogidb2.com ● Electron将棋に取り込む ○ [編集]-[棋譜・局面貼り 付け] ● [解析]ボタンで解析スタート ○ 評価値や期待勝率を切 り替えられる 手数----指手---------消費時間-- 1 2六歩(27) (00:00/00:00:00) 2 8四歩(83) (00:00/00:00:00) 3 2五歩(26) (00:00/00:00:00) 4 8五歩(84) (00:00/00:00:00) 5 7六歩(77) (00:00/00:00:00) 6 3二金(41) (00:00/00:00:00) 7 7七角(88) (00:00/00:00:00) 8 3四歩(33) (00:00/00:00:00) KIF形式

Slide 12

Slide 12 text

将棋GUIと将棋AIの連携:USIプロトコル やねうら王 評価関数 モジュール 定跡ファイル Electron将棋 USI(Universal Shogi Interface) プロトコル 標準入出力経由のテキスト形式

Slide 13

Slide 13 text

USIプロトコル ● “USI(Universal Shogi Interface)”プ ロトコル ○ http://shogidokoro.starfree.jp/usi.html ● GUIとエンジン間の通信のやり取り は、標準入出力を通してテキストのコ マンドで行われます。 ● エンジンは常に(たとえ思考中であっ ても)コマンドの受信ができる必要が あります。 ● エンジンがコマンドの行を送信する場 合、最後に必ず改行コード( \n) https://engineerblog.mynavi.jp/technology/shogi-ai/ より (ちょっとATコマンドっぽい?)

Slide 14

Slide 14 text

将棋AI同士の対戦 将棋GUI 将棋AI 将棋AI USI USI USI USIは対称なプロトコルではないので、 直接やりとりはできない USIプロトコルを使って、 AI同士を仲立ちす る ● 標準入出力を使うので、同じマシン 上で動かす必要あり ● ※TCP/IP経由のCSAプロトコルもあ るらしい

Slide 15

Slide 15 text

実際にやってみた(同じ将棋AI同士の対戦) 将棋GUI 将棋AI やねうら王 V7.0 将棋AI やねうら王 V7.0 USI 標準入出力 USI 標準入出力 Electron将棋 同一マシン(M1 Mac)

Slide 16

Slide 16 text

結果:千日手(同じ手順を繰り返す→引き分け)

Slide 17

Slide 17 text

勝敗がついたケースもあり:先手の勝ち

Slide 18

Slide 18 text

リモートマシン上のAIと対戦させたい 将棋AI やねうら王 V7.0 将棋AI やねうら王 V7.0 USI 標準入出力 USI 標準入出力 将棋GUI Electron将棋 メインマシン(M1 Mac) リモートマシン TCP/IP

Slide 19

Slide 19 text

リモートマシン上のAIと対戦: ssh で実現 将棋AI やねうら王 V7.0 将棋AI やねうら王 V7.0 USI 標準入出力 将棋GUI Electron将棋 メインマシン(M1 Mac) リモートマシン(Intel Mac) シェル スクリプト ssh (鍵接続) ssh(TCP/IP) USI 標準入出力

Slide 20

Slide 20 text

まとめ ● 最近の将棋ソフトは、GUI部分とAI部分が分離されている ● 間をつなぐインターフェイスは共通化されている ○ USIプロトコル、(CSAプロトコル) ● M1 Macでも将棋AI動いた ○ Intel Mac, Windows 10でも同様な手順で動かせた ○ Intel Mac版/Windows版は、CPUの世代により拡張命令が異なる ■ それぞれに最適化されたバイナリが配布されている ● USI over SSH で M1 Mac ←→ Intel Mac 対戦もできた ○ ビバ! UNIX思想 & 標準入出力(& SSH)