Streamlitとは?PythonだけでWebアプリが作れる!新人エンジニアのための爆速入門

こんにちは。ゆうせいです。

新人エンジニアの皆さん、Pythonでのデータ分析や機械学習のコード、書いていますか?

Jupyter Notebookやターミナルで結果が出ると嬉しいですよね。

でも、こんな風に思ったことはありませんか?

「この分析結果、上司や他のチームの人にも触ってもらいながら説明したいな…」

「せっかく作ったこのAIモデル、Webサイト上で誰でも試せるようにできたらカッコいい!」

そう思っても、いざ「Webアプリ開発」と聞くと、

「え、HTMLとかCSSとかJavaScriptとか、覚えることが多すぎ…」

「サーバー? フロントエンド? バックエンド? もう無理!」

と、尻込みしてしまうかもしれません。

分かります、その気持ち。学ぶことが多すぎて大変ですよね。

でも、もし「あなたが書いたPythonスクリプトを、ほぼそのままWebアプリに変身させてくれる魔法」があるとしたら、知りたくありませんか?

それを実現するのが、今回紹介する「Streamlit(ストリームリット)」なんです!


Streamlitって、そもそも何?

では、Streamlitとは一体何者なのでしょうか。

一言でいうと、「Pythonスクリプトを、一瞬でインタラクティブなWebアプリに変身させる魔法の杖」です。

ちょっと分かりにくいですかね?

では、あなたの書いたPythonコードを「レシピ」だと想像してみてください。

今までは、あなた(料理人)がキッチン(PC)でレシピ(コード)を実行し、「はい、できました」と料理(分析結果)をターミナルやノートブックに出していました。

でも、他の人にその料理(分析結果)を体験してもらうには、その人もキッチン(PC)に来て、同じレシピ(コード)を実行してもらう必要があり、ちょっと面倒でした。

ここでStreamlitの登場です。

Streamlitは、「あなたのレシピ(Pythonコード)を読み込んで、自動でピカピカのレストラン(Webアプリ)を建ててくれる執事」みたいなものです。

あなたは執事(Streamlit)に、Pythonの言葉で「ここにタイトルを」「ここにグラフを」「ここにボタンを置いて」と指示するだけ。

すると執事は、お客さん(ユーザー)がブラウザ(Chromeなど)でアクセスできる立派なレストラン(Webアプリ)を一瞬で開店してくれます。

HTMLやCSSといった「内装のデザイン知識」や、JavaScriptという「ウェイターの複雑な動き(動的な処理)」を、あなたが一切知らなくてもいいんです。

Pythonという「レシピの書き方」さえ知っていれば、誰でもWebアプリのオーナーになれてしまうんですよ!


なぜStreamlitがスゴイの? メリットを深掘り!

この「執事」がいかに優秀か、具体的なメリットを見ていきましょう。

メリット1: とにかく開発スピードが「爆速」

これが最大の魅力です。

普通のWebアプリ開発が「土地を買って、設計図を引いて、基礎工事から家を建てる」作業だとすれば、Streamlitは「高性能な組み立てキットで家を建てる」ようなものです。

Pythonの知識だけでOK。

HTMLやCSS、JavaScriptを新しく学ぶ必要は、(基本的には)ありません。

例えば、Webページにボタンを一つ置きたい時、Streamlitなら st.button('押してね') とPythonで1行書くだけ。

データ分析の「ついで」に、サクッとWebアプリが完成してしまいます。

メリット2: インタラクティブな操作が超簡単

Streamlitがすごいのは、ただ表示するだけじゃない点です。

「インタラクティブ」、つまり「ユーザーが触ると、それに反応して内容が変わる」アプリが簡単に作れます。

「インタラクティブ」というのは、例えば、ショッピングサイトで価格帯のスライダーを動かすと、表示される商品がリアルタイムで変わる、あんな感じの動作のことですね。

Streamlitには、そうした操作に必要な「部品(ウィジェットと言います)」が最初からたくさん用意されています。

  • st.slider (スライダー)
  • st.text_input (テキスト入力ボックス)
  • st.checkbox (チェックボックス)
  • st.file_uploader (ファイルアップロード機能)

これらをPythonで呼び出すだけで、Webページに設置できるんです。

「このスライダーの値を使って、グラフを再計算して表示して!」といった連携も、驚くほど少ないコードで実現できます。

メリット3: データ分析・機械学習との相性が抜群すぎる

Streamlitは、もともとデータサイエンティストや機械学習エンジニアのために作られました。

だから、データ分析でよく使うライブラリとの連携が本当に強力なんです。

例えば、Pandas(パんだス)というデータ分析ライブラリで作った「データフレーム(Excelの表みたいなもの)」がありますよね。

普通なら print(df) とコンソールに出すだけですが、Streamlitなら st.dataframe(df) と書くだけ。

するとどうでしょう!ブラウザ上で、ソート(並び替え)や検索もできる、リッチな表として表示してくれるんです。

Matplotlib(マットプロットリブ)やPlotly(プロットリー)で作ったグラフも、 st.pyplot()st.plotly_chart() と書くだけで、Webページに美しく埋め込めます。

