0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

PythonだけでWebアプリ?Streamlitを使ってみた

0
Last updated at Posted at 2026-03-21

はじめに

今回Udemyのコースを受講し、はじめてPythonのフレームワークである「Streamlit」を使用しました。Steamlitは、HTMLやCSSが不要で、簡単にWebアプリを構築できるのが特徴で、
ライブラリをインポートするだけで、表やグラフ、画像の表示やレイアウト調整を簡単に行うことができました。

ドキュメント

Udemyコース
爆速で5つのPython Webアプリを開発(作成者: 今西航平)

Streamlitのインストール

開発環境

・OS:Ubuntu(開発環境)、Windows(動作確認)
・言語:Python 3.12.3

# 仮想環境を作るための機能をインストール
sudo apt install python3-venv -y

# 仮想環境を作る
 python3 -m venv venv

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

仮想環境(venv)に入らないといけないみたい

# 仮想環境に入る
 source venv/bin/activate

image.png

# PythonファイルをWebアプリとして起動
 streamlit run main.py

# ブラウザで開くURL
 http://localhost:8501

image.png

ローカル環境が立ち上がりました。
image.png

なぜ仮想環境を作るのか?

Pythonでは、同一環境にインストールされたライブラリは共有されるため、別プロジェクトで異なるバージョンをインストールすると、既存プロジェクトの動作に影響を与える可能性があるとのこと。

venvを利用することで、プロジェクトごとに独立した実行環境を構築でき、ライブラリのバージョン競合を防ぐことができるため、仮想環境を作る必要性があります。

ふわふわコード
↓AIと一緒に開発するときのワークフローや、
解決策、コマンド一覧など非常に分かりやすい記事でした。

その他参照

今回作成したコード

書いてみて驚いたのですが、UIを個別に設計することなく、簡単にWebアプリとして表示でき、その手軽さにとても使いやすさを感じました。

main.py
import streamlit as st
import numpy as np
import pandas as pd
from PIL import Image
import time


st.title('Streamlit 超入門')

# 表・テーブル表示
st.write('DataFrame')
df = pd.DataFrame({
  '1列目':[1, 2, 3, 4],
  '2列目':[10, 20, 30, 40]
})

st.table(df.style.highlight_max(axis=0))

# 折れ線グラフ表示
df = pd.DataFrame(
  np.random.rand(20,3),
  columns=['a', 'b', 'c']
)

st.line_chart(df)

# 画像表示
st.write('Display Image')
if st.checkbox('Show Image'):
  img = Image.open('sample.png')
  st.image(img, caption='aa',width="stretch")

# インタラクティブなウィジェット
option = st.selectbox(
  'あなたが好きな数字を教えてください',
  list(range(1,11))
)
'あなたの好きな数字は、', option , 'です。'

st.write('interactive Widgets')

text = st.text_input('あなたのシュミを教えてください')
'あなたの趣味は、', text , 'です。'

condition = st.slider('あなたの今の調子は?', 0, 100 ,50)
'コンディション:', condition

# レイアウトを整える
left_column, right_column = st.columns(2)
button = left_column.button('みぎからむを表示する')
if button:
  right_column.write('右カラム')

expander = st.expander('問い合わせ')
expander.write('問い合わせを開いてるよ')

# プログレスバーの表示
st.write('プログレスバーの表示')
'Start!'

latest_iteration = st.empty()
bar = st.progress(0)

for i in range(100):
  latest_iteration.text(f'Iteration {i+1}')
  bar.progress(i+1)
  time.sleep(0.1)

まとめ

今回初めてStreamlitを使ってみて、Pythonだけで簡単にWebアプリが作れることに驚きました。UIを自分で設計しなくても、データ表示やグラフ、入力フォームなどがすぐに実装できて、とても使いやすいと感じました。今後はもう少し機能を増やして、実際に使えるアプリも作ってみたいと思います。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?