Python初心者でもできる!Streamlitで簡単Webアプリ開発入門

プログラミング
記事内に広告が含まれています。
スポンサーリンク

はじめに

「PythonでWebアプリを作る」と聞くと、ちょっと難しそうに感じるかもしれません。サーバーを立ち上げたり、HTMLやCSS、JavaScriptといった別の言語も覚えなきゃいけないのでは?と思ってしまいますよね。

でも大丈夫です。Pythonをすでに触ったことがある方なら、**Streamlit(ストリームリット)**というライブラリを使えば、驚くほど簡単にWebアプリを作ることができます。

Streamlitは、もともとデータサイエンティストや機械学習エンジニア向けに開発されたツールですが、実はPythonでスクリプトを書く感覚でWebアプリが作れてしまうという、初心者にとっても優しいライブラリなんです。

このブログ記事では、以下のような方を対象に、Streamlitの基本からシンプルなアプリ作成までをわかりやすく解説していきます。

brian
brian

PythonでWebアプリを作ってみたい方に!Streamlitを使えば、簡単なコードでインタラクティブなアプリがすぐに作れます。初心者でも安心して始められる内容なので、ぜひチェックしてみてください!

この記事はこんな方におすすめです

  • Pythonは少し触ったことがあるけど、Web開発は未経験
  • ちょっとしたツールやデータビジュアライゼーションを作ってみたい
  • FlaskやDjangoよりも手軽にWebアプリを作りたい
  • Streamlitという名前は聞いたことがあるけど、何ができるのか知りたい

記事のゴール

この記事を最後まで読めば、以下のようなスキルが身につきます。

  • Streamlitの基本的な使い方がわかる
  • シンプルなWebアプリを自分で作れるようになる
  • 作ったアプリを他の人と共有する方法がわかる

コードを書く部分も多く紹介するので、実際に手を動かしながら読み進めてみてください。
きっと、Webアプリ開発がぐっと身近に感じられるはずです。

スポンサーリンク

Streamlitとは何か?

PythonでWebアプリを作るとなると、FlaskやDjangoといったフレームワークがよく挙げられます。ただ、それらはHTMLやルーティングの知識が必要だったり、ちょっと敷居が高いと感じる方も多いはず。

そんな中で、「もっと簡単に」「Pythonだけで」Webアプリを作れるように設計されたのが Streamlit です。

Streamlitの特徴

Streamlitの最大の魅力は、PythonのスクリプトだけでWebアプリを作れるという点です。以下に主な特徴をまとめます。

シンプルなコード構成

Streamlitでは、st.title() や st.write() など、直感的な関数を使ってUIを構築できます。HTMLやCSSの知識は不要です。

インタラクティブなUIがすぐ作れる

テキストボックスやボタン、スライダーなど、ユーザーが操作できるUIパーツも簡単に設置できます。しかも数行のコードでOK。

データサイエンスと相性抜群

pandasのDataFrame表示やmatplotlibによるグラフ描画など、データ分析でよく使うライブラリとの相性も良好。Jupyter Notebookに近い感覚で使えます。

自動リロードでスムーズな開発

コードを保存するたびに、アプリ画面が自動でリロードされるので、開発がとてもスムーズ。試行錯誤しながら作れます。

他のWebフレームワークとの違い

項目StreamlitFlaskDjango
開発の手軽さ◎ PythonだけでOK△ HTML/CSS必要△ 学習コスト高め
UIの実装◎ 組み込み関数○ テンプレート利用○ テンプレート利用
データ可視化との親和性◎ 高い○ 工夫が必要○ 工夫が必要
大規模アプリへの対応△ 小規模向き◎ 自由度高い◎ 機能が豊富

Streamlitは、どちらかというと「小規模なデータ可視化ツール」や「プロトタイプ開発」に向いています。大規模な業務システムなどにはFlaskやDjangoの方が適していますが、手軽にWebアプリを試してみたい人にとっては、Streamlitが最適解です。

