Back
Featured image of post Streamlitの備忘録

Streamlitの備忘録

PythonのWebフレームワークの一つであるStreamlitを触ってみたので基本事項をまとめました。

Pythonで有名なWebフレームワーク

Webアプリを作成する時、一般的にはWebフレームワークを使用します。WebフレームワークはWebアプリ開発において、使用頻度の高い機能・処理をあらかじめまとめておき、簡単に使いまわしできるようにすることで、比較的簡単に開発をすることが可能になります。

Webフレームワークは大きく2つに大別できます。(細かくはもっと分けられる)

  • フルスタックフレームワーク
  • マイクロフレームワーク

Pythonにおける代表的なフレームワークとしては以下があります。

Python Web Framework
Python Web Framework

自身がやりたいことにもっとも合致するものをチョイスすると良いでしょう。

今回紹介するStreamlitはフロントエンド側(HTML,、CSSなど)の実装不要で、すべてPythonコードのみで完結させることのできるフレームワークです。
機械学習やデータ解析で分析した結果を素早く可視化し、公開するなどの用途に最適です。Webアプリが一般的に持っている基本的機能を数行のコードで実装できます。

今回は本当に基本的な機能のみをまとめますが、Streamlitの公式サイトには数多くのサンプルが用意されています。Galleryなどはソースコード付きで画面のデモを参照できるので非常に参考になると思います。

Streamlitのインストール

インストールは非常にシンプルです。

$ python -m venv ./venv
$ source venv/bin/activate

$ pip install streamlit
$ streamlit --version
$ streamlit hello      # サンプルアプリが起動します

基本機能の確認

基本的な使い方はStreamlitのAPIリファレンスが参考になります。

今回はGitHub上に作成したサンプルをアップしました。

https://github.com/yuu999/streamlit-first-app

また、作成したサンプルをStreamlit Sharingにデプロイしてあります。

https://share.streamlit.io/yuu999/streamlit-first-app/app.py

マルチページなアプリ作成の基本

マルチページにする方法を紹介します。
サイドバーから項目を選択することで、選択された機能に画面遷移するためには以下のように記述することで実現可能です。

import streamlit as st

def main():
    st.title('Multi Page')
    selected_box = st.sidebar.selectbox(
    'Choose one of the following',
    ('Welcome','Image Processing', 'Face Detection', 'Feature Detection')
    )
  
    if selected_box == 'Welcome':
        welcome() 
    if selected_box == 'Image Processing':
        photo()
    if selected_box == 'Face Detection':
        face_detection()
    if selected_box == 'Feature Detection':
        feature_detection()

def welcome():
    st.subheader('WLCOME')

def photo():
    st.subheader('PHOTO')

def face_detection():
    st.subheader('FACE DETECTION')

def feature_detection():
    st.subheader('FEATURE DETECTION')

if __name__ == "__main__":
    main()

セレクトボックスで任意の項目を選択することでページ遷移できます。

Selection Sample
Selection Sample

最後に

Streamlitに関して、少し触ったので備忘録としてまとめました。本当に簡単にアプリを実装できて感動しました!
かなりざっくりまとめたので、定期的に更新をかけるかもしれません。

参考URL

comments powered by Disqus
yuu999
Built with Hugo
Theme Stack designed by Jimmy