PythonだけでWebアプリを作成できるStreamlitのインストール

PythonだけでWebアプリを作成できるStreamlitのインストール プログラミング

Streamlitを知っていますか?
Streamlitを使えば、簡単にWebアプリが作成できます。

それもPythonだけでWebアプリを作れてしまいます。
html、css、JavaScriptのスキルがなくても作れるのです。

さらには、簡単にそのWebアプリを公開することができます。
面倒な設定などは不要で、Webアプリケーションを公開できるのです。

本記事の内容

  • Streamlitとは?
  • Streamlitのシステム要件
  • Streamlitのインストール
  • Streamlitの動作確認

それでは、上記に沿って解説していきましょう。

Streamlitとは?

Streamlitとは、見栄えの良いWebアプリを作成するためのPythonライブラリです。
Streamlitは、オープンソースであり、自由に使うことができます。

また、Webアプリと言っても、以下の内容を表示することに特化しています。

  • 機械学習
  • データサイエンス

上記の結果をPythonのみでWebアプリとして公開できるということです。
そのため、Streamlitは以下の人々のために用意されたモノと言えます。

  • 機械学習エンジニア
  • データサイエンティスト

上記の人々にとって、Webアプリケーションの開発は専門外になります。
でも、機械学習などの成果物をWebで共有したいという需要はあるわけです。

そこで、Streamlitが開発されることになります。
よって、機械学習エンジニアなどにとっては、Streamlitは大いに役立つことでしょう。

では、それ以外の人々には役に立たないのでしょうか?
個人的には、ある程度は使えると考えています。
(※私はWebアプリケーションの開発が専門になります)

売上照会などの画面であれば、全然対応できるでしょう。
つまり、一覧を照会する画面なら、ある程度は対応可能です。

簡単な社内システムレベルならば、Streamlitでイケるかもとすら思えます。
あと、Streamlitの表示画面はレスポンシブデザインにも対応しています。

これも何気に大きなメリットになります。
社内システムは、PC専用で作られることが多いです。

でも、その会社の社長はスマホで売上一覧を見たいというケースがあります。
そのような場合は、社長一人のために別画面を用意なんてことも。
これは冗談ではなく、実際にあった話です。

少し話がそれましたが、そんな問題もStreamlitなら解決できそうです。
その意味でも、Streamlitを知っておくことはプラスと言えます。

以上、Streamlitについての説明でした。
次は、Streamlitのシステム要件を確認しましょう。

Streamlitのシステム要件

Streamlitの最新バージョンは、0.79.0となります。
この最新バージョンは、2021年3月19日にリリースされています。

メンテナンスの頻度は、高い方です。
機械学習の普及に伴って、Streamlitの需要も高まっているのかもしれません。

サポートOSに関しては、これと言って記載が見当たりません。
このような場合は、大抵は以下を含むクロスプラットフォーム対応になります。

  • Windows
  • macOS
  • Linux

(※WindowsとLinux(Ubuntu)の2つで動作確認済)

サポートOS以外では、以下の2点で注意が必要となります。

  • Pythonバージョン
  • 仮想環境

それぞれを以下で説明します。

Pythonバージョン

Streamlitが、サポートされているPythonは3.6以降です。
つまりは、以下のPythonの公式開発サイクルに準じているということですね。

バージョンリリース日サポート期限
3.62016年12月23日2021年12月
3.72018年6月27日2023年6月
3.82019年10月14日2024年10月
3.92020年10月5日2025年10月

個人的には、公式開発サイクルに準じる方が正しいと思います。
セキュリティやパフォーマンスを考慮すればの話です。

なお、私は以下のバージョンで検証しています。

>python -V
Python 3.9.1

仮想環境

Streamlit公式サイトには、以下のような記載があります。

Regardless of which package management tool you’re using, we recommend running the commands on this page in a virtual environment. 
This ensures that the dependencies pulled in for Streamlit don’t impact any other Python projects you’re working on.

Streamlitは、Pythonの仮想環境へのインストールが推奨されています。
これは、pipなどのパッケージ管理システムを利用していてもです。

その際に利用できる仮想環境が何個か挙げられています。

  • pipenv
  • poetry
  • venv
  • virtualenv
  • conda

仮想環境へのインストールが推奨される理由は、記載されていません。
個人的には、その理由が依存関係にあるのではと推測しています。

