はじめに|Streamlitってなに?なにがすごいの?
「Pythonで作ったスクリプトをそのままWebアプリにできたらなぁ…」
そんなこと、思ったことありませんか?
実はそれ、**Streamlit(ストリームリット)**を使えばあっという間に実現できるんです!
Streamlitは、PythonだけでWebアプリを簡単に作れるフレームワークです。HTMLやJavaScriptといったフロントエンドの知識がなくても大丈夫。Pythonのコードをそのまま使って、グラフや表、フォーム付きのアプリまで作れちゃいます。
しかも、無料でネット公開までできちゃうんです。
たとえばこんな人におすすめです:
- Jupyter Notebookの延長でWebアプリを作ってみたい
- 自分の作った分析ツールを友達や同僚に使ってもらいたい
- データ入力フォームや計算アプリを作って業務を効率化したい
この記事では、そんなStreamlitの使い方を初心者向けにわかりやすく解説します。
インストールから、基本のUI、そして実際にネット公開するところまで、手を動かしながら学べるように構成しているので、ぜひ一緒に試してみてください!
1. Streamlitの魅力とは?|なぜ人気なのか
Streamlitがここまで注目されている理由は、とにかく**「簡単で早い」**ことに尽きます。
でもそれだけじゃないんです。ここでは、初心者にこそ知ってほしいStreamlitの魅力を紹介します。
🧑💻 1. PythonだけでWebアプリが作れる!
通常、Webアプリを作ろうと思うと、HTML・CSS・JavaScriptなど、いろんな技術を覚える必要があります。
でもStreamlitなら、Pythonコードを書くだけでWeb画面が完成します。
たとえばこのコード一行だけで、画面に大きなタイトルが表示されます👇
import streamlit as st
st.title("こんにちは、Streamlit!")
これだけでOK!余計な設定やテンプレートは不要です。
⚡ 2. コードを保存すればすぐ反映|リアルタイム更新!
コードをちょっと書き換えたら、すぐにアプリも変わってくれたら便利ですよね?
Streamlitはリアルタイムでコードの変更が反映されるので、試行錯誤がサクサク進みます。
streamlit run app.py
このコマンドでアプリを起動すれば、あとはブラウザを開いたままコードを直すだけ。自動でアプリがリロードされます。
📊 3. データ分析に強い!グラフや表が得意
Streamlitはもともとデータ分析のために設計されたフレームワークです。
そのため、PandasのデータフレームやMatplotlibのグラフも、ほんの数行でWeb上に表示できます。
import pandas as pd
st.dataframe(pd.read_csv("data.csv"))
グラフ表示もこんなに簡単👇
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
ax.plot([1, 2, 3], [4, 6, 2])
st.pyplot(fig)
データサイエンス系のツールと非常に相性がいいのが特徴です。
🌍 4. 無料で世界に公開できる!
せっかく作ったアプリ、他の人にも使ってもらいたいですよね?
Streamlitなら、GitHubにアップするだけで無料でネット公開できます。
「Streamlit Community Cloud」という公式サービスがあり、わずか数クリックでデプロイが完了。サーバー構築も不要です。
🔧 5. サイドバーやフォーム、マルチページまで対応!
シンプルなUIだけでなく、以下のような本格的なアプリ構成にも対応しています。
- サイドバー(
st.sidebar) - フォーム(
st.form()) - 入力チェック
- ページの分割(
pages/ディレクトリ)
ちょっとした業務ツールや分析アプリを自作したいときにもぴったりなんです。
2. Streamlitのインストールと基本の使い方
では早速、Streamlitを使ってみましょう!
ここでは、インストール方法から最初のアプリの作成・実行までをステップバイステップで解説します。
🔧 Step1:Streamlitをインストールしよう
まずは、Streamlitを自分のPCにインストールします。
Pythonがすでにインストールされていれば、以下のコマンドでOKです。
pip install streamlit
※エラーが出る場合は、python -m pip install streamlitを試してください。
対応バージョンは Python 3.7以上 です。
📝 Step2:アプリのPythonファイルを作成しよう
次に、Streamlit用のPythonファイルを1つ作成します。
ファイル名はなんでもいいですが、ここでは app.py にしておきましょう。
# app.py
import streamlit as st
st.title("こんにちは、Streamlit!")
st.write("これは最初のWebアプリです!")
このように、普段のPythonコードに st.〇〇() の関数を追加するだけで、WebアプリのUIが作れてしまいます。
🚀 Step3:アプリを起動してみよう
ターミナル(またはコマンドプロンプト)で、次のコマンドを実行してください。
streamlit run app.py
すると、自動的にブラウザが立ち上がり、アプリが表示されます。
※ブラウザが開かない場合は、http://localhost:8501 にアクセスしてみてください。
🔁 コードを修正→即反映!
Streamlitはリアルタイム更新に対応しています。app.py を保存するたびに、ブラウザが自動で更新されるので、「書いて・見て・直す」が超スムーズに行えます。
💡 補足:エラーが出たら?
起動中にエラーが出た場合は、ターミナルに表示されたメッセージを確認してみましょう。
よくあるのは以下のようなものです:
| エラー内容 | 原因と対処 |
|---|---|
ModuleNotFoundError: No module named 'streamlit' | → pip install を忘れている場合があります。再度 pip install streamlit を実行しましょう。 |
OSError: [Errno 98] Address already in use | → すでにStreamlitアプリが起動中か、ポートがかぶっている可能性があります。別のターミナルで確認し、不要なプロセスを終了しましょう。 |