あなたが分析した結果や、トレーニングしたAIモデルを、「ただの報告書」から「誰もが触れるデモアプリ」に格上げできる。これは強力な武器になりますよ!


もちろん弱点もある (デメリット)

と、ここまで良いことばかり話してきましたが、もちろん万能ではありません。

ちゃんと弱点も知っておきましょう。

デメリット1: デザインの自由度は低い

Streamlitは「組み立てキット」だと例えました。

つまり、デザインやレイアウトはある程度「決まった形」になります。

「ここのボタンの色を、どうしても奇抜なピンクにしたい!」

「この入力欄を、あと3ピクセルだけ右に動かしたい!」

といった、ピクセル単位での細かーいデザイン調整は非常に苦手です。

あくまで「素早く」「機能的に」アプリを作るためのツールです。

見た目に徹底的にこだわりたい、デザイナーさんの要求を100%実現したい、という用途には向いていません。

デメリット2: 複雑すぎるアプリには向かない

Streamlitが得意なのは、比較的シンプルな「1ページで完結するダッシュボード」や「簡単なデモアプリ」です。

X(旧Twitter)のような、複数のページが複雑に連携し、何百万人ものユーザー登録を管理し、超高速なリアルタイム通信が求められる…といった、巨大で複雑なサービスをゼロから作るのは難しい(というか、それが目的のツールではありません)。

「社内向けのデータ可視化ツール」や「AIモデルのプロトタイプ(試作品)」を作るのが、Streamlitが最も輝く場面ですね。


どうやって始めるの?

理屈は分かりました。でも、どうやって使うの?

心配しないでください、驚くほど簡単です。

まず、Pythonが使える環境(仮想環境を使っていると、なお良いですね!)で、以下のコマンドを実行してStreamlitをインストールします。

pip install streamlit

たったこれだけです。

次に、お好きなエディタでPythonファイル(例えば app.py という名前にしましょう)を作って、以下のコードをコピペしてみてください。

Python

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

# 1. タイトルを表示
st.title('Streamlit 超入門!')

# 2. テキストを表示
st.write('こんにちは!これがあなたの最初のWebアプリです。')

# 3. スライダーを設置
# 0から100までのスライダーで、初期値は50
number = st.slider('好きな数字を選んでください', 0, 100, 50)

# 4. スライダーの値に応じて表示を変更
st.write(f'あなたが選んだ数字は「{number}」ですね!')

# 5. チェックボックス
if st.checkbox('すごいグラフを表示しますか?'):
    st.write('すごいグラフですよ!')
    
    # 簡単なグラフデータを作成
    chart_data = pd.DataFrame(
        np.random.randn(20, 3), # 20行3列のランダムな数値
        columns=['A', 'B', 'C']
    )
    
    # 折れ線グラフを表示
    st.line_chart(chart_data)

書けましたか?

では、ターミナル(コマンドプロンプト)を開いて、そのファイルがあるフォルダに移動し、以下の「魔法の呪文」を唱えてください!

streamlit run app.py

これを実行すると、自動的にブラウザが立ち上がります。

どうですか?

そこに、あなたが今書いたコードが、スライダー付きの立派なWebアプリとして表示されていませんか!?

スライダーを動かすと、下の数字がリアルタイムで変わるはずです。

チェックボックスを押せば、グラフも出てきます。

これがStreamlitです。魔法みたいでしょう!


まとめと今後の学習

今回は、Pythonだけで爆速でWebアプリが作れる「Streamlit」について解説しました。

Streamlitは、

  • HTMLやCSSを知らなくても
  • Pythonのシンプルなコードだけで
  • データ分析やAIモデルを「インタラクティブ(触れる)」なWebアプリとして共有できる

という、新人エンジニアにとって最強の武器の一つです。

もちろん、デザインの自由度が低いなどの弱点もありますが、それを補って余りあるスピードと手軽さを持っています。

今後の学習としては、まず何をすればいいでしょうか?

  1. 公式ドキュメントを触ってみよう!まずは公式サイトの「Get started」や「Cheat Sheet(チートシート)」を眺めてみてください。st.button(ボタン)や st.text_input(文字入力)、st.file_uploader(ファイルアップロード)など、今日紹介できなかった便利な部品(ウィジェット)が山ほどあります。
  2. 自分のコードをアプリ化してみよう!一番の近道は、あなたが過去に書いたデータ分析のコード(例えば、PandasでCSVを読み込んでグラフを出す、など)を、StreamlitでWebアプリ化してみることです。

「コードを書く」だけでなく、「書いたコードを動く形にして人に使ってもらう」経験は、エンジニアとしてあなたを大きく成長させてくれます。

Webアプリ開発の第一歩として、Streamlitをぜひ楽しんでみてください!

セイ・コンサルティング・グループの新人エンジニア研修のメニューへのリンク

投稿者プロフィール

山崎講師
山崎講師代表取締役
セイ・コンサルティング・グループ株式会社代表取締役。
岐阜県出身。
2000年創業、2004年会社設立。
IT企業向け人材育成研修歴業界歴20年以上。
すべての無駄を省いた費用対効果の高い「筋肉質」な研修を提供します!
この記事に間違い等ありましたらぜひお知らせください。