依存関係のあるパッケージについては、後ほどのインストールの説明で確認しましょう。

Streamlitのインストール

最初に、現状のインストール済みパッケージを確認しておきます。

>pip list
Package    Version
---------- -------
pip        21.0.1
setuptools 54.1.2

次にするべきことは、pip自体の更新です。
pipコマンドを使う場合、常に以下のコマンドを実行しておきましょう。

python -m pip install --upgrade pip

では、Streamlitのインストールです。
Streamlitのインストールは、以下のコマンドとなります。

pip install streamlit

インストールは、数分程度かかります。
では、どんなパッケージがインストールされたのかを確認しましょう。

>pip list
Package             Version
------------------- ---------
altair              4.1.0
argon2-cffi         20.1.0
astor               0.8.1
async-generator     1.10
attrs               20.3.0
backcall            0.2.0
base58              2.1.0
bleach              3.3.0
blinker             1.4
cachetools          4.2.1
certifi             2020.12.5
cffi                1.14.5
chardet             4.0.0
click               7.1.2
colorama            0.4.4
decorator           4.4.2
defusedxml          0.7.1
entrypoints         0.3
gitdb               4.0.5
GitPython           3.1.14
idna                2.10
ipykernel           5.5.0
ipython             7.21.0
ipython-genutils    0.2.0
ipywidgets          7.6.3
jedi                0.18.0
Jinja2              2.11.3
jsonschema          3.2.0
jupyter-client      6.1.12
jupyter-core        4.7.1
jupyterlab-pygments 0.1.2
jupyterlab-widgets  1.0.0
MarkupSafe          1.1.1
mistune             0.8.4
nbclient            0.5.3
nbconvert           6.0.7
nbformat            5.1.2
nest-asyncio        1.5.1
notebook            6.2.0
numpy               1.20.1
packaging           20.9
pandas              1.2.3
pandocfilters       1.4.3
parso               0.8.1
pickleshare         0.7.5
Pillow              8.1.2
pip                 21.0.1
prometheus-client   0.9.0
prompt-toolkit      3.0.17
protobuf            3.15.6
pycparser           2.20
pydeck              0.6.1
Pygments            2.8.1
pyparsing           2.4.7
pyrsistent          0.17.3
python-dateutil     2.8.1
pytz                2021.1
pywin32             300
pywinpty            0.5.7
pyzmq               22.0.3
requests            2.25.1
Send2Trash          1.5.0
setuptools          54.1.2
six                 1.15.0
smmap               3.0.5
streamlit           0.79.0
terminado           0.9.3
testpath            0.4.4
toml                0.10.2
toolz               0.11.1
tornado             6.1
traitlets           5.0.5
tzlocal             2.1
urllib3             1.26.4
validators          0.18.2
watchdog            2.0.2
wcwidth             0.2.5
webencodings        0.5.1
widgetsnbextension  3.5.1

ヤバイですね。。。
これだけの数のパッケージに依存しているということになります。
環境によっては、Streamlitのインストールに失敗することもあり得ます。

このことが、StreamlitをPythonの仮想環境にインストールすべき理由になります。
そりゃ、公式もわざわざ仮想環境にインストールするように書きますよ。

ここまで多い依存関係もなかなか見ることがありません。
最後に、Streamlitの動作確認を行います。

Streamlitの動作確認

まずは、次のコードをfirst_app.pyと名前で保存します。

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

"""
# サンプル
5 x 5の表データを表示する
"""

dataframe = pd.DataFrame(
    np.random.randn(5, 5),
    columns=('col %d' % i for i in range(5)))
st.table(dataframe)

次に、以下のコマンドを実行。

streamlit run first_app.py

そうすると、次のようにURLが表示されます。

>streamlit run first_app.py

  You can now view your Streamlit app in your browser.

  Local URL: http://localhost:8501
  Network URL: http://xxx.xxx.xxx.xxx:8501

実行環境によりますが、どちらかのURLにブラウザでアクセスします。
(※ポート8501へのアクセス許可は必要)

上の画面が表示されれば、動作確認は成功です。
何かすごく不思議な感じがします。

本当にPythonだけでWebアプリケーションを開発できました。
それも外部公開(共有)まで、こんなに簡単に。

以上、Streamlitの動作確認の説明を終わります。

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