ここまでできれば、**「StreamlitでWebアプリが作れるようになった」**状態です!
次は、実際に使えるUIコンポーネントを紹介していきます👇
3. よく使うUIコンポーネントの紹介とサンプル
Streamlitのすごいところは、ほんの数行のコードで豊富なUIパーツを使えるところ。
しかも、Pythonのコードを書くだけでOKです。
ここでは、よく使う基本的なコンポーネント(ウィジェット)を実際のコード例つきで紹介していきます。
📝 テキストを表示する
Streamlitでは、見出しやテキストも簡単に表示できます。
st.title("タイトルです")
st.header("これはヘッダーです")
st.subheader("これはサブヘッダーです")
st.text("これは普通のテキストです")
st.markdown("**Markdown**にも対応しています!")
💡 st.write() はなんでも表示できる万能関数なので、迷ったらこれを使うのがオススメ!
📊 表やデータを表示する
Pandasのデータフレームやリストもすぐに画面に出せます。
import pandas as pd
df = pd.DataFrame({
"名前": ["田中", "佐藤", "鈴木"],
"年齢": [25, 30, 22]
})
st.write(df) # 自動的に表にしてくれる
st.dataframe(df) # スクロール可能な表(インタラクティブ)
st.table(df) # 静的な表(固定表示)
🎨 画像や動画を表示する
画像や動画も1行で表示可能です。
st.image("sample.png", caption="サンプル画像", use_column_width=True)
st.video("https://www.youtube.com/watch?v=xxxxxxx")
🧑🔧 入力ウィジェットを使う
フォームやインタラクティブなツールを作るなら、これらの入力系コンポーネントが便利です👇
name = st.text_input("名前を入力してください")
age = st.slider("年齢を選んでください", 0, 100, 25)
color = st.color_picker("好きな色を選んでください")
他にもたくさんあります:
| コンポーネント | 説明 |
|---|---|
st.button() | ボタンを表示 |
st.checkbox() | チェックボックス |
st.radio() | ラジオボタン |
st.selectbox() | ドロップダウンから1つ選択 |
st.multiselect() | ドロップダウンから複数選択 |
st.file_uploader() | ファイルアップロード |
st.date_input() | 日付の選択 |
📦 サイドバーを使ってUIを整理
サイドバーは st.sidebar.〇〇 を使えば、メイン画面とは別にウィジェットを配置できます。
option = st.sidebar.selectbox("メニューを選択", ["ホーム", "設定", "ヘルプ"])
👈 サイドバーを使うと、メイン画面がスッキリして見やすくなります!
🔁 処理中のスピナー表示
時間のかかる処理のときは、st.spinner() を使えば読み込み中の表示も可能です。
import time
with st.spinner("処理中..."):
time.sleep(2)
st.success("完了しました!")

