PythonでWebアプリが秒速で?! 話題のStreamlit超入門

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

「自分で作ったデータ分析の結果や、機械学習のモデルを、もっと手軽に他の人にも触ってもらえたらな…」

新人エンジニアのあなたも、一度はそう考えたことがあるのではないでしょうか?

Webアプリケーションを作れば実現できると分かっていても、HTMLやCSS、JavaScriptを学ぶのは少し大変そうに感じますよね。

そんなあなたの悩みを、あっという間に解決してくれる魔法のようなツールがあるんです!

それが、今回ご紹介するPythonライブラリ「Streamlit」です。

この記事を読めば、あなたもきっとStreamlitの魅力に夢中になるはずですよ!

Streamlitって一体何者?

まず、専門用語からお話しすると、Streamlitは「Webアプリケーションフレームワーク」の一種です。

…といっても、これだけではピンとこないかもしれませんね。

例えるなら、Streamlitは「Webアプリを作るための、至れり尽くせりの料理キット」のようなものです。

普通のWebアプリ開発が、食材を畑で育てるところから始める本格的な料理だとすれば、Streamlitは、カット済みの野菜や特製のソースが全部セットになっていて、レシピ通りに混ぜたり温めたりするだけで、あっという間に美味しい一品が完成する料理キットです。

つまり、Webデザインの深い知識(HTMLやCSS)や、ブラウザを動かすための複雑な処理(JavaScript)を知らなくても、あなたが普段書いているPythonのコードだけで、対話的なWebアプリケーションをサクッと作れてしまうのです!

特に、データサイエンティストや機械学習エンジニアが、分析結果を可視化したり、作成したAIモデルをデモとして公開したりする場面で、絶大な人気を誇っています。

Streamlitを使うと、どんないいことがあるの?

Streamlitの魅力はたくさんありますが、特に新人エンジニアの皆さんにとって嬉しいメリットを3つご紹介しますね。

1. とにかく学習コストが低い!

最大のメリットは、なんといってもその手軽さです。

新しいプログラミング言語を覚える必要はありません。Pythonの基本的な知識さえあれば、誰でもすぐに始めることができます。

普段あなたが書いているデータ分析用のPythonスクリプトに、st.title() のようなStreamlit特有の命令を数行書き加えるだけで、それがそのままWebページ上のタイトルとして表示されるのです。驚くほど簡単だと思いませんか?

2. 開発スピードが爆速!

従来のWebフレームワーク(例えばDjangoやFlask)だと、画面のデザイン定義、サーバーとの通信処理など、多くの「お作法」を学ぶ必要がありました。

しかしStreamlitでは、そういった面倒な部分をすべて自動で担当してくれます。

あなたがやるべきことは、Pythonで「何を表示したいか」を書くだけ。

アイデアを思いついてから、動くプロトタイプを完成させるまでの時間が劇的に短縮されるので、試行錯誤を繰り返すのがとても楽しくなりますよ!

3. インタラクティブな部品が超簡単に追加できる

ただ情報を表示するだけでなく、ユーザーが操作できるWebアプリを作りたいですよね。

例えば、「数値を変更できるスライダー」や「ファイルを選択させるボタン」などです。

Streamlitなら、そういったUI部品(ウィジェットと呼びます)を、たった1行のコードで設置できます。

st.slider('年齢を選んでください', 0, 100)

たったこれだけで、0から100まで動かせるスライダーがWebページに現れるのです。まるで魔法みたいでしょう?

もちろんデメリットもある

素晴らしいことばかりのように聞こえるStreamlitですが、もちろん万能ではありません。デメリットもしっかり理解しておきましょう。

1. デザインの自由度は低い

Streamlitは「手軽さ」を最優先に設計されています。

そのため、Webページのデザインは、ある程度決まったテンプレートの中から選ぶような形になります。

洋服に例えるなら、既製品の服はすぐに着られますが、オーダーメイドのように生地や形をミリ単位で調整することは難しいですよね。それと同じで、ピクセル単位で配置にこだわった、独創的なデザインのWebサイトを作るのには向いていません。

2. 大規模で複雑なアプリには不向き

Streamlitは、あくまで小〜中規模のアプリケーションや、プロトタイピング(試作品作り)を得意としています。

何百万人ものユーザーが同時に利用するような大規模なSNSや、複雑な機能を持つECサイトなどを構築するには、機能が不足していたり、パフォーマンス上の問題が出たりすることがあります。

本格的なWebサービスを開発したい場合は、やはりDjangoやFlaskといった、より大規模開発向けのフレームワークを学ぶ必要があります。

百聞は一見に如かず!触ってみよう

では、実際にどれくらい簡単なのか、簡単なコードを見てみましょう!

このコードを app.py という名前で保存してみてください。

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

st.title('はじめてのStreamlitアプリ')

st.write('これはとってもシンプルなアプリです!')

# スライダーを設置して、その値を二乗したグラフを描画する
x = st.slider('値を選んでください', 1, 10)
st.write(f'選んだ値: {x}')

st.subheader(f'{x} の二乗までのグラフ')
chart_data = pd.DataFrame(
    np.arange(1, x + 1) ** 2,
    columns=['data']
)
st.line_chart(chart_data)

このファイルを保存したら、ターミナル(コマンドプロンプト)で以下のコマンドを実行するだけです。

Bash

streamlit run app.py

どうでしょう?自動的にブラウザが立ち上がり、タイトルとスライダーが表示されたWebページが現れたはずです。

スライダーを動かすと、リアルタイムでグラフが変化することを確認してみてください。

たったこれだけのコードで、インタラクティブなWebアプリが完成してしまいました!

これから何を学べばいい?

Streamlitの魅力が少しでも伝わったでしょうか?

もし「もっと触ってみたい!」と感じてくれたなら、次のようなステップで学習を進めるのがおすすめです。

  1. 公式サイトのチュートリアルをやってみよう!
    まずは、公式が出しているドキュメントやチュートリアルに目を通すのが一番の近道です。基本的な部品の使い方から、少し応用的なテクニックまで網羅されています。
  2. 自分のデータで何か作ってみよう!
    知識をインプットしたら、次はアウトプットです。難しく考える必要はありません。あなたが持っているExcelやCSVファイルを読み込んで、グラフで表示するだけのアプリでも立派な作品です。自分の手で何かを作り上げる経験が、何よりの学習になります。
  3. アプリを公開してみよう!
    Streamlitには、「Streamlit Community Cloud」という、作成したアプリを無料で公開できるサービスがあります。自分の作ったアプリを世界中の人に見てもらうのは、とてもエキサイティングな体験ですよ!

Streamlitは、あなたのPythonスキルを、データ分析や機械学習の世界から、Webアプリケーションという新しい舞台へと引き上げてくれる、強力な相棒になってくれるはずです。

ぜひ、楽しみながら色々なアプリ作りに挑戦してみてくださいね!応援しています!

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

投稿者プロフィール

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