狠狠撸

狠狠撸Share a Scribd company logo
ShogiHome
新しい将棋の基盤を作る
第5回世界将棋AI電竜戦 講演資料
Kubo, Ryosuke
発表者
Kubo, Ryosuke
将棋 AI「Sunfish」開発
WCSC 21-23th, 25th(計4回)出場(22th 新人賞)
将棋アプリ「ShogiHome」開発
ShogiHome
将棋のデスクトップアプリ
及びブラウザ版
https://sunfish-shogi.github.io/shogihome/
目次
1 将棋 AI と USI
ShogiHome のコンセプト
2
ShogiHome の機能
3
4 利用状况
5 ShogiHome を改造しよう
6 今后について
将棋 AI と USI
やねうら王
技巧
dlshogi
Apery
USI エンジンと連携
USI
USI
USI
USI
USI 以前の将棋 AI 開発
A. 周辺機能込みで開発 B. DLLで連携
自作アプリ
AI
GUI
通信対局
CSA 将棋
AI (.dll)
GUI
通信対局
言語と OS に制限あり!
将棋所の登場 (2007)
USI を採用した高機能な GUI
USI = Universal Shogi Interface
将棋所
USI の恩恵
将棋所
エンジン B
GUI
通信対局
標準入出力
ShogiGUI
GUI
usiToCsa
通信対局
好きな言語や OS で開発が可能!!
エンジン A エンジン C
USI USI USI USI
USI
USI 対応ソフトウェアの例
将棋所
ShogiGUI
WhaleWatcher
将棋丸 ※
USI将棋 ※
将棋ぶらうざ Q ※
ShogiBoard
やねうら王
dlshogi
Apery
技巧
AobaZero
GPSFish
Ponanza
GUI Apps Engines
Win Mac
Win
Win Win
Win Mac Linux
Win
Win Mac Linux
※USI将棋と将棋ぶらうざ Q はサイト閉鎖
※将棋丸は Mac 動作未確認 https://x.com/shogimaru/status/1506867669685145605
CLI Tools
usiToCsa
MyShogi
Win Mac Linux
Sunfish
cshogi
python-shogi
ShogiHome のコンセプト
理想 = 多面的な利用
ShogiHome
ツール制作
拡張版
コマンドラインツール
ライブラリ
サービス開発
研究
学習
AI 開発
学術研究
情報発信 アプリ開発
ゲーム開発
3 つの軸
Open Source
Modern UI UX
Cross-Platform
ソースコードとライセンス
ソースコード
MIT Licnese
https://github.com/sunfish-shogi/shogihome
ライブラリ / アセット
将棋ライブラリ 自作の駒画像
https://www.npmjs.com/package/tsshogi https://sunfish-shogi.github.io/shogi-images/
ブラウザ版
デスクトップ版
クロスプラットフォーム
Electron
Chromium
Node.js
ESM
CommonJS
ESM
Windows
macOS
Linux
コマンドラインツール
CommonJS Node.js
JavaScript へ変換
Windows
macOS
Linux
TypeScript
画面デザイン
視認性
タッチ操作
レスポンシブデザイン
一貫性
ShogiHome の機能
一般的な機能
棋譜編集 対局
検討?解析
形勢グラフ
盤面編集 エンジン管理
コメント編集 詰み探索 外部駒画像
棋譜ファイル関連機能
KIF
KI2
CSA
SFEN / USI
JKF
USEN
6 種類の棋譜形式に対応 棋譜形式一括変換 履歴
シェア
開発者向け機能
CSA プロトコル
ログ
DevTools
通信の監視?制御
比較?マージ
(参考)DevTools を使ったハック
1 秒ごとにボタンをクリック
コマンドラインツール「usi-csa-bridge」
https://www.npmjs.com/package/usi-csa-bridge
局面図生成
PNG / JPEG
カスタムレイアウト
カラーテーマ
デフォルト
桜
紅葉
雪 ダーク
深緑
利用状况
ダウンロード数
GitHub が計測しているダウンロード数
2024/11/28 時点
「窓の杜」掲載
「窓の杜」掲載
OS 比率
Windows macOS Linux
活用事例
世界コンピューター将棋選手権
2023 年 — 2 チームが採用を表明
2024 年 — 採用チーム中 2 チームが決勝進出?「水匠」 YouTube 配信
ブログ記事
有料 note 記事で局面図を使用
世界将棋AI電竜戦
2022 年 —「Just Stop 26歩」が採用
2023 年 — 4 チームが採用を表明
改造
「将スタ」 https://github.com/sueyoshiryosuke/electron-shogi_4ss
「棋譜暗記 Web」https://qiita.com/tobita_yoshiki/items/068ced648b59af656d1d
ShogiHome を改造しよう
開発ツール
Visual Studio Code
https://code.visualstudio.com/
Node.js
https://nodejs.org/
ソースの取得
① ソースを取得
https://github.com/sunfish-shogi/shogihome
② VSCode で開く
読み込み後に推薦される以下の拡張機能を入れる。
「Vue - Official」「ESLint」「Prettier」
開発コマンド
基本
% npm install
% npm run electron:serve
① 依存モジュールのインストール
② 開発モードで起動
その他
% npm update
依存モジュール更新
% npm run electron:build
リリース
% npm lint
コード整形
% npm run test:ui
単体テスト
デバッグ
VSCode 設定済み
ファイル構成
バックグラウンド (Node.js)
レンダラー (Chromium)
プロセス間通信
メイン画面
画面要素
HTML テンプレート
.vue ファイル
スクリプト
スタイルシート
例)囲いエフェクトを表示する
例)囲いエフェクトを表示する?アセットを配置する
囲いのパターン
例)囲いエフェクトを表示する?囲い検出の実装①
定義
パターン読み込み
変数宣言と初期化
例)囲いエフェクトを表示する?囲い検出の実装②
囲い判定関数
先手
後手
例)囲いエフェクトを表示する?囲い検出の実装③
changePosition イベント
例)囲いエフェクトを表示する?テンプレート
img 要素を追加
CSS を記述
例)囲いエフェクトを表示する?完成
https://github.com/sunfish-shogi/shogihome/commit/6e74b4c
(castle-e?ects-demo)
例)囲いエフェクトを表示する?改善点
● 検出ロジックの課題
○ 出現済みの囲いを先後で区別する。
○ 同時にマッチする組み合わせ(例 : 片美濃 vs 本美濃)に優先順位を付ける。
○ 参考: https://github.com/mizar/sylwi-kifu-vue
● 音が無い
○ 素材を用意する。
○ 検出時にオーディオの再生をする。
● エフェクト中に操作ができない
○ クリックイベントを奪わないように修正する。
○ アニメーションを駆使して短い時間で視覚効果を最大化する。
改造のヒント
自分好みに 新しい製品
● 独自のカラーテーマ
● 自動再生機能
● 戦法エフェクト
● 駒の D&D 機能
● 次の一手出題アプリ
● 観戦記事生成アプリ
● ノベルゲーム
● クラウド棋譜管理サービス
今后について
次期バージョン (v1.20.0) 予定
定跡機能
● やねうら王定跡フォーマット 2016 対応
● .sbk 対応予定なし(ライセンス不明の為)
2025 年以降
開発予定
具体的なものは未定。
既存機能の改善はしていきたい。
情報発信
将棋 AI や ShogiHome を活用するための情報を整えたい。
最後に
● 不具合報告にご協力ください!
● あなたの理想の製品を作ってください!
● 様々な用途で活用してください!
※あらゆる利用は自己責任で!
Thank you!
以下、不採用スライド ※時間余ったら使う
記事
● notehttps://note.com/ryosuke_kubo
○ 将棋 AI を使った研究環境を作るための Tips https://note.com/ryosuke_kubo/n/n40f98a434?4
○ やねうら王で検討中に定跡を表示する方法 https://note.com/ryosuke_kubo/n/nf67a2e6c3235
○ PCの将棋盤を美しくする方法 https://note.com/ryosuke_kubo/n/ne5d5d9c3eba4
● Qiitahttps://qiita.com/sunfish-shogi
○ 将棋の棋譜や局面のフォーマット https://qiita.com/sunfish-shogi/items/964e139ef3bfd8f738d4
○ Electronを使ったPC向け将棋アプリ開発 https://qiita.com/sunfish-shogi/items/e58065a0f38f5888d845
○ USI (Universal Shogi Interface) の現状調査 https://qiita.com/sunfish-shogi/items/3efcd3a727c04ada020d
品质について
リリースサイクル
1ヶ月
2ヶ月
3ヶ月
2 年 7 ヶ月の間に 20 回の新機能リリース
平均 48.4 日間隔
【注意】今後も同じペースを維持するとは限りません。
自動テスト
合計 400 以上の項目を自動でテスト 変更が入るたびに GitHub 上でテスト実行
E2E テスト
新機能リリース時に
全体的な End-to-End テストを実施
セキュリティ
週 2 回の監査コマンド実行
npm-audit で CRITICAL なものを通知
(サプライチェーン攻撃対策)
GitHub のセキュリティ機能
CodeQL による分析
GHA も Dependabot で更新
Electron の Best Practice
ベストプラクティス に従った実装

More Related Content

第5回世界将棋AI電竜戦 講演資料「ShogiHome - 新しい将棋の基盤を作る」