Diverse Advent Calendar 12日目です。
単純に電王戦を観戦していたら参加している将棋エンジンと指してみたくなりました。
そこで去年から公開している
github apery
を動かして指してました。
Readmeを読んでみたら将棋所の使い方が載っていたので試してみました。
なお、こちらは将棋ぶらうざQはmacで動くので簡単にAperyと指すことが出来ると思います。
##スペック
OSX yosemite v10.10.5
メモリ 16GB
プロセッサ 3.4GHz Intel Core i5
##動かす
macのXへ飛ばすために下記にある参考にさせていただいたURLを見るとsocatとXQuartz(X11)が必要なのでインストールします。
$ brew install socat
$ brew install caskroom/cask/brew-cask
$ brew install xquartz
XQuartz(X11)は10.7 Lion以前は標準で標準でインストールされていましたが、10.8 Mountain Lion以降から標準でインストールされていないので代わりにXQuartzをインストールしないといけなくなりました。
ちなみに上記ではhomebrewを使用してインストールしていますがXQuartzこちらからダウンロードしてインストールすることが出来ます。
xquartzを起動
socat TCP-LISTEN:6000,reuseaddr,fork UNIX-CLIENT:\"$DISPLAY\"
xquartzを起動して環境変数DISPLAYの設定がされます。
socatを使用して6000番ポートでTCPの受け入れる状態し、$DISPLAYを指定しdockerコンテナとMacで通信が行われるようにします。
XQuartzを起動しても下記のようになっていない時は再起動する必要があるかもしれないです。
(例)
$ echo $DISPLAY
/private/tmp/com.apple.launchd.aqpJZ45kSc/org.macosforge.xquartz:0
####Dockerfile
# DOCKER-VERSION 1.9.1
# VERSION 0.0.1
FROM ubuntu:14.04
MAINTAINER python_spameggs
RUN apt-get update && apt-get install -y \
wget \
unzip \
mono-complete \
git-core \
build-essential
RUN export uid=1000 gid=1000 && \
mkdir -p /home/shogi && \
echo "shogi:x:${uid}:${gid}:Developer,,,:/home/shogi:/bin/bash" >> /etc/passwd && \
echo "shogi:x:${uid}:" >> /etc/group && \
echo "shogi ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/shogi && \
chmod 0440 /etc/sudoers.d/shogi && \
chown ${uid}:${gid} -R /home/shogi
USER shogi
ENV HOME /home/shogi
WORKDIR /home/shogi
RUN git clone https://github.com/HiraokaTakuya/apery.git
WORKDIR /home/shogi/apery
RUN cd src/ && make
#RUN cd src/ && git submodule init && git submodule update # This is Heavy
RUN wget https://hiraoka64@bitbucket.org/hiraoka64/bin/get/5ef825dbcbea.zip && \
unzip 5ef825dbcbea.zip && \
rmdir bin && \
mv hiraoka64-bin-5ef825dbcbea bin
RUN cp src/apery bin/apery
RUN cd bin/ && ./make_synthesized_eval.sh
WORKDIR /home/shogi
RUN wget http://www.geocities.jp/shogidokoro/download/Shogidokoro.zip
RUN unzip Shogidokoro.zip
WORKDIR /home/shogi/Shogidokoro
ENTRYPOINT [ "/usr/bin/mono" ]
CMD [ "Shogidokoro.exe" ]
###ビルド
docker build -t apery .
#RUN cd src/ && git submodule init && git submodule update
はサイズが大きく時間がかかりすぎてタイムアウトしてしまうので
RUN wget https://hiraoka64@bitbucket.org/hiraoka64/bin/get/5ef825dbcbea.zip
こちらをダウンロードして使用していますのでこのbinが更新されたらビルドがコケると思いますのでその時はこちらから最新のURLに置き換えるといいかもしれないです。
RUN cd bin/ && ./make_synthesized_eval.sh
こちらも時間のかかるものなのですが、評価関数のフォルダに「*_synthesized.bin」がないとaperyの起動が非常にかかるそうなので作成しています。(数分〜数十分)
###実行
docker run --rm -e DISPLAY=192.168.99.1:0 --name shogi_apery apery
192.168.99.1:0の192.168.99.1の部分はdockerとvirtualboxを繋ぐIPを指定してあげればいい。
socatの方を動かしてから別ウィンドウのターミナルをからdocker runしてください。
$ ifconfig
...
vboxnet3: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> mtu 1500
ether 0a:00:27:00:00:03
inet 192.168.99.1 netmask 0xffffff00 broadcast 192.168.99.255
なのでdocker runする前に次に振られるIPを調べておくといいですね。
docker runすると
このように将棋所が起動されます。
##Aperyと指す
GAME(G) -> Engine Manager -> Add -> ../apery/bin/aperyを選択
そうしたら対戦EngineにAperyが選べるようになります。
あとは
GAME(G) -> Start New Gameを選択
また、apt-get install gpsshogi
でGPS将棋が入るようなのでApery対GPS将棋もできたりします。
他にも将棋エンジンこちらに公開されているものがあるので指すことが出来ます。
##参考
Running GUI apps with Docker
Docker Containers on the Desktop
How to run a Linux GUI application on OSX using Docker
DockerコンテナのGUIをMac側に飛ばして表示させよう。
###蛇足
持ち時間5分、秒読み30秒で先後それぞれ5戦しましたが10-0でAperyにボコボコにされました。