フォロワーさんにオセロAIの世界一がいるようです。
ついに!オセロAI世界一です!!!世界一のオセロAIの作者とお呼びください!!! pic.twitter.com/OPLqAj3vgn
— にゃにゃん@オセロAI世界一 (@Nyanyan_Cube) 2021年11月21日
そしてその世界一のリポジトリがあるようです。
面白そうだったのでDockerfileを作ってプルリクを送りました。そしたらなんと即マージされました!
これで私も世界一オセロAIのコントリビューターですね(?)
この記事では、Dockerに移植する上でのFlaskの注意点みたいなところを備忘録として書きます。なお、この記事の環境はubuntu20上のユーザグループ追加済みのdockerを使います。
Dockerのsudoなし実行のための環境構築は以下の記事を参考にしてください。
Egaroucid 4 とは
世界一のオセロAI「Egaroucid 4」とは、「にゃにゃん」こと山名琢翔氏が作成したオセロAIです。
彼は、スピードキューバー兼メイカーの大学生で、ものづくりを始めたら2週間程度で一般工学大学生が1年かけて完成させるクオリティの作品を完成させてしまういわゆる「超人」です。最近は技育展で最優秀賞をとったりAIやウェブサービスも極められているらしい。ん????。
残念ながら公開されているプロフィールだけで記事1本分の分量に到達してしまいます…詳細はTwitterやGitHubなどの情報を見てください。
近いうちにオセロAIの作り方についても情報を公開されるそうです。楽しみですね!
ちなみに、私は以前にレベル-1についての記事を書いてます!私のアクセス解析においても結構人気な記事です。
Dockerに移植!しかしページが見つからない…
以前、元リポジトリをそのまんまDockerで動かしただけでは動かないことがあり、それでちょっと苦戦してました。
rclsharkに関してFlaskのページ作成練習に関連リポジトリを使っていたのですが、これでずっと悩んでいました。
結局、引数を設定したらちゃんと動きました。
before
... if __name__ == '__main__': print('start python', flush=True) app.run(threaded=True)
after
... if __name__ == '__main__': print('start python', flush=True) app.run(host ='0.0.0.0', port = 5000, threaded=True) # hostとportを引数に追加
インストール
Dockerの環境構築さえ終わっていればとても簡単です。環境構築が終わったら、そのリポジトリを削除してもDockerイメージが残っているので何度も呼び出して遊べますね!(Webの方ものぞきに行きましょう!)
git clone https://github.com/Nyanyan/Egaroucid4.git docker build --no-cache -t egaroucid4 Egaroucid4/ docker run --rm -it -p 5000:5000 egaroucid4 python3 app.py
つぎのようなログが出現します。
# 以下、ログが表示 =========================== * Serving Flask app 'app' (lazy loading) * Environment: production WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. * Debug mode: off 0.222996 * Running on all addresses. WARNING: This is a development server. Do not use it in a production deployment. * Running on http://172.17.0.2:5000/ (Press CTRL+C to quit)
chromeやfirefoxなどでhttp://172.17.0.2:5000/
にアクセスします。リロードはF5
ボタンで、終了はコマンドプロンプト上でCtrl+c
でOK。
ちゃんと操作できる。
レベル指定できない上にレスポンスが遅いときがあるので、おそらくめっちゃ強いのでしょう。
でも私は負けない!
…あれ?