Python

Streamlitの使い方を解説!Pythonで簡単にWebアプリを作ってみよう!

streamlit
記事内に商品プロモーションを含む場合があります
ウマたん
ウマたん
当サイト【スタビジ】の本記事では、Streamlitの使い方を解説していきます!StreamlitはPythonで実装されたオープンソースのWebアプリケーションのフレームワーク!直感的で簡単にWebアプリを開発できます!

こんにちは!スタビジ編集部です!

今回は「Streamlit」の使い方について解説していきます。

Streamlitを使うことで簡単にWebアプリを開発出来て、データサイエンスの分野でもよく利用されるのでマスターしましょう!

Streamlit(ストリームリット)とは

まずは「Streamlit(ストリームリット)」について簡単に見ていきましょう。

StreamlitとはPythonで実装されたオープンソースのWebアプリケーションのフレームワークです。

PythonのWebアプリケーションのフレームワークというと「Django」や「Flask」などがあり、その仲間になります。

Streamlitは以下の特徴があります。

・Pythonのみで実装可能
・コードが直感的でわかりやすい
・バックエンド開発の知識が必要なく、学習コストが低い
・Streamlit Cloudを利用して開発したアプリを公開可能

Streamlitの最大の特徴はPythonのコード数行でアプリを開発できる”手軽さ”になります。

そのため、データサイエンスの分野でデータ分析結果を共有したい場合やWebUIを作成して動くかどうかすぐ確認したい場合によく利用されます。

ただ、開発の柔軟性は低いため、複雑なWebアプリを開発したい場合は「Django」や「Flask」を検討してみて下さい。

ウマたん
ウマたん
StreamlitはPythonで簡単にWebアプリを開発できるフレームワーク!

データサイエンスや機械学習の分野でよく使われるんだね!

DjangoやFlaskの機能比較については以下の記事を参考にしてみて下さい。

Flask Django
Flask vs Django!PythonのWebアプリケーションフレームワークを徹底比較!当サイト【スタビジ】の本記事では、PythonのWebアプリケーションフレームワークである「Flask」と「Django」の違いを徹底的に比較していきます!なんとなーく分かっているようで分からない2つのフレームワークの違いをこの機会にしっかりおさえておきましょう!...

Streamlitの使い方

Streamlitの使い方」を見ていきます。

どうやってStreamlitを使ってアプリをデプロイできるか確認していきましょう。

サンプルアプリをデプロイする

まずはStreamlitをインストールしてアプリを実行してみます。

Streamlitをローカル環境にインストールします。

# streamlitをインストール
pip install streamlit

次にサンプルのhelloアプリを実行してみましょう。

streamlit hello

以下のような実行結果が表示されてブラウザ上でアプリが自動で立ち上がります。(E-mailアドレスを聞かれる場合がありますが、何も入力せずEnterで問題ないです。)

Welcome to Streamlit. Check out our demo in your browser.

Local URL: http://localhost:8501
Network URL: http://192.168.1.5:8501

Ready to create your own Python apps super quickly?
Head over to https://docs.streamlit.io

May you create awesome apps!

streamlit

Webブラウザに自動で表示されない場合にはブラウザで「localhost:8501」と入力してみて下さい。

また、サーバーを停止したい場合はターミナル上で「Ctrl + c」で停止できます。

このようにStreamlitではコマンド一つで簡単にWebサーバーが立ち上げることが出来ます。

ウマたん
ウマたん
Streamlitは公式ページにインストール手順も載っているので、困ったら参考にしてみよう!

簡単なWebアプリを作ってみる

次は自分でWebアプリを作って動かしてみましょう。

以下の内容で、app.pyというファイルを作成します。

import streamlit as st
st.write("Hello World!")

app.pyを実行してみると同じように「localhost:8501」で結果を確認できます。

streamlit run app.py
streamlit

streamlitではwebアプリを開発するために様々なウェジットが用意されています。

以下にウェジットを使った例を表示します。

