名人より強い!?将棋ソフト「やねうら王」をLinuxで動かす方法【Ubuntu 16.04・Fedora 26対応】

2017年8月21日

近年、ニコニコ動画でプロ棋士と将棋ソフトが対戦する「将棋電王戦」というのをやっていましたよね。結果はソフトがプロ棋士に大きく勝ち越しており、もう人間がトップレベルの将棋ソフトに勝ち越すのは難しそうです。

「電王戦」では最終的に、ハイスペックPC1台にハードウェアが制限されていました。そのため、そこそこのスペックのPCで電王戦の出場ソフトを動かすことができれば、名人より強いかもしれないソフトと対戦することができそうです。幸い、多くの将棋ソフトがオープンソース化されており、Linuxで動かすことができます。

そこで、電王戦への出場経験もある「やねうら王」をLinuxで試してみたところ、Ubuntu 16.04とFedora 26で動かすことができました。元はWindowsで開発されているソフトですが、Linuxでもビルドできるよう配慮されています。今年(2017年)の「第27回世界コンピュータ将棋選手権」で優勝した「elmo」という将棋ソフトは、この「やねうら王」に、独自の「評価関数」と「定跡」を組み合わせたものだそうです。この「elmo」の導入についても紹介します。

(11月23日追記)
2017年11月に行われた「第5回 将棋電王トーナメント」で優勝した「平成将棋合戦ぽんぽこ」のインストール手順もまとめました。以下のページをご覧ください。

「やねうら王」と対戦するために必要なソフト

「やねうら王」と対戦するためには、将棋の思考エンジンである「やねうら王」やねうら王で使える評価関数将棋GUIソフト「将棋所(しょうぎどころ)が必要になります。これらを入手し、組み合わせて動かすまでの方法を以下にまとめます。

必要なパッケージのインストール

まずは「やねうら王」のビルドに必要なパッケージと、Windows用ソフトである「将棋所」をLinuxで動かすための「Mono」をインストールします。

Ubuntu 16.04の場合、以下のコマンドを実行するだけです。

sudo apt install make g++ mono-complete

Fedora 26の場合、以下のようにMonoの配布元レポジトリを追加し、パッケージのインストールを実行します。

sudo dnf -y install dnf-utils
sudo rpm --import "http://keyserver.ubuntu.com/pks/lookup?op=get&search=0x3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF"
sudo yum-config-manager --add-repo http://download.mono-project.com/repo/centos/
sudo dnf install -y make gcc-c++ mono-complete

残念ながらCentOS 7はg++のバージョンが古いため、やねうら王をビルドできませんでした。バージョン4.9以上のg++を導入できれば、インストールすることが可能かもしれません。

CPUがサポートする拡張機能の確認

やねうら王をビルドする際に必要になる、CPUがサポートする拡張機能を以下のコマンドで確認しておきましょう。

grep flags /proc/cpuinfo | head -1 | grep -E '(avx2|sse4_2|sse4_1|sse2)'

avx2、sse4_2、sse4_1、sse2のいずれが含まれているかをチェックしておいてください。

「やねうら王」のダウンロードとビルド

以下のコマンドで、「やねうら王2017Early」のダウンロードと展開を行い、ソースコードの入ったディレクトリに移動します。

cd /tmp/
wget https://github.com/yaneurao/YaneuraOu/archive/v4.79engine2017.tar.gz
tar xvzf v4.79engine2017.tar.gz
cd YaneuraOu-4.79engine2017/source/

続いてビルドします。CPUがサポートする拡張機能により、以下のうちいずれかを実行してください(上にかかれているものを優先して選んでください)。

avx2をサポートしている場合

make avx2 COMPILER=g++

sse4_2をサポートしている場合

make sse42 COMPILER=g++

sse4_1をサポートしている場合

make sse41 COMPILER=g++

sse2をサポートしている場合

make sse2 COMPILER=g++

ビルドが正常に終わると、実行ファイル「YaneuraOu-by-gcc」が生成されているはずです。ここでは、ホームディレクトリに「Shogi/YaneuraOu/bin/」ディレクトリを作成して置くことにしましょう。

mkdir -p ~/Shogi/YaneuraOu-4.79/bin
cp -a YaneuraOu-by-gcc ~/Shogi/YaneuraOu-4.79/bin/

