はじめてのStreamlit: Pythonで簡単Webアプリ開発の手引き

Python

はじめに

Streamlitとは

Streamlit(ストリームリット)は、Pythonでデータ分析や機械学習などのアプリケーションを簡単かつ迅速にWebアプリケーションとして公開することができるフレームワークです。コードを書いていくだけで、ブラウザで見ることができるWebアプリケーションを簡単に作成することができます。

本記事の目的

本記事では、初めてStreamlitを利用する方でも、手軽にWebアプリケーションを作成することができるように、Streamlitの基本的な使い方や、データの表示方法・操作方法について解説します。初心者の方でも分かりやすく、実際にサンプルコードを書きながら、一緒に学んでいきましょう。

Streamlitのインストール方法

pipを使ったインストール方法の解説

Streamlitは、pipコマンドを使って簡単にインストールすることができます。

pip install streamlit

上記コマンドを実行すると、必要なライブラリとともにStreamlitがインストールされます。

インストールが完了したら、以下のコマンドを実行して、Streamlitを起動することができます。

streamlit run [ファイル名].py

このコマンドを実行すると、Webアプリケーションが起動されます。デフォルトでは、Webブラウザが自動的に起動して、Webアプリケーションが表示されます。終了するには、Ctrl + C を押してください。

以上が、pipを使ってStreamlitをインストールする方法です。

Streamlitの基本的な使い方

サンプルコードを実行してみる

まずは、簡単なサンプルコードを実行してみましょう。以下のコードは、Streamlitのデフォルトのサンプルコードです。

import streamlit as st

st.title('Streamlit Sample')

st.write('DataFrame')
st.dataframe({
    'col1': [1, 2, 3],
    'col2': [10, 20, 30],
})

このコードを、streamlit_sample.pyという名前で保存し、ターミナルで以下のコマンドを実行します。

streamlit run streamlit_sample.py

すると、ブラウザが起動し、以下のようなWebアプリケーションが表示されます。

ファイルの構成や命名規則について解説する

StreamlitでWebアプリケーションを作成する場合、以下のようなファイル構成が一般的です。

project/
  ├─ app.py
  ├─ requirements.txt
  └─ data/
      ├─ input/
      └─ output/

app.pyは、Webアプリケーションのコードを記述するファイルです。このファイル名は、任意のものにすることができますが、app.pyという名前にすることが多いです。

requirements.txtには、使用しているライブラリを記述します。

data/は、Webアプリケーションで使用するデータを保存するディレクトリです。input/には、Webアプリケーションで使用するデータを保存し、output/には、Webアプリケーションで生成されたデータを保存します。

ファイルの命名規則は、以下のようになっています。

  • app.py: Webアプリケーションのコードを記述するファイル
  • requirements.txt: 使用しているライブラリを記述するファイル
  • data/input/: Webアプリケーションで使用するデータを保存するディレクトリ
  • data/output/: Webアプリケーションで生成されたデータを保存するディレクトリ

以上が、Streamlitの基本的な使い方についての解説です。次のセクションでは、データの表示方法や操作方法について解説します。

Streamlitの基本的な使い方

コマンドライン引数を使ってアプリケーションを起動する

Streamlitでは、コマンドライン引数を使ってアプリケーションを起動することができます。コマンドライン引数を使うことで、Webアプリケーションの動作をカスタマイズすることができます。

例えば、以下のように--server.portオプションを指定することで、ポート番号を指定することができます。

streamlit run app.py --server.port 8080

また、--server.addressオプションを指定することで、WebアプリケーションのIPアドレスを指定することができます。

streamlit run app.py --server.address 0.0.0.0

このように、コマンドライン引数を使って、Streamlitの動作をカスタマイズすることができます。

Streamlitでのデータの表示方法

表の表示方法

Streamlitでは、表を簡単に表示することができます。pandasライブラリで読み込んだデータを、st.dataframe()メソッドを使って表示することができます。以下は、pandasライブラリで読み込んだデータを表形式で表示する例です。

import pandas as pd
import streamlit as st

# データを読み込む
df = pd.read_csv('data.csv')

# データを表形式で表示する
st.dataframe(df)

このように、st.dataframe()メソッドを使って、簡単に表を表示することができます。また、st.table()メソッドを使うことでも、表を表示することができます。ただし、st.table()メソッドは、データが大きい場合には使わない方が良いです。

グラフの表示方法

Streamlitでは、様々な種類のグラフを表示することができます。matplotlibseabornなどのライブラリで作成したグラフを、st.pyplot()メソッドを使って表示することができます。以下は、matplotlibライブラリで作成したグラフを表示する例です。

import matplotlib.pyplot as plt
import numpy as np
import streamlit as st

# データを生成する
x = np.linspace(0, 10, 100)
y = np.sin(x)

# グラフを作成する
fig, ax = plt.subplots()
ax.plot(x, y)

# グラフを表示する
st.pyplot(fig)

# グラフをファイルに保存する
fig.savefig("img.jpg")

このように、st.pyplot()メソッドを使って、簡単にグラフを表示することができます。他にも、altairbokehといったライブラリを使ったグラフの表示も可能です。

画像の表示方法

Streamlitでは、画像を簡単に表示することができます。Pillowライブラリなどで読み込んだ画像を、st.image()メソッドを使って表示することができます。以下は、Pillowライブラリで読み込んだ画像を表示する例です。

from PIL import Image
import streamlit as st

# 画像を読み込む
img = Image.open('image.jpg')

# 画像を表示する
st.image(img, caption='Example image', use_column_width=True)

このように、st.image()メソッドを使って、簡単に画像を表示することができます。また、use_column_widthオプションをTrueにすることで、画像の幅を自動的に調整することもできます。

Streamlitでのデータの操作方法

フォームの作成方法

Streamlitでは、st.form()メソッドを使って、簡単にフォームを作成することができます。以下は、フォームを作成する例です。

import streamlit as st

# フォームを作成する
with st.form(key='my_form'):
    name = st.text_input('名前')
    age = st.number_input('年齢')
    submit_button = st.form_submit_button(label='送信')

# フォームが送信された場合の処理
if submit_button:
    st.write(f'{name}さんは{age}歳です。')

このように、st.form()メソッドを使って、簡単にフォームを作成することができます。

ドロップダウンメニューの作成方法

Streamlitでは、st.selectbox()メソッドを使って、簡単にドロップダウンメニューを作成することができます。以下は、ドロップダウンメニューを作成する例です。

import streamlit as st

# ドロップダウンメニューを作成する
options = ['りんご', 'ばなな', 'みかん']
selected_option = st.selectbox('選択してください', options)

# 選択されたオプションを表示する
st.write(f'選択されたオプションは{selected_option}です。')

このように、st.selectbox()メソッドを使って、簡単にドロップダウンメニューを作成することができます。

おわりに

本記事では、Streamlitを用いた簡単なWebアプリケーションの作成方法について解説しました。

これらの内容を抑えることで、初めてのWebアプリケーション開発においても、簡単かつスムーズに開発を進めることができるようになると思います。

ステップアップしたい方、次はChatGPTのAPIを利用したWebアプリケーションを実装してみはいかがでしょうか?

本記事の参考文献

コメント

タイトルとURLをコピーしました