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アプリとして共有できる
という、新人エンジニアにとって最強の武器の一つです。
もちろん、デザインの自由度が低いなどの弱点もありますが、それを補って余りあるスピードと手軽さを持っています。
今後の学習としては、まず何をすればいいでしょうか?
- 公式ドキュメントを触ってみよう!まずは公式サイトの「Get started」や「Cheat Sheet(チートシート)」を眺めてみてください。st.button(ボタン)や st.text_input(文字入力)、st.file_uploader(ファイルアップロード)など、今日紹介できなかった便利な部品(ウィジェット)が山ほどあります。
- 自分のコードをアプリ化してみよう!一番の近道は、あなたが過去に書いたデータ分析のコード(例えば、PandasでCSVを読み込んでグラフを出す、など)を、StreamlitでWebアプリ化してみることです。
「コードを書く」だけでなく、「書いたコードを動く形にして人に使ってもらう」経験は、エンジニアとしてあなたを大きく成長させてくれます。
Webアプリ開発の第一歩として、Streamlitをぜひ楽しんでみてください!
セイ・コンサルティング・グループの新人エンジニア研修のメニューへのリンク
投稿者プロフィール
- 代表取締役
-
セイ・コンサルティング・グループ株式会社代表取締役。
岐阜県出身。
2000年創業、2004年会社設立。
IT企業向け人材育成研修歴業界歴20年以上。
すべての無駄を省いた費用対効果の高い「筋肉質」な研修を提供します!
この記事に間違い等ありましたらぜひお知らせください。