評価関数のインストール

やねうら王の評価関数は、「やねうら王評価関数ファイル」で配布されています。ここから使いたい評価関数のアーカイブをダウンロードし、YaneuraOu-by-gccのあるディレクトリに「eval」ディレクトリを作り、そこに展開すると読み込まれます。本記事執筆時点の最新評価関数は「リゼロ評価関数 epoch 8」のようですので、これを使う例を紹介しましょう。評価関数のファイルを「~/Shogi/YaneuraOu/rezero_epoch8/eval/」に配置し、「~/Shogi/YaneuraOu/rezero_epoch8/」にYaneuraOu-by-gccのシンボリックリンクを作成しています。

cd ~/Shogi/YaneuraOu-4.79/
mkdir rezero_epoch8
cd rezero_epoch8/
unzip ~/ダウンロード/re_eval_from_zero_part4.zip
mv epoch8/ eval
ln -s ../bin/YaneuraOu-by-gcc .
echo 'リゼロ評価関数 epoch 8' > engine_name.txt
echo 'やねうらお' >> engine_name.txt

「将棋所」のダウンロードと展開

将棋所のページを開き、最新版をダウンロードしましょう。以下は、「~/Shogi/ShogiDokoro/」に配置する例です。

(11月23日追記) 「ShogiGUI」を使うこともできます。インストール方法は「平成将棋合戦ぽんぽこ」をLinuxにインストールする方法で解説しています。

cd ~/Shogi/
unzip ~/ダウンロード/Shogidokoro.zip

「将棋所」の起動と「やねうら王」の登録

以下のコマンドを実行して、「将棋所」を起動します。

cd ~/Shogi/ShogiDokoro/
mono ShogiDokoro.exe

起動したら、「対局」→「エンジン管理」を開きます。

エンジン一覧で「追加」をクリックし、ファイル選択ダイアログで先ほど追加したディレクトリ「~/Shogi/YaneuraOu/rezero_epoch8/」を開き、「YaneuraOu-by-gcc」を選択して「Open」を押します。左ペインの「Personal」をクリックするとホームディレクトリが開くので、そこからたどっていくと良いでしょう。登録されると、以下のように表示されます。

最新の評価関数を搭載した「やねうら王」と対局!

エンジンを追加したら、メニューから「対局」→「対局...」を選びましょう。そして、後手を「人間」から「エンジン」に切り替え、「リゼロ評価関数 epoch 8」とします。持ち時間や、その他の条件を設定して「OK」をクリックしましょう。PCのスペックによっては少し待たされますが、これで対局をスタートすることができます。

「elmo」とも対局!

今年(2017年)の「第27回世界コンピュータ将棋選手権」で優勝した「elmo」の評価関数と定跡も公開されていますので、「やねうら王」、「将棋所」と組み合わせて動かしてみましょう。「【公式】コンピュータ将棋ソフト「elmo」導入方法」を開き、「4.elmoをダウンロードします。」にあるリンク先(Google Drive)から「elmo.shogi.zip」をダウンロードします。以下は、「~/Shogi/YaneuraOu/elmo.shogi/」以下に配置する例です。

cd ~/Shogi/YaneuraOu/
unzip ~/ダウンロード/elmo.shogi.zip
cd elmo.shogi/
mv book/yaneura_format/standard_book.db book/
ln -s ../bin/YaneuraOu-by-gcc .
echo 'elmo' > engine_name.txt
echo '瀧澤 誠' >> engine_name.txt

あとは、「リゼロ評価関数 epoch 8」と同じように将棋所に登録します。ただし、導入方法のページにある通り、「エンジン設定」をクリックして設定値を変更することが推奨されています。詳しくはリンク先を参照してください。

設定が終われば、「elmo」とも対戦できるようになります。また、先手と後手にエンジンを設定すれば、以下のようにエンジン同士に対局させることもできます。

まとめ

しばらく前は人間にかなわなかった将棋ソフトが、一般的なPCで動くものでもプロ棋士を上回るようになったのですから、すごい進化ですよね。電王戦は終了したようですが、この秋にも「第5回 将棋電王トーナメント」が開催されるようです。それに合わせて、新しいバージョンの「やねうら王」や、その他のオープンソース将棋ソフトも出てきそうです。また、新しいバージョンの導入方法についても記事にしていきたいと思います。