Streamlitを使ったアプリ開発と外部公開まで

2025-07-19 01:24

最近、データフレームをGUIで見れるようにしたいと思ってChatGPTに尋ねたところ、「Streamlit」というフレームワークを使うことで簡単に実装できると回答がありました。

 

「本当か...?」と思いつつもやってみたところ本当に簡単にできたので、備忘がてら記事を作成しようと思います。

 

目的:競馬の機械学習の結果をGUIでWebから確認できるようにしたい。

実際のページ:競馬データ分析

 

進めるうえでの注意事項等

・上みたいな感じで「https://サイト名」みたいな感じで公開したい場合はドメインを購入する必要があるので最低800円くらいはかかります。

・作者はDjangoと同居させるために、思いつきでやっている箇所が多々あります。

・セキュリティ面はセキュリティグループにすべて担保させているので、脆弱な個所があるかもしれないです。

・できる限り安くやることにこだわったので、ドメイン以外は基本的にお金がかからない想定です。

(↓実際にかかった料金は一か月サーバ起動させっぱなしでこんな感じです)

・以上を踏まえて、実装は自己責任でお願いします。

 

作り方のざっくりした流れ

・サーバを立てる。

・必要な権限を付与したIAMロールを作成してサーバにアタッチする。

・外部からアクセス可能な状態にする。(EIPを付与して、セキュリティグループを変更する。)

・pythonと関連機能をインストールする。

・(必要に応じて)名前解決を設定する。

・(必要に応じて)証明書を設定する。(無料にしたかったので、Let's encryptをcronで実行する形式で実装)

・(必要に応じて)リバースプロキシをインストールし、アプリ機能と連携させる。(リバースプロキシはnginx、連携機能はgunicornを使用)

・アプリを作成する。

・データをアップロードする機能を作成する。

完成!!(なはず)

 

とりあえず、自分は上記の流れさえ覚えていれば何とかなるので備忘としてはここまでにします。

気が向いたら、個別の箇所を追記か、新しい記事を作っていこうと思います。