import streamlit as st

#ヘッダー表示
st.header("streamlitテストアプリ")
#タイトル表示
st.title("Webアプリ開発中")
#テキスト表示
st.write("生活用アプリ")

#スライダー(デフォルトでは0~100)
st.title("スライダー")
weight = st.slider("今日の体重は")
st.write("今の体重は" + str(weight) +"kgです")

#ボタン
st.title("今日の天気は")
st.button("リセット", type="primary")
if st.button("晴れ?"):
    st.write("今日も元気に!")
else:
    st.write("傘を忘れずに")

#テキスト入力
st.title("やること")
st.text_input("今やること", key="do")
st.session_state.do #keyでアクセス

#チェックボックス
st.title("ごみ捨てチェック")
is_agree = st.checkbox("ごみ捨てた?")
if is_agree:
    st.write("お疲れ様!")
else:
    st.write("忘れずに!")

サーバーを起動した状態でもapp.pyを編集・保存すると、編集した内容をすぐに画面に表示できます。(画面の更新は必要です)

streamlit

実際に触ってみると簡単にWebアプリが作れることを実感できると思います。

このウェジットに関数や条件式を組み合わせることで、より高度なことも実装できるのでいろいろ試してみて下さい!

ウマたん
ウマたん
Streamlitのウェジットを使うと簡単にWebアプリを開発できるね!今回紹介した以外にもいろんな種類があるから試してみよう!

データを表示してみる

Streamlitは開発が簡単でデータの可視化にも優れているので、データサイエンスの分野でよく利用されています。

そこで、表の作成やデータの可視化についても見ていきましょう。

以下にサンプルを記載します。

import streamlit as st
import numpy as np
import pandas as pd

df = pd.DataFrame(np.random.randint(0, 100, (20,5)), columns=("国語", "数学", "理科", "社会", "英語"))

#表の表示
##サイドバーを活用
st.sidebar.title("テストの結果")
st.sidebar.dataframe(df) 

#棒グラフ
st.title("国語の成績")
st.bar_chart(df["国語"])

#折れ線グラフ
st.title("数学")
st.line_chart(df["数学"])

#散布図
df["合計"]=df["国語"]+df["数学"]+df["英語"]+df["理科"]+df["社会"]
st.title("理科と数学の関係")
st.scatter_chart(df, x = "理科", y = "数学", size="合計")

#Mapに散布図を表示
st.title("東京駅付近に散布図")
mapdf = pd.DataFrame(
    # 東京駅付近
    np.random.rand(50, 2)/[50, 50]  + [35.68, 139.76],
    # latitude 緯度 longitude 経度
    columns=['lat', 'lon']
)

st.map(mapdf)

StreamlitとPandasを組み合わせることで表やデータの可視化が可能になります。

Pandasについては以下の記事を参考にしてください。

pandas
【入門者向け】PythonのPandasの使い方について簡単にまとめておく!当サイト【スタビジ】の本記事では、Pythonで頻繁に使われるPandasについて簡単にまとめておきたいと思います!データの読み込みや前処理や集計、可視化などによくつかわれるPandasについてしっかりおさえておきましょう!また最後にはPandasを含めたPythonの基礎文法の勉強方法についてまとめておきますよ!...

実行結果が以下になります。

streamlit streamlit

この他にもStreamlitでは様々な機能が用意されているのでぜひ試してみて下さい。

ウマたん
ウマたん
データを可視化した結果もWebアプリ上で簡単に表示できるね!

StreamlitのWebアプリを公開する

Streamlitで作成したWebアプリをインターネット上に公開していきましょう。

Webアプリを公開する方法は多くありますが、今回は「Streamlit Cloud」を使った方法を見ていきます。

Streamlit Cloudとは

Streamlit Cloud」はStreamlitで開発したWebアプリを公開し、共有できるサービスです。

自身のGithubリポジトリにあるコードをStreamlit Cloudと連携することで簡単にアプリケーションをデプロイすることができます。

