概要
pythonを学びだした人向けに、書いたコードや作成したwebアプリを公開するサービスを探していたところ、簡単にデプロイできるStreamlitというサービスを発見しました!
Streamlit
Pythonでデータアプリやダッシュボードを簡単に作成できるフレームワーク。Web開発の知識がなくても、Pythonのスクリプトだけでインタラクティブなアプリケーションを作れるとのこと
検証
1.ライブラリをインストール(事前にvenvでpythonの仮想環境を作成しています)
$ pip install streamlit
2.コード書く
import streamlit as st
import random
# クリックしたときのメソッド
def generate_face():
santa_hat = [
" * ",
" ### ",
" ##### ",
"####### ",
" ===== "
]
eyes = ["^_^", "o_o", "O_O", "T_T", ">_<", "-_-", "°_°"]
mouths = ["_", ".", "o", "ω", "Д", "皿", "∀"]
arms = ["", "\\", "/", "ヽ", "ノ"]
eye = random.choice(eyes)
mouth = random.choice(mouths)
left_arm = random.choice(arms)
right_arm = random.choice(arms)
# 顔文字を組み立て
face = f"{left_arm}({eye[0]}{mouth}{eye[-1]}){right_arm}"
return "\n".join(santa_hat + [face])
st.title("顔文字生成")
# ボタンを押したときの挙動
if st.button("冬仕様"):
face = generate_face()
st.code(face)
3.ローカル実行で動作確認
$ streamlit run app.py
Local URL: http://localhost:8501
Network URL: http://xxx.xx.x.x
簡単ではありますが、デプロイする用のアプリの動作確認はできました。
ではデプロイしてみましょう。
デプロイ
1.streamlitの以下のURLよりアカウントを作成する必要があります。
https://streamlit.io/
2.github側にもアカウントを作成し書いたコードをpushしておく必要があります
※githubのアカウント作成方法やpush方法はここでは割愛します。
3.streamlitのサイトからDeploying? Tryのリンクがあるのでクリックする
4.サインインするとsettingsからgithubのアカウント連携を求められるので画面の操作に従って連携します
5.以下画像のdeploynowを選択し、前述で書いたコードのレポジトリを選択します
6.deployボタンを押下
数十秒後にデプロイが完了しいかにデプロイされました
なんと1時間かからずデプロイできちゃいました。
感覚としてはpythonでSPAのようなアプリ作成ができそうな感じです
streamlitのライブラリでボタン以外のコントロールやこのサービス上で
sqlliteもつかえるとのことなので、簡単なデータ保持とかもできそうですね。
書いたコードをWeb上で試したいとかの用途には使えそうなのでぜひお試しください。。