ここまでが、Streamlitでよく使われる基本のコンポーネントたちです。
4. Webアプリをデプロイするには?|無料でネット公開!
せっかく作ったStreamlitアプリ、自分だけじゃなく他の人にも使ってもらいたい!
そんなときは、Streamlit Community Cloudを使えば、無料で世界中に公開できます。
GitHubと連携して簡単にデプロイできるので、難しいサーバー設定も必要なし。ここでは、そのやり方をステップ形式で紹介します。
🧰 事前準備:GitHubアカウントを用意しよう
Streamlit Cloudで公開するには、まずGitHubアカウントが必要です。まだ持っていない場合は、以下のリンクから無料登録できます。
🗂 Step1:アプリファイルをGitHubにアップロード
- GitHubで新しいリポジトリ(例:
streamlit-app)を作成 - ローカルで以下のファイルを用意
app.py(またはmain.pyなど、アプリ本体)requirements.txt(必要なライブラリの一覧)
requirements.txt はこんな感じで作ります👇
streamlit
pandas
matplotlib
- Gitでリポジトリにプッシュ(初心者はGitHub DesktopでもOK)
🌐 Step2:Streamlit Cloudでアプリを公開!
- Streamlit Community Cloud にアクセス
- GitHubアカウントでサインイン
- 「New app」をクリックし、リポジトリを選択
- 実行したいPythonファイル(例:
app.py)を選んで「Deploy」!
これだけで、あなたのアプリがネット上で公開されます✨
📎 公開されたURLを共有しよう!
デプロイが完了すると、https://〇〇.streamlit.appのようなURLが自動発行されます。
このURLを友達や同僚に送れば、誰でもあなたのアプリを使えるようになります!
✅ URLは「非公開」にも設定可能なので、社内だけで使いたいケースにも対応できます。
💼 補足:Snowflakeなど高度なデプロイも可能
もっと本格的に運用したい場合は、以下の選択肢もあります。
- Snowflake Streamlit:セキュリティ・ユーザー管理・CI/CD対応
- Heroku / Render / AWS:カスタマイズ性の高いクラウド環境
- 社内サーバーに直接設置:自社内のネットワークで閉じて使いたいとき
ただし初心者ならまずはStreamlit Cloud一択でOKです!
5. さらに進んだ使い方|複数ページ・レイアウト・セッション管理
Streamlitは、シンプルなUIだけじゃなく本格的なWebアプリっぽい機能も簡単に実現できます。
この章では、「もっと便利に」「もっときれいに」使うための応用テクニックを紹介します。
📄 複数ページ構成にするには?
Streamlitでは、1つのアプリ内に複数ページを作ることができます。しかもとても簡単!
✅ やり方
app.pyとは別に、pages/フォルダを作成- その中に Python ファイルを入れる(例:
pages/page1.py、pages/page2.py)
すると、サイドバーにページ切り替えメニューが自動で表示されます!
🔁 ページは自動で読み込まれるので、ルーティングの設定などは不要です。
🧱 レイアウトを整えるには?|カラムやタブを使おう
📌 カラムで横並びに表示
複数のUIを横並びにしたいときは、st.columns() を使います。
col1, col2 = st.columns(2)
with col1:
st.write("左側のカラム")
with col2:
st.write("右側のカラム")
📌 タブ切り替えもできる!
Streamlit v1.10以降では、st.tabs() を使えばタブでコンテンツを切り替えることもできます。
tab1, tab2 = st.tabs(["グラフ", "表"])
with tab1:
st.line_chart(...)
with tab2:
st.dataframe(...)
💾 セッション状態を管理する|st.session_stateの活用
通常、Streamlitはブラウザを更新するたびに状態がリセットされます。
でも、st.session_state を使えば、データや入力値をアプリ内で保持できます。
例:カウンターを作る
if "count" not in st.session_state:
st.session_state.count = 0
if st.button("カウントアップ"):
st.session_state.count += 1
st.write(f"現在のカウント: {st.session_state.count}")
🧠 フォーム送信やログイン情報の管理などにも使えます!
📋 フォームでまとめて送信
複数の入力欄があって、ボタンを押したときに一括で処理したいときは、フォーム構文が便利です。
with st.form("my_form"):
name = st.text_input("名前を入力")
age = st.slider("年齢", 0, 100)
submitted = st.form_submit_button("送信")
if submitted:
st.write(f"{name} さんは {age} 歳です")
✅ 通常のst.text_input()などは毎回即反映されますが、フォームを使うと「まとめて送信」ができます。
6. 注意点とよくあるトラブル
Streamlitはとても便利ですが、いくつか知っておくべき注意点や、初心者がつまずきやすいポイントもあります。
ここでは、よくあるトラブルとその対処法をまとめました。
🔄 ブラウザをリロードすると状態がリセットされる?
Streamlitでは、ページを再読み込みするとすべての入力や変数が初期化されます。
たとえば、スライダーの値やカウントの状態なども元に戻ってしまいます。
✅ 対策:st.session_state を使う
状態を保持したいときは、セッション情報を管理できる st.session_state を活用しましょう。
if "name" not in st.session_state:
st.session_state.name = ""
name = st.text_input("名前を入力", value=st.session_state.name)
st.session_state.name = name
🐛 実行エラーが出る! → エラーメッセージをよく読もう
Streamlitでは、エラーが出るとアプリ画面の下に赤文字で表示されます。
内容をよく読んで、どの行で何が原因かをチェックしてみましょう。
| エラーメッセージ例 | 原因と対処法 |
|---|---|
ModuleNotFoundError | ライブラリが入っていない → pip install ライブラリ名 |
TypeError | 関数に渡す引数の型が間違っている |
OSError: Address already in use | 他のアプリが同じポートで動いている → 先に終了させるか、ポート番号を変える |
📂 ファイルアップロードがうまくいかない?
Streamlitの st.file_uploader() は、アップロードされたファイルをメモリ上で一時的に扱います。
✅ よくある注意点
- ファイルサイズが大きすぎると読み込みに失敗する
file.read()はバイト形式で返るので、テキストとして読む場合は.decode()が必要
uploaded_file = st.file_uploader("ファイルを選択")
if uploaded_file is not None:
content = uploaded_file.read().decode("utf-8")
st.write(content)
🐢 表示が遅い・重い
大きなデータや複雑なグラフを扱うと、アプリの動作が重くなることがあります。
✅ 対処法
- 表示するデータを必要最小限に絞る
- 毎回同じ処理は
@st.cache_dataでキャッシュする - 外部ファイルの読み込みは必要なときだけ行う
@st.cache_data
def load_data():
return pd.read_csv("big_data.csv")
📦 バージョンアップで動かなくなる?
Streamlitは活発に開発が続けられているため、バージョンアップで仕様変更があることも。
過去に動いていたコードが突然動かなくなることもあります。
✅ 対策
requirements.txtにバージョンを固定して記載しておく
例:streamlit==1.32.0- 公式ドキュメントやリリースノートを定期的にチェック

