この記事は タダの2年目 Advent Calendar 2023 の2日目の記事です。
n番煎じ甚だしいですが、streamlitをちょこちょこっと触ってみました!
Document
はじめに
とっとと使ってみましょう。ターミナルから以下実行するだけで、streamlitが立ち上がります。
$ pip install streamlit
$ streamlit hello
すごい...!
左側のサイドバーから、デモを選択し、そのコードを確認することができます。
例えば、DataFrame Demo をクリックすると、次のように表示され、ページ下部にはコードも記載されます。
コード部分
書いてみた
雑にベタ書きするだけで、動くものを作ることが可能です。
'''
Run Command: streamlit run ./article_streamlit/app_init.py
'''
import streamlit as st
import datetime
st.title('たいとる')
textbox=st.text_input('入力を受け付けられます', '')
st.write('自由にテキストかけますよ')
st.sidebar.title('サイドバーのタイトル')
if st.button('面白かったら いいね してください!'):
st.write('いいね ありがとう!')
ターミナルから以下実行すると、localhostで実行されます。
$ streamlit run ./app_init.py
じゃーん
用途
一般的な用途: PoCやモック作成
最終的なゴール例: streamlitを使う予定はないが、PoCとしてstreamlit上で検証を行う
→ ローカルでstreamlitを立てればOKです。
検証アイテムに応じてpythonコードを記載し、期待しているものがきちんと価値を生み出しそうか検証しましょう。以下実行して、期待値や認識を確認しPoCを進めれば、十分ワークするように感じました。
(これほどフロントエンドを考えずに、アイデアを形にできるのは本当にすごい...!)
社内ページ等の簡易的なwebページ
最終的なゴール例: streamlitを使って、webアプリを一般/限定公開する
→ どこでホストし、どのようにアクセスコントロールを行うかが重要になりそうな気がしています。あとお金。
- ホストの手段
Streamlit Community Cloud? EC2 (AWS) 等のインスタンスでホストする?→ 公開範囲で議論がきちんと進みそう
- アクセスコントロール (ログイン認証等必要か?)
FYI:
Streamlit in Snowflake
StreamlitでSnowflakeを語らないわけにはいかないでしょう! Streamlitの買収により、SnowflakeはIntegrated platformへまた一歩進んだ気がしています。
使用例はClassMethodさんが1番わかりやすい:
ただし、アプリ起動中にwarehouseのクレジットが継続して消費される点は注意しなくちゃいけないようです。
感想
- PoC目的としてのstreamlit: 最強
- 最終成果物のwebアプリとしてのstreamlit: なんだか中途半端
こんなイメージが1番いいのかなあと思いました。
- アイデアレベルでまずはフロントエンドの形をつくってみる
- 機能面も作り、ローカルでホストしてPoCを進める
- 機能のPoC完了後、実際に業務上利用するために、VPC内でホストして社内公開する
- きちんと価値を生み出せた場合、社内Webサイトの要件を固めて、きちんとWebアプリを作る (=streamlitを捨てる)
もちろん、上記step3で「十分うまくいくじゃん!わざわざアプリ作り直さなくてもいいよ!」となる気もするのですが、streamlit上でコンバージョンやユーザー動線を辿れないような気がしていて、最終的なゴールとしてのwebアプリのユースケースが想像つかなかったからです。
ただし、とにかく価値を早く生み出すという観点では、streamlitは本当にすごい存在だなと感じました。
これからstreamlitで色々遊んでいくのが楽しみです!