やっぱりアプリだとめんどくさい

これまで、Python+Kivyで作った人狼GM用アプリですが、モバイルアプリ化してしまうと以下の観点で敷居が高く、要するにえめんどくさいと感じています。

  • アプリの修正と更新
  • 様々な環境での利用(パソコン、タブレット、スマホ)
  • 公開(せっかくなので一般的に公開したい)

そこで、現在の資源を利用しつつ、Webアプリ化してブラウザで利用できるようにし、公開することで自分でも色々な環境で使いやすくすることを検討してみました。

現在使っている自作の人狼GM用アプリ

主に対面人狼を意識していますが、Zoom人狼でも使えます。

共通して占い師のお告げ先を自動で決められるので楽ですし、Zoom人狼用には配役も自動で決められるようになっているので重宝しています。

あとは日々の処刑先や占い先や襲撃先などを登録していく中で、一般的なルール上、選べない人は候補に表示されないようになっていますし、進行の過程が見れるようになっているので状況を管理しやすいし、スクショを取っておけば履歴も残せます(履歴を残すところまでは作り込めてない)。

UIとか色のセンスがなくて、これ以上の発展が望めない状況ですが、そのあたりもWeb化する過程でブラッシュアップしたいところ。

Geminiに相談

Web化するにあたり、まずはGeminiに相談。

今どきは何をやるにしてもまずはAIに相談ということで、プライベートで愛用しているGemini(無課金)に相談してみると以下の手順を提案してくれました。

ステップ1:UIとロジックを分離する

Kivyのコードの中に、人狼のルール(役職のリスト、配布の計算など)が直接書き込まれていませんか?まずはそれを別ファイル(例:logic.py)に切り出します。

  • 今の状態: Kivyのボタンを押すと、その関数内で直接計算してラベルを書き換える。
  • 理想の状態: logic.py に「役職を割り振る関数」などを作り、KivyからもWebからもその関数を呼び出すようにする。

こうすることで、「中身の脳みそ(Python)」は変えずに、「ガワ(Web)」だけを差し替えることができます。

ステップ2:Webフレームワークを選ぶ(Fletがおすすめ)

Kivyを使っていた方には、Flet(フレット) というフレームワークが最も馴染みやすいはずです。

  • なぜFletか?:
    • Kivyに近い感覚: ボタンやテキストを「ウィジェット(コントロール)」として配置するスタイルがKivyと似ています。
    • HTML/CSSが不要: 本来Web制作に必要な知識がなくても、PythonだけでリッチなWebアプリが作れます。
    • Webもスマホも対応: 1つのコードでWebサイトとして公開でき、将来的にスマホアプリに戻すのも簡単です。

ステップ3:Webアプリとして実装・公開する

具体的な進め方のロードマップです。

  1. FletでUIを組む:
    • pip install flet で導入。
    • Kivyで作った「プレイヤー名入力」「役職表示」などの画面をFletのパーツで再現します。
  2. Webアプリとして動かす:
    • flet run --web main.py と打つだけで、ブラウザでアプリが立ち上がります。
  3. 世界に公開する:
    • RenderRailway というサービスを使えば、無料でWeb上にアプリを公開(デプロイ)できます。URLをSNSに貼れば、友達がすぐにブラウザで人狼GMツールを使えるようになります。

とりあえずFletをインストールしてみる

最近は色々なフレームワークや公開の仕方があるもんですね。

AWSに課金してサーバー管理とかしないといけないのかと思ってたけど(エンタープライズ目線)、そんな大層なアプリじゃないし手軽に公開することができそう。

言われたことはまずやってみようということで、fletをインストールしてみました。

pip install flet

本日はここまで。