#TL;DR
公式のデプロイドキュメントに色々載っているのでその通りにやりましょう
やったこと
- streamlitのお触り
- streamlit on docker
- Herokuへのデプロイ
Streamlitとは
pythonだけで簡単にアプリケーションを作れるフレームワーク。フロントエンドの知識なくてもオッケー。
インタラクティブな機能はもちろん、matplotlib、plotly、bokehなど一通り可視化ツールのサポートをしてるので、可視化結果を見せるのが非常に楽。
※Dashとかも似たようなものらしいですが、Streamlitはより単純に、素早く書けるのがメリットのようです。その分柔軟性は低い?とか(比較検証はしてません)
できたもの
NBAのスタッツ(2018~19)とサラリー(2019~2020)を可視化。
こんな感じで見れる。
アプリはここにあります
https://demo-lit-app.herokuapp.com/
コードはこっち
https://github.com/iusami/demo-streamlit-heroku
未解決の話
- cache機能があるのでそれで
plot
部分を高速化できないかなと思ったが、エラーが出て上手く動作しなかった。- ページの遷移を行うために
_SessionState
を使ってるので単純にはキャッシュできないっぽい。
- ページの遷移を行うために
- データをコンテナに込めてしまっているが、ほんとはどこかからダウンロードするようにしたい。(データサーバを用意するのがめんどくさかった。)
今後やってみたいこと
- 機械学習使ったインタラクティブなアプリを作れそう。パラメータ変更、学習、推論までおそらく全部実装できる。