Streamlit CloudでWebアプリを公開する手順は以下の通りです。

  1. Streamlit Cloudにアカウントを登録する
  2. Streamlit CloudにGithubアカウントでログインする
  3. Githubアカウントを接続する
  4. Githubのリポジトリからアプリをデプロイする

Streamlit Cloudの事前準備

Webアプリを公開する前に①~③の事前準備が必要になります。

Streamlit CloudではGithubのアカウントが必要なので用意しておきましょう。

画面の指示に従って必要な情報を入力していく形で、Gituhubアカウントとの接続が出来るとにアプリをデプロイするワークスペースの画面が表示されます。

streamlit

公式ページにもガイドがあるので参考にしてみて下さい。

ウマたん
ウマたん
最初にStreamlit CloudとGithubを連携させることが必要!

Gitについては以下の記事にまとめているので、Gitについて知りたい方はチェックしてみて下さい。

Git 勉強
【入門】Gitの基本や勉強方法についてまとめておく!当サイト【スタビジ】の本記事では、Gitの基本と勉強方法についてまとめていきます!Gitはコードやドキュメントのバージョンを管理する上で非常に重要なツールです。Gitについて理解しておくことで開発効率が大きく変わるのでぜひおさえておきましょう!...

Streamlit CloudにWebアプリをデプロイ

事前準備が出来たら、GithubのリポジトリからStreamlit CloudでWebアプリをデプロイして公開していきます。

自身のGithubリポジトリに必要なファイルをプッシュします。

streamlit

「requirements.txt」ではGithub Cloudがアプリをデプロイするために必要なライブラリをインストールするための依存関係を定義します。

streamlit

Streamlit Cloudではライブラリの依存関係の変更を検知して自動でアプリを再起動してしまうので、Streamlitなどのライブラリのバージョンを固定することを推奨しています。

Githubリポジトリの準備が完了したら、Streamlit Cloudで「New App」ボタンからアプリをデプロイしていきます。

streamlit

リポジトリやブランチ名、アプリのファイル名を入力して「Deploy!」ボタンを押すとStream Cloud上でアプリが立ち上がります。(10分程度時間がかかります)

また右下の「Manage app」タブを開くと、アプリログを見ることが出来ます。エラーが発生した場合はこのログを元に原因を調査していきましょう。

streamlit

デプロイが完了すると、ローカル環境と同じアプリが立ち上がっていることが確認できます。

streamlit

スマホなど別の端末からURLをたたいて、アプリに接続できることを確認してみて下さい。

ウマたん
ウマたん
たった数回の作業でアプリを公開できるなんてすごいね!

他にもWebアプリの公開方法として「ngrok」を使ったもあります。

以下の記事で詳しく解説しているので、参考にしてみて下さい。

ngrok
ngrokの使い方解説!Pythonで作ったアプリを外部公開してみよう!当サイト【スタビジ】の本記事では、ngrokの使い方を解説していきます!ngrokを使うとローカル環境で作成したWebアプリをグローバルに公開できる便利ツールです!ぜひ使い方をマスターしていきましょう!...

Streamlit Cloudの注意点

Streamlit Cloudの無料版には以下の「注意点」があるので押さえておきましょう。

・アプリのメモリは1GB
・プライベートアプリは1つまで
・パブリックアプリは無制限
・7日間アクセスがないとアプリは自動でスリープモードになる

ウマたん
ウマたん
Streamlit Cloudに制約があることに注意!特にパブリックアプリは誰でもアプリだけでなくリポジトリも見ることが出来ることを意識しておこう!

アプリのメモリは1GB

一つのアプリのメモリは1GBまでなので、処理の多いアプリやアクセス数が多いアプリを公開することは難しいです。

有料版は現在(2023年12月)商用利用のみなので、個人で利用する際はメモリ制限に注意しましょう。

DBや処理演算は別のクラウドサービスを利用するのも一つの手になります。

アプリの公開

