LoginSignup
17
21

More than 5 years have passed since last update.

OSXでAperyと将棋をするためにDockerを使ってみた

Posted at

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すると
docker_run.png
このように将棋所が起動されます。

Aperyと指す

GAME(G) -> Engine Manager -> Add -> ../apery/bin/aperyを選択

そうしたら対戦EngineにAperyが選べるようになります。
あとは

GAME(G) -> Start New Gameを選択

game_start.png
と先後や持ち時間の設定してOKを対局開始です。
start.png

また、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にボコボコにされました。

17
21
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
17
21