0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【将棋AI開発日記】1. 将棋AI「技巧」をクローンして、とりあえず動かすまで

0
Last updated at Posted at 2026-06-24

はじめに

将棋AI「技巧(ぎこう)」を自分の手で訓練して、自分なりに強くしてみる――
そんな「遊び」をはじめました。この記事はその開発日記の第1回です。

ガチの解説記事というより、「素人が将棋AIをいじって楽しんでる記録」くらいの温度感で書いていきます。間違いやガバもそのまま残すスタイルです。pythonしか触ったことないので超基本的なC++のお作法を理解していないことがあります。お許しください。

なお、この日記は Claude(Claude Code)と一緒に 作っています。
前回は、その Claude Code から Qiita に下書きを投げる仕組み(Qiita MCP / skill)を整備した話を書きました。よければこちらもどうぞ。

今回はその仕組みを使って、実際に開発日記を投稿していきます。

そもそも技巧ってなに?

技巧は、2016年の世界コンピュータ将棋選手権で準優勝、2017年では3位に入賞したトップレベルの将棋ソフトです。しかも オープンソースで無料。誰でも使えて、ソースコードまで公開されています。すごい。

特徴としては、人間っぽい評価項目――

  1. 駒の損得
  2. 駒の効率
  3. 玉の堅さ
  4. 手番

――を考慮して「隙のない形勢判断」をするところ、だそうです。

技巧そのものは「USIエンジン」と呼ばれる対局エンジンで、単体ではただの頭脳です。人間が指して遊ぶには「将棋所」や「ShogiGUI」といった画面(GUI)に登録して使います。エンジンが脳みそ、GUIが体+盤面、みたいなイメージですね。

そして今回やりたいのは、この技巧を自分でビルドして、ゆくゆくは自分で訓練(学習)して強くすること。完成品のzipを落としてくるのではなく、ソースからいじれる状態を作ります。

やったこと(今回のゴール)

  • 技巧のソースコードをクローン
  • C++のビルド環境(g++ / make)を用意
  • ビルドして、エンジンが起動するところまで確認
  • 実際に1手指させてみる
  • UI(ShogiGUI)をダウンロード

技巧のクローン

まずは Ubuntu 上でソースコードを取得します。

git clone https://github.com/hoguro-uelab/Gikou.git

これはあくまでソースコードで、アプリ本体(実行ファイル)ではありません。
このままでは遊べないので、あとで .exe 的な実行ファイルにビルドしてやる必要があります。(完成品の技巧は GitHub から .zip で落とせるので、追加学習だけしたいならそっちが楽。でも今回はソースからやりたい。)

中身を確認:

passiomonster:~/Gikou$ ls
Copying.txt  Makefile  README.md  gikou_ja.txt  src

cloneは成功してそう。

開発ツールの確認(g++ / make)

ここで詰まりかけました。C++をコンパイルするには g++ とか make が要るらしい。正直 g++ が何かもよく分かってないのですが、Pythonにはなかった
「make」「ビルド」みたいなコンパイル工程がC++には必要、ということだけ理解。

とりあえず入ってるか確認すると、見事に両方なかった:

passiomonster:~/Gikou$ g++ --version
make --version
Command 'g++' not found, but can be installed with:
sudo apt install g++
Command 'make' not found, but can be installed with:
sudo apt install make        # version 4.3-4.1build1, or
sudo apt install make-guile  # version 4.3-4.1build1

C++開発に必要な一式をまとめて入れてくれる build-essential をインストール:

sudo apt update
sudo apt install build-essential git

もう一度確認すると、ちゃんと入ってました:

passiomonster:~/Gikou$ g++ --version
make --version
g++ (Ubuntu 11.4.0-1ubuntu1~22.04.3) 11.4.0
...
GNU Make 4.3
...

ビルドしてみる

README に従い、Linux なので make release でコンパイルします。

cd Gikou
make release

無事 bin というフォルダに実行ファイルが生成されました。bin は Linux などでもよくある「バイナリ(実行ファイル)を置くディレクトリ」らしいです。

passiomonster:~/Gikou$ ls -lh bin
total 3.1M
-rwxr-xr-x 1 passiomonster passiomonster 3.1M Jun  7 17:10 gikou

ちなみに、あとで学習用に release という実行ファイルも作りました(拡張子ないんだ…)。
ざっくり gikou がエンジン本体、release が学習・訓練用の実行ファイル という認識。

passiomonster:~/Gikou$ ls -l bin
total 4092
-rwxr-xr-x 1 passiomonster passiomonster 3218240 Jun  7 17:10 gikou
-rwxr-xr-x 1 passiomonster passiomonster  967752 Jun  8 21:36 release

ここまでで何ができるのか

./bin/gikou を起動して isready と打ち、readyok が返ってくればエンジンは起動できています。ただ、起動時のメッセージを見ると、いくつかのファイルがまだ存在しないと言われます(定跡・進行度・評価関数など)。

passiomonster:~/Gikou$ ./bin/gikou
info string Failed to open progress.bin.
info string Failed to open params.bin.
info string Failed to open probability.bin.

つまり今の状態はこんな感じ:

Gikou
├─ プログラム本体        ✓
├─ USI通信              ✓
├─ 定跡(book.bin)       ✗
└─ 評価関数(params.bin) ✗

脳みそ(本体)はできたけど、知識(評価関数)と定跡がまだ空っぽ。
ここを埋める=学習させるのが、これからの本番です。

実際に指させてみる

知識ゼロでも一応指してはくれるのか、最初の局面で確認。

深さ1で探索させると bestmove 1g1f(1六歩)が返ってきました。
頓珍漢ではあるけど、ちゃんと答えは返ってくる。

position startpos
go depth 1

info depth 1 ...
bestmove 1g1f

深さ3にしても bestmove は変わらず。探索の仕組み自体は動いてるけど、
評価関数が無い=賢くないので、同じ手しか出てこないっぽいです。

go depth 3
info depth 1 ... score cp 0 ... pv 1g1f
info depth 2 ... score cp 0 ... pv 1g1f 1c1d
info depth 3 ... score cp 0 ... pv 1g1f 1c1d 1f1e
bestmove 1g1f ponder 1c1d

score cp 0(評価値ゼロ)がずっと並んでるあたり、まさに「まだ何も分かってない」状態だなと。逆に言うと、ここから学習で score が動き出したら成長の証ですね。

UI(ShogiGUI)をダウンロード

人間が盤面で遊ぶには GUI が要るので、定番の ShogiGUI をダウンロードしました。
ただし今回は入手しただけ。技巧をエンジン登録して対局…は、評価関数を入れてちゃんと強くしてから本格的にやる予定なので、次回以降のお楽しみにします。

次にやること

README を grep してみたら、評価ファイルは自分で学習して作るらしいと判明:

passiomonster:~/Gikou$ grep -n "learn" README.md
140:./release --learn-progress
149:./release --learn
159:./release --learn-probability
184:./release --learn-with-rootstrap # RootStrapによる強化学習
195:./release --learn-with-regression # RootStrapとロジスティック回帰を...

完成品の評価関数zipを落としてくる手もありますが、せっかくなので
自分で訓練して育てる方向で進めます。次回は、

  • 学習に使う棋譜データ(kifu.txt)の準備
  • --learn-progress → --learn の学習パイプライン

あたりを触っていく予定です。技巧が score cp 0 から卒業できるか、乞うご期待。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?