技巧をMac環境で使う

先日コンピュータ将棋選手権で脚光を浴びた将棋ソフト、技巧のソース・バイナリがgithubにて公開されました。

[将棋ソフト「技巧」 githubサイト](https://github.com/gikou-official/Gikou)

技巧は動作環境の条件も緩く、Max OS X環境でも容易に実行可能とのことなので早速使用してみました。
その時のtipsを以下にまとめておきます。
#本記事で用いたMac環境
MacBook Air（Mid 2012：Intel Core i5 1.8GHz、DDR3 4GB）
Mac OS X 10.11.5（El Capitan）
gcc 4.9.3
Homebrew 0.9.9
Git 2.8.0
Java for Mac OS X

**!!!注意!!!**
**本記事ではターミナル上(MacOSに標準インストールされているターミナル.appなど)にて
Unixコマンドを使用します。予めご了承ください。**
###HomebrewとGitのインストール
```
// homebrewのインストール
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

// Gitのインストール
brew install git
```


#技巧ソースファイル群より実行ファイル生成
まず上記githubサイトより技巧のリポジトリを`git clone`コマンドにてクローンし、
READMEの内容通りにクローンしたフォルダへ移動後に`make release`コマンドを実行すると、
以下の様なエラーが出るケースがあります。

```
git clone https://github.com/gikou-official/Gikou.git
cd Gikou
make release

clang: error: unsupported option '-fopenmp'
make[1]: *** [obj/release/src/bitboard.o] Error 1
make: *** [release] Error 2
```

###make releaseがエラーになる原因
これはMacの標準コンパイラがgccではなくclangであり、
clangでは`-fopenmp`オプションがサポートされていないのが原因です。
よって`-fopenmp`オプションに対応したgcc（ver 4.2以上）をHomebrewを用いてインストールします。
※本記事では都合によりgcc4.9をインストールしていますが、gcc5でも問題ありません。

###make release実行時に参照するgccを設定する方法
**まず既存`gcc`のパス（プログラムが置いてある場所）を`which`コマンドにて調べます。**

```
which gcc
```

**`which gcc`の結果が`/usr/bin/gcc`ならば、下記コマンドを実行してください。**

```
brew install /homebrew/versions/gcc49
sudo ln -sf /usr/local/bin/gcc-4.9 /usr/bin/gcc
sudo ln -sf /usr/local/bin/g++-4.9 /usr/bin/g++
```

なお上記`sudo`コマンド実行時に、macにログインする際に用いるアカウントのパスワードが
必要となります。アカウントにパスワードを設定してないと実行できませんので、
下記サイトを参照してアカウントにパスワードを設定してやってください。
https://support.apple.com/ja-jp/HT202035

また上記`sudo`付加コマンドを実行した際にも、`Operation not permitted`と出力される場合には、`SIP:System Integrity Protection`の一部設定を無効にする必要があります。
その詳細は以下のサイト等をご覧の上、対処してください。

EI Capitanでsudo付けているOperation not permittedが出た時の対処法
http://berukann.hatenablog.jp/entry/2015/12/30/123020

**`which gcc`の結果が`/usr/local/bin/gcc`ならば、下記コマンドを実行してください。**

```
brew install /homebrew/versions/gcc49
ln -s /usr/local/bin/gcc-4.9 /usr/local/bin/gcc
ln -s /usr/local/bin/g++-4.9 /usr/local/bin/g++
```

上記いずれかのコマンド実行後にターミナルソフトを再起動し、`gcc -v`を実行
下記みたいな感じで`gcc`のバージョン情報が出力されればOKです。

```
gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/local/Cellar/gcc@4.9/4.9.3/bin/../libexec/gcc/x86_64-apple-darwin15.4.0/4.9.3/lto-wrapper
Target: x86_64-apple-darwin15.4.0
Configured with: ../configure --build=x86_64-apple-darwin15.4.0 --prefix=/usr/local/Cellar/gcc49/4.9.3 --libdir=/usr/local/Cellar/gcc49/4.9.3/lib/gcc/4.9 --enable-languages=c,c++,objc,obj-c++,fortran --program-suffix=-4.9 --with-gmp=/usr/local/opt/gmp4 --with-mpfr=/usr/local/opt/mpfr2 --with-mpc=/usr/local/opt/libmpc08 --with-cloog=/usr/local/opt/cloog018 --with-isl=/usr/local/opt/isl011 --with-system-zlib --enable-libstdcxx-time=yes --enable-stage1-checking --enable-checking=release --enable-lto --with-build-config=bootstrap-debug --disable-werror --with-pkgversion='Homebrew gcc49 4.9.3' --with-bugurl=https://github.com/Homebrew/homebrew-versions/issues --enable-plugin --disable-nls --enable-multilib
Thread model: posix
gcc version 4.9.3 (Homebrew gcc49 4.9.3)
```

その後改めて`make release`を実行しビルドが完了すれば、`./Gikou/bin/`フォルダに`release`という名のMac用実行ファイルが生成されます。

#関連バイナリを取得する
次に技巧の実行に必要な付随のバイナリファイル（動作時に参照する定跡ファイル等）を取得します。

1. まずgithubの[技巧リリースページ](https://github.com/gikou-official/Gikou/releases)より、`gikou_win_20160601.zip`をダウンロードする。
2. ダウンロードしたzipファイルを展開し、'gikou.exe'ファイル以外の全ファイルを先ほどビルド生成したreleaseという名のmac用実行ファイルと同じフォルダパスにコピー&ペーストする。

![６.png](https://qiita-image-store.s3.amazonaws.com/0/13490/51d8a1cc-ac55-f459-5c75-9356226ba554.png)

これで技巧が人間らしい手を指せるようになります。
※なおこの手順を飛ばしても技巧は実行できるようですが、端歩しか突かない等といった弱い手しか指しません。
（最初この手順を抜かしてたため、正しく実行されているのか悩みました・・・）

#GUIアプリケーションを使って技巧と対局してみる
実際に技巧と対戦してみましょう。今回はMac環境でも使える[将棋ぶらうざＱ](https://www.sbrowser-q.com/)を使用します。

1.将棋ぶらうざＱ公式ページより、将棋ぶらうざＱ（for Macバージョン）をダウンロードし、zip展開する。
2.将棋ぶらうざＱを実行するには[Java for Mac OS X](http://www.java.com/ja/download/mac_download.jsp)が必須なので、必要に応じてインストールする。
3.1.にて展開したフォルダ内にある`SbrowserQ.app`を実行。
4.メニューバーの[設定]->[将棋エンジン設定]を選択

![スクリーンショット 2016-06-03 14.27.26.png](https://qiita-image-store.s3.amazonaws.com/0/13490/c459edfd-35cb-c319-c0ad-08dfe39d3567.png)

5.[追加]をクリック。

![５.png](https://qiita-image-store.s3.amazonaws.com/0/13490/92f750e1-11d0-7ece-2e82-7c23df3c9ffb.png)

6.．項目[エンジンファイルパス]のファイルを選択し、`release`ファイル（のパス）を選択したら[追加]ボタンをクリックして終了。

![４.png](https://qiita-image-store.s3.amazonaws.com/0/13490/221800b7-db19-dd0c-d58c-219dfc5af578.png)

これで対局時にエンジンとして技巧（本記事の場合だと、Gikou 20160601）を選択すれば、晴れて技巧と対局できます。

![１.png](https://qiita-image-store.s3.amazonaws.com/0/13490/42bb9687-fdeb-c439-b4b0-b1b10a980578.png)


無論棋譜解析も可能です。
特別スペックの高くないMBAでの実行でしたが、普通に実行させる分には特に問題ありませんでした。

#参照
[MacでMPIとopenmpをハイブリッドにつかえる環境を構築する](http://qiita.com/himo/items/c30d83d0f7642fb3af57)