アプリの公開にはURLを知っていればだれでもアクセスが出来る”パブリックアプリ“と指定したユーザーしかアクセスできない”プライベートアプリ“があります。

接続するGithubリポジトリがプライベートリポジトリの場合、デプロイするアプリはプライベートアプリとなり、リポジトリの開発者権限がないとアプリにアクセス出来ないようになります。

また、アプリの”Settings”で公開範囲を指定したメールアドレスに設定することでプライベートアプリになります。

streamlit

ただ、このプライベートアプリはアカウントで一つしか作成できないので、開発中のテストとして利用してみて下さい。

7日間アクセスがないアプリはスリープモードに

7日間連続でアクセスがないとスリープモードになります。

スリープモードの際は表示される「Yes, get this app back up!」ボタンをクリックして、アプリの再実行が必要になります。

Streamlit 使い方 まとめ

Streamlit」の使い方について見ていきました。

最後にStreamlitの特徴をおさらいすると以下になります。

・Pythonのみで実装可能
・コードが直感的でわかりやすい
・バックエンド開発の知識が必要なく、学習コストが低い
・Streamlit Cloudを利用して開発したアプリを公開可能

見てきた通り、数行単位のコードの組み合わせで簡単にWebアプリを構築することが出来て、データサイエンスの分野でよく利用されています。

また作成したWebアプリの公開も簡単に出来るので、ぜひ実際に触ってみていろんなアプリを作成してみて下さい。

Pythonやデータサイエンスに興味がある方は、当メディアが運営する教育サービス「スタアカ(スタビジアカデミー)」の講座をチェックしてみてください。

AIデータサイエンス特化スクール「スタアカ」

スタアカトップ
【価格】ライトプラン:980円/月
プレミアムプラン:98,000円
【オススメ度】
【サポート体制】
【受講形式】オンライン形式
【学習範囲】データサイエンスを網羅的に学ぶ
実践的なビジネスフレームワークを学ぶ
SQLとPythonを組み合わせて実データを使った様々なワークを行う
マーケティングの実行プラン策定
マーケティングとデータ分析の掛け合わせで集客マネタイズ

データサイエンティストとしての自分の経験をふまえてエッセンスを詰め込んだのがこちらのスタビジアカデミー、略して「スタアカ」!!

24時間以内の質問対応と現役データサイエンティストによる複数回のメンタリングを実施します!

カリキュラム自体は、他のスクールと比較して圧倒的に良い自信があるのでぜひ受講してみてください!

他のスクールのカリキュラムはPythonでの機械学習実装だけに焦点が当たっているものが多く、実務に即した内容になっていないものが多いです。

そんな課題感に対して、実務で使うことの多いSQLや機械学習のビジネス導入プロセスの理解なども合わせて学べるボリューム満点のコースになっています!

Pythonが初めての人でも学べるようなカリキュラムしておりますので是非チェックしてみてください!

ウォルマートのデータを使って商品の予測分析をしたり、実務で使うことの多いGoogleプロダクトのBigQueryを使って投球分析をしたり、データサイエンティストに必要なビジネス・マーケティングの基礎を学んでマーケティングプランを作ってもらったり・Webサイト構築してデータ基盤構築してWebマーケ×データ分析実践してもらったりする盛りだくさんの内容になってます!

・BigQuery上でSQL、Google Colab上でPythonを使い野球の投球分析
・世界最大手小売企業のウォルマートの実データを用いた需要予測
・ビジネス・マーケティングの基礎を学んで実際の企業を題材にしたマーケティングプランの策定
・Webサイト構築してデータ基盤構築してWebマーケ×データ分析実践して稼ぐ

スタビジアカデミーでデータサイエンスをさらに深く学ぼう!

スタアカサービスバナースタビジのコンテンツをさらに深堀りしたコンテンツが動画と一緒に学べるスクールです。

プレミアムプランでは私がマンツーマンで伴走させていただきます!ご受講お待ちしております!

スタビジアカデミーはこちら