Streamlitでできることの例

  • データ分析の可視化ダッシュボード
  • 簡易的なチャットアプリ
  • 画像やCSVのアップロードツール
  • AI/機械学習モデルのデモページ

このように、アイデア次第で幅広いアプリが作れるのがStreamlitの魅力です。

スポンサーリンク

Streamlitのインストールと基本の使い方

Streamlitを使い始めるのはとても簡単です。特別な開発環境を準備する必要もなく、Pythonがインストールされていれば、すぐにでも始められます。

必要な環境

Streamlitを使うためには、以下の環境が整っている必要があります。

  • Python 3.7以上
  • pip(Pythonのパッケージ管理ツール)

もし、まだPythonがインストールされていない場合は、公式サイトから最新版をダウンロード・インストールしてください。

Streamlitのインストール方法

インストールはとても簡単で、以下のコマンドをターミナル(またはコマンドプロンプト)で実行するだけです。

Bash
pip install streamlit

インストールが完了したら、バージョン確認をしておきましょう。

Bash
streamlit --version

これで、Streamlitの準備は完了です。

最初のStreamlitアプリを作ってみよう

それでは、さっそくStreamlitアプリを作ってみましょう。まずはPythonファイルを1つ用意します。

例として、app.py というファイル名で以下のコードを書いてみてください。

Python
import streamlit as st

st.title("はじめてのStreamlitアプリ")
st.write("こんにちは、Streamlitの世界へようこそ!")

このコードでは、st.title() でタイトルを表示し、st.write() でテキストを出力しています。たったこれだけで、Webアプリとして表示されるんです。

アプリを起動するには?

作成したファイルがあるディレクトリで、以下のコマンドを実行します。

Bash
streamlit run app.py

