【Jetson_nano】将棋所で将棋AIで遊ぶ♬

前回、参考の通りJetson_nanoでChainerなどの環境構築まで実施した。
そこで、今回は昨年動かしてみた将棋AIを動かしてみる。
【参考】
・[【Jetson_nano】Opencv, Chainer, Keras,そしてScikit-learn環境構築♬](https://qiita.com/MuAuan/items/9d07ce862b55a6773b54)
・[【将棋AI】「将棋AIで学ぶディープラーニング」を読む♪～対戦してみる](https://qiita.com/MuAuan/items/4d9a1f18e3f32237f62e)
###やったこと
・将棋所を動かす
・dlshogiを動かす
###・将棋所を動かす
将棋所は「[Ubuntu Linuxで動作させる場合の注意点](http://shogidokoro.starfree.jp/ubuntu.html)」のまんまで動きました。
まず、Displayの解像度は１２８０x１０２４がいいと思います。
####将棋所のダウンロード
[将棋所のサイトからShogidokoro.zipをダウンロード](http://shogidokoro.starfree.jp/download.html)し、展開してから、Shogidokoroフォルダをどこか適当な場所に置きます。
####Monoのインストール
Windowsで動くshougidokoroをUbuntuで動かすにはMonoをインストールします。

```
$ sudo apt install mono-complete
```
####将棋所を動かす
端末でそのディレクトリに移動してから次のコマンドを実行します
最初のコマンドはうまく将棋所を起動するためのおまじないです。

```
$ export TERM=xterm
$ mono Shogidokoro.exe
```
これでとりあえず動きますが、文字が見えない対戦エンジンが表示されないなどの問題があります。
####日本語フォントをインストールする
以下のようにtakaoフォントをインストールすると表示や文字が見やすく改善する。

```
$ sudo apt install 'fonts-takao-*'
```
この時点で、人同士の対戦が出来る。
###・dlshogiを動かす
将棋所に付属のLesserkaiは動かない。同じく他の将棋エンジンもWindows環境でコンパイルされているものは動かない。Ubuntu環境でコンパイルし直せば動くようであるが、今回はdlshogiを動かすこととする。まず、以下の参考からdlshogiのzipファイルをダウンロードして解凍する。
【参考】
[TadaoYamaoka/python-dlshogi](https://github.com/TadaoYamaoka/python-dlshogi)
解凍したら、そのディレクリに移動して、以下のコマンドを実行します。

```
pip3 install --no-cache-dir -e .
```
これで以下のsetup.pyが実行されてプログラムへimportできるようになります。

```py
﻿import setuptools

setuptools.setup(
    name = 'python-dlshogi',
    version = '0.0.1',
    author = '',
    packages = ['pydlshogi'],
    scripts = [],
)
```
次に、python-shogiをインストールします。dlshogiはpython-shogiの上に作成されています。

```py
$pip3 install python-shogi
```
これでdlshogiが動くようになったと思います。
そこで、以下の参考の通り手打ちを試してみましょう。
【参考】
[【将棋AI】「将棋AIで学ぶディープラーニング」を読む♪～価値ネットワークで対戦する](https://qiita.com/MuAuan/items/eb2042ae78c79f0ba73b)
ただし以下の../python-dlshogi-master/model/model_policyは予めpolicy_player.pyに設定したmodelfile名です。そして、model/model_policyは実際のweightsの配置です。

```
$python3 -m pydlshogi.usi.usi_policy_player
usi
```
id name policy_player
option name modelfile type string default ../python-dlshogi-master/model/model_policy
usiok

```
setoption name modelfile value model/model_policy
isready
```
readyok

```
position startpos
```
lnsgkgsnl/1r5b1/ppppppppp/9/9/9/PPPPPPPPP/1B5R1/LNSGKGSNL b - 1

```
go
```
info string 9g9f  : 0.00834
info string 8g8f  : 0.00000
info string 7g7f  : 0.48470
info string 6g6f  : 0.00012
info string 5g5f  : 0.00153
info string 4g4f  : 0.00072
info string 3g3f  : 0.00013
info string 2g2f  : 0.46938
info string 1g1f  : 0.00088
info string 9i9h  : 0.00001
info string 1i1h  : 0.00000
info string 7i7h  : 0.00043
info string 7i6h  : 0.00139
info string 3i4h  : 0.01277
info string 3i3h  : 0.00525
info string 6i7h  : 0.00249
info string 6i6h  : 0.00000
info string 6i5h  : 0.00034
info string 4i5h  : 0.00606
info string 4i4h  : 0.00002
info string 4i3h  : 0.00001
info string 2h7h  : 0.00070
info string 2h6h  : 0.00078
info string 2h5h  : 0.00049
info string 2h4h  : 0.00001
info string 2h3h  : 0.00003
info string 2h1h  : 0.00000
info string 5i6h  : 0.00103
info string 5i5h  : 0.00111
info string 5i4h  : 0.00005
bestmove 7g7f
などと出れば成功です。少なくともdlshogiが動きます。
####batファイルをshにする
windowsのbatファイルをubuntuのshファイルに変更します。
第一行目の@echo offを#!bin/shと書き換え、拡張子をbatからshに変更します。
####モデルのディレクトリを変更する
上記と同じですがpydlshogiplayerのpolicy_player.pyのモデルのweightsの格納ディレクトリを指定し直します。
平岡サイトのままだと以下に変更します。

```py
self.modelfile = r'../model/model_policy'
```
####エンジン登録
これでエンジン登録して遊べると思います。
![Screenshot from 2019-10-20 19-08-19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/233744/92f53a7a-bddb-2e8c-4fbd-391512fcce6d.png)
なお、実は他のエンジンは登録できていません。
実行速度はWindowsのものと変わりません。サクサク動きます。
###まとめ
・将棋所をjetson_nanoで動かしてみた
・将棋AIのdlshogiで遊んでみた

・棋譜を保存して強化学習をしてみようと思う