これらのポイントをおさえておけば、Streamlitでの開発がグッと快適になります!
7. まとめ|StreamlitでWebアプリ開発はここまで簡単!
ここまで読んでくださってありがとうございます!
今回紹介した Streamlit は、まさに「Pythonで最も手軽にWebアプリが作れる魔法のツール」です。
✅ この記事で学んだこと
- インストールからアプリ作成までわずか数分!
- グラフや表、フォームなど、豊富なUIをPythonだけで実装できる
- 作ったアプリはStreamlit Cloudで無料公開が可能
st.columns()やst.session_stateなどで本格的なアプリ構成にも対応- よくあるトラブルや注意点も事前に知っておけば安心!
Streamlitを使えば、アイデア次第でいろんなアプリが作れます。
たとえば…
- 📊 データを見せる可視化ダッシュボード
- 💬 チャット型のツールやフォームアプリ
- 🧮 業務の自動化ツールや計算アプリ
- 🔮 機械学習モデルのWeb化・デモ展示ページ
などなど、Pythonが少し書けるだけで、**あなたの作ったツールが「誰かの役に立つアプリ」**に変わります!

まずは、自分用のちょっとしたアプリを作って、身近な人に「これ便利だよ!」って見せてみましょう😊
きっと、新しい開発の楽しさが広がっていくはずです!
あわせて読みたい
Streamlitに関連するおすすめ記事をピックアップしました。データ処理やWeb公開の知識をさらに深めたい方におすすめです。
- 🔗 Pythonで仮想通貨の価格をリアルタイム取得&グラフ表示する方法【Coincheck API】
→ 外部APIとStreamlitを組み合わせれば、リアルタイムで動く価格表示アプリも簡単! - 🔗 Pythonで家計簿アプリを作ろう!初心者でもできるおこづかい帳の作り方
→ GUIアプリとWebアプリの違いを理解するのにピッタリな比較記事。 - 🔗 PythonとExcelで家計診断ツールを作ってみよう|グラフで支出が丸わかり!
→ Streamlitで作ったアプリにCSVやExcel出力を加えるヒントにも。 - 🔗 scikit-learnで機械学習モデルを構築する方法|
→ 機械学習の可視化ツールとしてStreamlitを活用する場合に必読!
よくある質問(Q&A)
- QStreamlitは無料で使えますか?
- A
はい、ローカルでの開発も、Streamlit Community Cloudでの公開も基本無料です。
- QHTMLやCSS、JavaScriptの知識は必要ですか?
- A
基本的なアプリなら不要です。Pythonだけで完結します。
- Q複数人で開発できますか?
- A
GitHubを使えば、複数人で共同開発することができます。バージョン管理もできて安心です。







※当サイトはアフィリエイト広告を利用しています。リンクを経由して商品を購入された場合、当サイトに報酬が発生することがあります。
※本記事に記載しているAmazon商品情報(価格、在庫状況、割引、配送条件など)は、執筆時点のAmazon.co.jp上の情報に基づいています。
最新の価格・在庫・配送条件などの詳細は、Amazonの商品ページをご確認ください。