技術は使ってなんぼ

自分が得たものを誰かの役に立てたい

Python史上最も簡単にWEBアプリが作れる「Streamlit」を使おう!


こんにちは。

Pythonのライブラリやフレームワーク大好きマンの私が、今年最もおススメしたいフレームワークを見つけました。

それが「Streamlit」です。

従来のPythonによるWEBアプリフレームワークDjangoFlaskが定番でした。

しかしこれらを習得するための学習コストが高く、実装にもひと手間かかります。

Streamlitは、これらよりもはるかに簡単に作成することができるんです。

DjangoやFlaskに比べると機能面で見劣りしますが、簡単なWEBアプリを作りたい場合に有効です。

また驚くほど簡単にかけるので、プログラミング初心者でもすぐ実装できると思います。

今日はこのStreamlitについてご紹介したいと思います。

それでは解説していきます。

どのぐらい簡単なのか

実際に書いてみましょう

百聞は一見に如かずなので、実際に書いてみましょう。

まずはStreamlitをインストールしましょう。

$ pip install streamlit

インストールが出来たら、ファイルを作って(hello.pyとします)早速コードを書きます。

import streamlit as st

st.write("hello streamlit")

これでWEBアプリがひとつ出来上がりです。

起動させるためには、以下のコマンドを打ってください。

$ streamlit run hello.py

するとこんなメッセージが出てくればOKです。

streamlit run

自動的にWEB画面が立ち上がるかと思いますが、立ち上がらない場合は
http://localhost:8501にアクセスしてください。

ブラウザ上に「hello streamlit」と表示されるはずです。

終了するときはコマンドラインでCtrl + Cで終了できます。

どうでしょうか?めちゃくちゃ簡単でしょ?

たった一行でWEBアプリが作れてしまったのは、私が知る限りPython史上最も簡単なフレームワークだと思います。

何ができるのか

表データ(DataFrame)を扱うことができる

いくつかできることを紹介します。

まずAI・データサイエンスではお馴染みのPandasのデータフレームを扱うことができます。

実際に書いてみましょう。

import streamlit as st
import pandas as pd

df = pd.DataFrame({
    'test1': [1, 2, 3],
    'test2': [10, 20, 30]
})
st.write(df)

するとこんな画面が表示されます。

dataframe

うまくテーブル化できてますね。

このように、作成したDataframeを表形式で表示することができます。

画像データをアップロードできる

WEBブラウザ上に好きな画像をアップして表示することもできます。

これをするためには、画像を読み込むPythonライブラリのpillowが必要になるので、以下のコマンドでインストールしましょう。

$ pip install Pillow

インストールが完了したら、実際に書いてみましょう。

import streamlit as st
from PIL import Image

image = Image.open('panda.png')
st.image(image, caption='pandaだよー')
pandaだよー
ボタンやドロップダウンリストが簡単に作れる

こんなに簡単なのに、WEBアプリとして機能させるために必要なアイテムがかなり充実しているのも特徴です。

例えば画面上にボタンやドロップダウンリストを設置することができます。

ここからは実際に動かしてみてほしいので、公式のURLを貼っておきます。
docs.streamlit.io
docs.streamlit.io

リンク先のExampleを参照ください。

実際に起動した画面も表示されるので、ぜひ触ってみてください。

その他やれることはいっぱいありますので、気になる方は是非公式ドキュメントをご確認ください。

ここの公式ドキュメントも、他のドキュメントと比べてとても読みやすいです。

公式ドキュメントに苦手意識のある方でも、きっと安心して読めることかと思います。

どんなシーンで使えるのか

Streamlitで驚くほど簡単にWEBアプリが作れることがわかったところで、じゃあ実際我々はどんな風に使えば良いでしょうか?

いくつか代表的な例をあげてみます。

データ分析ツール(BIツール)

例えばAI・データサイエンスの分野で活躍できます。

この分野ではたくさんのデータセットの解析や、AIが予測した結果の推定精度などを比較検証することが多々あります。

その際、膨大なデータやファイルの中から、ひとつひとつ探しながら検証するのは堅実とはいえません。

そんな時、より素早くかつ効率良く見つけるツールの開発が必要になります。

Streamlitはpandasを始め、グラフの可視化のAPIが充実しています。

膨大なデータをドロップダウンから選択し、瞬時にデータを可視化、抽出できるツールが出来れば、解析の質は劇的に向上するでしょう。

宣伝になりますが、私はそういったツールの開発も行っております。

お仕事の依頼等があれば、お気軽にご相談ください!

プレゼン資料

グラフによる可視化が可能なら、プレゼン資料だって作れます。

WEBアプリなので、例えば自社のサーバーで立ち上げておいて、客先で自社のリモートPCで接続すればすぐにプレゼンが開始できます。

またプレゼンで質問や意見を受けた際に、「〇〇の資料はないか?」とか「〇〇の場合だとどうなる?」みたいな意見を受けることがあると思います。

そんな時、手元にすぐあれば開くことができますが、データサーバーから探すとなるとすぐ回答できません。

Streamlit内でサーバーのリストと紐づけておけば、瞬時にデータを開くことができ、お客様を安心させ信頼獲得につながるかもしれません。

いわゆる動的でインタラクティブな(双方向性)に優れる資料が作れます。

エクセルでも不可能ではないですが、とても重いファイルになることが予想されます。

Streamlitは軽量なため、エクセルよりも多くのデータを軽量に取り扱うことが可能です。

DockerやAWSとの連携

最後は少し中級者以上向けの話になりますが、WEBアプリをさらに大規模なシステムに組み込むこともできます。

Dockerを使って、WEBアプリとDockerfileを渡すだけでどこでも簡単にWEBアプリを立ち上げることができます。

またAWSと紐づけるために、Streamlitはドメインの設定もできます。

このように、大規模かつ他の開発者と連携をとるような応用も考えられます。



いかがだったでしょうか?

Streamlitにご興味をいただけたでしょうか?

前回の記事でも書いた通り、プログラミングがとても簡単になっていることもご理解いただけたかと思います。
yonesuke0716.hatenablog.com

もはや数行でWEBアプリが開発できる時代です。

Streamlitを使って、開発だけでなく日々の仕事をもっとクオリティ高いものにしましょう!