Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
M1 Macと将棋AIとUSI
Search
mganeko
December 29, 2022
Technology
1.5k
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
M1 Macと将棋AIとUSI
社内のLTイベント用のスライドです
mganeko
December 29, 2022
More Decks by mganeko
See All by mganeko
OpenAI RealTime API WebRTCモード - シグナリングとDataChannelの使い道 -
mganeko
0
330
Canvasで簡易背景ぼかしをやってみた
mganeko
0
1.1k
WebCodecsの実装状況 / Status of WebCodecs
mganeko
0
1.7k
Small Tips to use Bun with WebSocket Server and WebAssembly Modules
mganeko
0
5.4k
Build Node.js–WASM/WASI tiny compiler with Node.js
mganeko
0
780
Node.js x Chrome headless for WebRTC MCU
mganeko
1
3.4k
Extend User Experience of WebRTC with Cool Sensor Devices
mganeko
1
740
Playing with OSS WebRTC SFU meidasoup (update for v1.2)
mganeko
0
950
Build WebRTC iOS Gateway on Browser
mganeko
0
1.3k
Other Decks in Technology
See All in Technology
AWSとAzureのマルチクラウド活用における強い味方___AWS_Kiroを使った二刀流スキル作成.pdf
duelist2020jp
1
160
みてねにおけるAI-DLC導入活動とAIドリブン開発の現在地/JAWS-UG AI-DLC #2
isaoshimizu
2
320
分割40%キーボードにスムーズに入門するには
hoto17296
1
210
1000⼈規模のClaude Enterprise運⽤を「Oktaのグループ」と「Slack」に集約する
sansantech
PRO
1
550
サービス内で複数のOP・ASを連鎖させる(OAuth/OIDC Numa (Immersion) Workshop 2026)
oidfj
PRO
0
420
Bet AI Day 2026丨AIによって本質に戻るシステムリスク管理
layerx
PRO
0
160
Hub & Spoke 環境のネットワークルーティングを分解してみる
tsuyataku
1
480
All About Sansan – for New Global Engineers
sansan33
PRO
1
1.5k
会計事務所と顧問先の契約関係をOIDC・OAuthで表現する
terara
0
560
Bet AI Day 2026丨Agentは、「金融」という巨大産業の何を変えられるのか
layerx
PRO
0
170
Claude Codeの体系的な理解と知識のフック
oikon48
10
6.3k
LLMアプリ、 雰囲気で運用してませんか? 〜LLMOpsの現在地〜
taka_aki
1
630
Featured
See All Featured
Balancing Empowerment & Direction
lara
6
1.3k
Automating Front-end Workflow
addyosmani
1369
210k
Game over? The fight for quality and originality in the time of robots
wayneb77
1
260
VelocityConf: Rendering Performance Case Studies
addyosmani
331
25k
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
480
How to Ace a Technical Interview
jacobian
281
24k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
2k
Un-Boring Meetings
codingconduct
0
400
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.5k
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
480
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
630
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
35k
Transcript
M1 Macと将棋AIとUSI えるLT Vol.28 がねこまさし / @massie_g
やりたいこと:将棋AIで形勢判断 ABEMA TVより
将棋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 連携
今回: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 連携
オマケ: 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版)
セットアップの流れ • Electron将棋をインストール ◦ ダウンロード、インストール ◦ 起動→セキュリティで許可→再度起動 • やねうら王をインストール ◦
バイナリをダウンロード、解凍、お好きなフォルダーにコピー ◦ 定跡ファイルをダウンロード、解凍、やねうら王のフォルダー にコピー ◦ ターミナルから実行→セキュリティで許可→再度実行 • Electron将棋とやねうら王を連携 ◦ バイナリのパスを指定 ◦ 定跡ファイルのフォルダと、ファイル名を指定 やねうら王 評価関数 モジュール 定跡 ファイル Electron将棋
参考: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 アイコンをダブルクリック ◦ セキュリティに引っかかるので、 [システム環境設定]-[セキュリティ]で実行を許可 ◦ 再度アイコンをダブルクリックして起動
参考: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] で止める
Electron将棋の画面
Electron将棋とやねうら王を連携 • Electron将棋の [設定] - [エンジン設定] メニュー でダイアログを表示 • 下部の[追加]ボタンをクリック
◦ 将棋AIのバイナリ(YanauraOu-by-gcc)を指定 • ダイアログに戻ったら、[設定]ボタンをクリック ◦ エンジン設定で、BookDirを指定 「book」 ◦ BookFileで定跡ファイルを指定「user_book1.db」 ◦ [OK] でダイアログに戻る • [保存して閉じる]ボタンをクリック
棋譜を解析 • 棋譜(将棋の手順)を準備 ◦ 将棋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形式
将棋GUIと将棋AIの連携:USIプロトコル やねうら王 評価関数 モジュール 定跡ファイル Electron将棋 USI(Universal Shogi Interface) プロトコル
標準入出力経由のテキスト形式
USIプロトコル • “USI(Universal Shogi Interface)”プ ロトコル ◦ http://shogidokoro.starfree.jp/usi.html • GUIとエンジン間の通信のやり取り
は、標準入出力を通してテキストのコ マンドで行われます。 • エンジンは常に(たとえ思考中であっ ても)コマンドの受信ができる必要が あります。 • エンジンがコマンドの行を送信する場 合、最後に必ず改行コード( \n) https://engineerblog.mynavi.jp/technology/shogi-ai/ より (ちょっとATコマンドっぽい?)
将棋AI同士の対戦 将棋GUI 将棋AI 将棋AI USI USI USI USIは対称なプロトコルではないので、 直接やりとりはできない USIプロトコルを使って、
AI同士を仲立ちす る • 標準入出力を使うので、同じマシン 上で動かす必要あり • ※TCP/IP経由のCSAプロトコルもあ るらしい
実際にやってみた(同じ将棋AI同士の対戦) 将棋GUI 将棋AI やねうら王 V7.0 将棋AI やねうら王 V7.0 USI 標準入出力
USI 標準入出力 Electron将棋 同一マシン(M1 Mac)
結果:千日手(同じ手順を繰り返す→引き分け)
勝敗がついたケースもあり:先手の勝ち
リモートマシン上のAIと対戦させたい 将棋AI やねうら王 V7.0 将棋AI やねうら王 V7.0 USI 標準入出力 USI
標準入出力 将棋GUI Electron将棋 メインマシン(M1 Mac) リモートマシン TCP/IP
リモートマシン上のAIと対戦: ssh で実現 将棋AI やねうら王 V7.0 将棋AI やねうら王 V7.0 USI
標準入出力 将棋GUI Electron将棋 メインマシン(M1 Mac) リモートマシン(Intel Mac) シェル スクリプト ssh (鍵接続) ssh(TCP/IP) USI 標準入出力
まとめ • 最近の将棋ソフトは、GUI部分とAI部分が分離されている • 間をつなぐインターフェイスは共通化されている ◦ USIプロトコル、(CSAプロトコル) • M1 Macでも将棋AI動いた
◦ Intel Mac, Windows 10でも同様な手順で動かせた ◦ Intel Mac版/Windows版は、CPUの世代により拡張命令が異なる ▪ それぞれに最適化されたバイナリが配布されている • USI over SSH で M1 Mac ←→ Intel Mac 対戦もできた ◦ ビバ! UNIX思想 & 標準入出力(& SSH)