前回、Pythonを用いて、人対人のリバーシ対戦ゲームをつくった( https://qiita.com/tkoji3744/items/08b71054dfba4f93f2c4 )。
さらに、python用のWEBフレームワークFlaskをつかって、Pythonファイル(俳句SNS)をPythonanywhereにデプロイした(Flaskのファイルも既存でつくられていた)
( https://qiita.com/tkoji3744/items/2f605cef3348d650f7dd )
今回、自作した人対人のリバーシ対戦ゲームを、自作のpython用のWEBフレームワークBottleを用いてlocalhostに表示した。
「いちばんやさしいpython教本」(鈴木たかのり、インプレス)を参考にbottleでWEB表示してみた。
ディレクトリ構造例
プロジェクトフォルダは以下:
(Project) reversimmweb/
├── reversimm.py
├── reversimmweb.py
├── views/
│ └── index.tpl
├── static/
│ ├── app.js
│ └── style.css
プロンプト(またはVSC)でpython reversimmweb.py → http://localhost:8080 (httpSでない)でうまく表示できたのが上記である。
Bottleは、ルーチング、テンプレートができるが、データベータアクセス、セキュリティ機能(ユーザー管理など)ができない。その分、シンプルな構造で(ぼくのような)初心者でもわかりやすい。
既にリバーシ(人対人)のpythonスクリプトがあるので、それをChatGPTに提示し、いろいろ対話しながら作っていった。
途中、pycache フォルダはPythonの仕様上作成されるもので、そのままにしておいても問題ないという、(ぼくとしては)新しい知識が得られた。
ただ、今回、図形描写には、PythonのTkinkerはつかわずapp.js(JavaScript)やstyle.css(スタイルシート)がつかわれたので、できあがったものには、最初のリバーシ(人対人)のpythonスクリプトの痕跡はほとんどなくなってしまった。
作業そのもは、大きな問題もなく、2時間くらいで上記のものが完成したが、まさに独力ではありえない達成だった。
とはいえ、localhostに表示した(多くの書籍はここまでで説明はおわりである)後、このpython WEB アプリケーションをデプロイするのは、(あまりそう書かれてないが)かなり困難である(pythonの動くレンタルサーバーは多くないしその使い方はまた勉強いる、pythonanywhereでさえ、実はデプロイが実現しているのものが多くない)。
多くのpythonコードがJavaScriptで書き換えられているところからすると、最初からJavaScriptでつくったほうが今回のような単純なプロジェクトのデプロイにはあっていると思える。
ただ、もっと大がかりなプロジェクトについてはまた別の話ではあろうが。