すると、ブラウザが自動で開き、アプリが表示されます。もし自動で開かない場合は、出力されたURL(通常は http://localhost:8501)をブラウザに貼り付けてアクセスしてください。

自動リロードでラクラク開発

Streamlitは、ファイルを保存するたびにアプリが自動的に更新されます。そのため、ブラウザをリロードする必要がなく、コードを書いてすぐに動作確認ができます。

よく使うStreamlitの基本関数

以下のような関数を覚えておくと、すぐにアプリが作れます。

関数説明
st.title("タイトル")ページの大きな見出しを表示
st.header("ヘッダー")セクションの見出しを表示
st.text("テキスト")通常のテキストを表示
st.write(データ)テキスト、数値、データフレームなどを柔軟に表示
st.button("ボタン名")ボタンを表示
st.slider("ラベル", 0, 100)スライダーを表示

このように、少しずつ関数を覚えながら、自分のアプリに組み込んでいくと、楽しく開発を進められます。

スポンサーリンク

実践!シンプルなWebアプリを作ってみよう

ここからは、実際にStreamlitを使ってシンプルなWebアプリを作ってみましょう。
今回は「好きな果物を選んで、メッセージを表示するアプリ」を例に、基本的なUIパーツの使い方や、ユーザーの入力に応じて処理を変える方法を紹介します。

アプリの概要

作成するアプリでは、以下の要素を実装します:

  • ユーザーが名前を入力するテキストボックス
  • 好きな果物を選ぶセレクトボックス
  • ボタンを押すと、入力内容に応じたメッセージを表示

コードを一緒に見ながら進めていきましょう。

コード全体

まずは全体のコードを掲載します。fruit_app.py という名前で保存してみてください。

Python
import streamlit as st

st.title("好きな果物を教えて!")

# ユーザー名の入力
name = st.text_input("あなたの名前を入力してください")

# 果物の選択
fruit = st.selectbox("好きな果物を選んでください", ["りんご", "バナナ", "みかん", "ぶどう"])

# ボタンを押したときの動作
if st.button("結果を表示"):
    if name:
        st.success(f"{name}さんは、{fruit}が好きなんですね!")
    else:
        st.warning("お名前を入力してください。")

コードの解説

テキストボックス:st.text_input()

Python
name = st.text_input("あなたの名前を入力してください")

この関数を使うと、ユーザーが自由に文字を入力できるようになります。ここでは「名前」を入力してもらいます。

セレクトボックス:st.selectbox()

Python
fruit = st.selectbox("好きな果物を選んでください", ["りんご", "バナナ", "みかん", "ぶどう"])

選択肢の中から1つだけ選ばせたいときに使うのが selectbox です。リストで選択肢を渡すだけなので簡単ですね。

ボタンと条件分岐

Python
if st.button("結果を表示"):
    if name:
        st.success(f"{name}さんは、{fruit}が好きなんですね!")
    else:
        st.warning("お名前を入力してください。")

st.button() は、クリックされたかどうかを判定できます。ここでは、名前が入力されているかどうかで表示を変えています。

実行してみよう

このコードを保存したら、以下のコマンドで実行してみましょう。

Bash
streamlit run fruit_app.py

ブラウザにアプリが表示されたら、自分の名前を入れて果物を選び、「結果を表示」ボタンを押してみてください。
きちんとメッセージが表示されれば成功です!

UIを組み合わせる楽しさ

Streamlitの面白さは、こうしたUIパーツを自由に組み合わせて、自分だけのアプリをどんどん作れるところにあります。フォーム、グラフ、画像など、組み合わせ方は自由自在です。

スポンサーリンク

Streamlitアプリの応用と便利な機能

ここまでで基本的なStreamlitアプリの作り方は理解できたと思います。
この章では、アプリをさらに便利に、効率的にするための応用機能をいくつか紹介していきます。

Streamlitには、実はまだまだ使える機能がたくさんあります。
ここでは代表的なものを厳選してご紹介します。

処理を高速化するキャッシュ機能(@st.cache_data)

アプリを作っていると、同じデータを何度も読み込んだり、重たい処理を何度も実行してしまうことがあります。
そんなときに便利なのが、キャッシュ機能です。

Python
import streamlit as st
import pandas as pd

@st.cache_data
def load_data():
    df = pd.read_csv("data.csv")
    return df

df = load_data()
st.write(df)

解説

  • @st.cache_data を使うことで、一度読み込んだデータは保存され、次回以降は即座に表示されます。
  • 特に外部ファイルの読み込みやAPI通信など、時間がかかる処理で大活躍します。

※以前のバージョンでは @st.cache でしたが、バージョン1.18以降は @st.cache_data や @st.cache_resource に分かれました。

ファイルアップロード機能

Streamlitでは、ユーザーからファイルを受け取ることも簡単です。

Python
uploaded_file = st.file_uploader("CSVファイルをアップロードしてください", type="csv")

if uploaded_file is not None:
    df = pd.read_csv(uploaded_file)
    st.write(df)

解説

  • この機能を使えば、ユーザーがアップロードしたCSVファイルを読み込んで表示する、といったことができます。
  • 応用すれば、Excelファイルや画像、テキストファイルにも対応可能です。

グラフや画像の表示

データを視覚的に見せたいときには、グラフや画像の表示も活用できます。

matplotlibでグラフを表示

Python
import matplotlib.pyplot as plt

fig, ax = plt.subplots()
ax.plot([1, 2, 3, 4], [10, 20, 25, 30])
st.pyplot(fig)

画像の表示

Python
from PIL import Image

img = Image.open("sample.jpg")
st.image(img, caption="サンプル画像", use_column_width=True)

サイドバーを使ってUIをすっきり整理

Streamlitでは、UIの一部を画面の左側「サイドバー」に表示することもできます。

Python
name = st.sidebar.text_input("名前を入力")
fruit = st.sidebar.selectbox("果物を選択", ["りんご", "バナナ", "ぶどう"])

サイドバーの活用例

  • 設定項目やフィルターをまとめておく
  • ユーザー入力を本体画面と分けて整理する

これにより、アプリ全体の見やすさ・使いやすさが格段に向上します。

スポンサーリンク

作ったアプリを公開しよう

せっかく作ったStreamlitアプリ、できれば他の人にも使ってもらいたいですよね。
この章では、作成したアプリを他の人と共有する方法や、インターネット上に公開する手順を紹介します。

ローカルネットワークで共有する方法

まずは、同じWi-Fi内の他のパソコンやスマホでアクセスできるようにする方法から。

起動コマンドを少し変更

Python
streamlit run app.py --server.address 0.0.0.0 --server.port 8501
  • --server.address 0.0.0.0:すべてのIPからアクセスできるようにする
  • --server.port:使用するポート番号(デフォルトは8501)

注意点

  • ファイアウォールやセキュリティソフトがブロックしているとアクセスできない場合があります。
  • 公開するのは自己責任で行い、個人情報や機密情報を扱う場合は避けましょう。

Streamlit Community Cloudで無料公開する

一番手軽で安全なのが、**Streamlit公式のクラウドサービス(旧名:Streamlit Sharing)**を使う方法です。
GitHubアカウントがあれば、誰でも無料で使えます。

公開の流れ

  1. GitHubにアプリのコードをアップロード
    app.py と必要なファイル(例:requirements.txt)をリポジトリに入れます。
  2. requirements.txt を準備する
    アプリで使うライブラリを記載したファイルを用意します。

例:

Nginx
streamlit
pandas
matplotlib
  1. Streamlit Cloud にアクセス
    GitHubアカウントでログインし、「New App」ボタンからリポジトリを選択してデプロイします。
  2. 数十秒でWebアプリが完成!
    公開用URLが発行され、誰でもアクセス可能になります。

メリット

  • 完全無料(2025年3月現在)
  • サーバー構築不要
  • 数クリックでデプロイ可能
  • アップデートもGitHubにpushするだけ

公開時の注意点

セキュリティ

  • アプリ内にAPIキーやパスワードをハードコードしないようにしましょう。
  • 機密データを扱うアプリは、社内ネットワークやVPSなどで限定公開にするのが安心です。

パフォーマンス

  • 無料プランでは、一定期間アクセスがないとスリープ状態になります(初回アクセスが少し遅くなる)。
  • キャッシュ機能(@st.cache_data)をうまく活用すると、快適に使えます。
スポンサーリンク

おわりに

ここまでお読みいただき、ありがとうございました!
この記事では、Python初心者の方でも手軽にWebアプリを作れるStreamlitの魅力と基本的な使い方を紹介してきました。

難しそうに感じていたWebアプリ開発も、Streamlitを使えばスクリプト感覚で始められることを、実感いただけたのではないでしょうか?

今回のまとめ

  • StreamlitはPythonだけで動く軽量なWebアプリフレームワーク
  • インストールも簡単、数行のコードでアプリが作れる
  • 入力フォームやグラフ表示など、便利な機能が豊富
  • Streamlit Cloudを使えば、作ったアプリをすぐにインターネット上に公開できる

特にデータ分析やちょっとしたツール開発、AIモデルのデモなど、**「ちょっと見せたい」「試したい」**を実現するのにピッタリなツールです。

次にやってみたいこと

Streamlitをもっと活用するために、以下のステップにチャレンジしてみるのもおすすめです:

  • CSVファイルを読み込んで、グラフ付きの分析ツールを作る
  • OpenAI APIなどを組み込んで、AIチャットボットを作ってみる
  • 外部APIを叩いて、天気予報アプリなどを作成する
  • ユーザー入力に応じて、機械学習モデルを動かすデモを作る

おすすめの学習リソース

実際に動画を見て勉強したい方には今回は特に以下の講座がオススメですよ!
以下のリンクからぜひ内容を確認してみてくださいね。

brian
brian

ここまで読んでいただきありがとうございます!

UdemyのPythonコースにはオンラインで学習ができる動画コンテンツがたくさんあります。

当ブログのような文章メインの説明では足りない箇所を補えると思うので、もっと詳しく勉強したいという方はぜひチェックしてみてください!

コメント

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