
イーオンズ・エンドの自動サプライ構成ツールをStreamlitに公開するまで
しばらく休止していたボードゲーム会を2年前に再開したのは「イーオンズ・エンド」を多くの方と遊びたかったのがきっかけの一つでした。
ありがたいことにイーオンズ・エンドは日本での人気が高いようで、昨年12月に基本セットの拡張である「深層」、「名無きもの」と、独立拡張セット「終わりなき戦い」の拡張である「虚空」が一気に日本語化されました。(なぜOuter Darkだけ出なかったのでしょうか)
さらに2024/2/22に新たな独立拡張セットである「新たな時代」が発売されることになりました。
今年から新たに参加する予定のボードゲーム会で、イーオンズ・エンドを遊べる機会が増えそうなので、以前に作成したイーオンズエンドのサプライを自動生成するアプリを最新版に更新したいと思います。以前に作成したツールは以下のマガジンにまとめています。
1.Webアプリにする
データベースに新たなカードを追加するだけでも良いのですが、今回はついでにWebアプリにしたいと思います。
以前まではAndroid端末にPythonプログラムが動く環境を作って動かしていましたが、かなり強引なのでWebアクセスできる端末であれば使えるよう少し進化させたいと思います。
WebアプリはStreamlit Cloudで動くようにします。Stremlit Cloudは容量制限はありますが、今回のような簡単なPythonで書いたプログラムをWebアプリとして無料で公開できる非常に便利な環境です。
Webアプリを公開するためには、Streamlitのアカウントと連携するGithubのアカウントが必要です。Pythonプログラムを自身のGithubリポジトリにコミットし、そのURLをStreamlit Cloudで指定しますと公開できます。詳細はGithubリポジトリに記載しています。
今回はどのように公開までの設定を進めたかを紹介していきます。
2.GUIをStreamlitに変える
いままではPythonの標準GUIであるTkinterで画面を作っていました。これをStreamlitに変えていきます。
数年前まではStreamlitのドキュメントに目を通すかGoogleで検索するところから始めていました。しかし最近はChatGPTがありますので、従来のTkinterで書かれたPythonコードをChatGPTに読み込ませ、StreamlitのGUIに置き換えてもらいます。
ChatGPTが変換したPythonプログラムが、そのまま思った通りに動けば変換終了です。動かなかったときに始めてドキュメントをみればよいと思います。
なおChatGPTに入力するプロンプトのコツは、Pythonコードをいきなり貼り付けるのではなく、前提条件を与えると正確性が一気に上がります。今回はまず以下を入力してから、以前に作成したPythonコードを貼り付けました。その結果、ほぼ機能を損なうことなく変換できていることが確認できました。
Pythonのコードを解析し、Tkinterで書かれたGUIをStreamlitに変更してください。その際にTkinter固有の処理を削除してください。
Webアプリとして公開する前にパソコンで動作確認するときにはVisual Studio Codeにlaunch.jsonを設定して環境を設定する必要があります。「streamlit vscode launch.json」でGoogle検索いただくと記事が多くありますのでそちらを参照してください。
3.Streamlitで運用開始するまでの手順
3-1.前提
すでに以下は設定している前提で進めたいと思います。特にGithubについては、自身が話せるレベルでないため割愛させてください。
Streamlitのアカウントを作っている
Githubのアカウントを作っている
StreamlitからGithubと連携している
ご自身のGithubのリポジトリに必要なファイルがコミットされている
今回設定したGithubのリポジトリは先ほど紹介したリンク先を参照ください。配置されているファイルは以下の3ファイルです。
Aeons_end.db:カードの情報が入ったデータベース
main.py:サプライの自動選択から画面表示までを行うPythonコード
requirement.txt:Webアプリとして動かすために必要なPythonライブラリの指定
PCであればAeons_end.dbとmain.pyがあれば動きますが、Streamlitで動かす場合にはrequirement.txtにPythonコード内で使っているライブラリで後から導入したものを指定する必要があります。今回のPythonコードであとから導入したライブラリはstreamlitとpandasですので、これを書いておきます。
3-2.Streamlitに登録する
それではStreamlit Cloudに登録したいと思います。Streamlitでサインインしてください。「New app」を押してご自身のGithubのリポジトリを登録します。

Repositoryには連携したGithubのリポジトリが表示されますので、アップロードしたいリポジトリを選択します。Main file pathに実行したいPythonコードのファイル名を指定します。ファイル名はmain.pyである必要はありません。残りの場所は特に変更せずに「Deploy!」を押して数分待てばWebアプリの完成です。

今回は以前に作成した自動サプライ構成機能はそのままに、データベースをに拡張セットを含め、Webアプリとして動かすまでを紹介しました。今後登場するカードのデータベースへの追加はもちろんのこと、使っていく中で必要なオプションが出てくるかもしれませんので、その際にはGithubのレポジトリにも反映していきたいと思います。