Python入門トップページ


Streamlit で Web アプリを作成しよう:目次

  1. 仮想環境を構築して Streamlit をインストールする
  2. ソルバーのクラスを準備する
  3. Streamlit アプリのひな形を作成して実行する
  4. CSV ファイルのアップロード機能を実装する
  5. 予算設定のスライドバーを実装する
  6. ソルバーを呼び出してアプリを完成させる
  7. GitHub でリポジトリを公開する
  8. Streamlit Community Cloud でアプリを公開する

Streamlit で Web アプリを作成しよう

仮想環境を構築して Streamlit をインストールする

Anaconda の base 環境に Streamlit を直接インストールしても良いのですが,ここでは,仮想環境を構築し,仮想環境の中に Streamlit をインストールすることとします.まず,Documents フォルダの中に streamlit フォルダを作成した後,Anaconda Prompt でそのフォルダに移動します.

(base) C:\Users\UserName>cd Documents ⏎

(base) C:\Users\UserName\Documents>dir ⏎
 ドライブ C のボリューム ラベルは Main です
 ボリューム シリアル番号は 12D8-4AB8 です

 C:\Users\UserName\Documents のディレクトリ

2025/07/02  15:33    <DIR>          .
2025/07/02  15:33    <DIR>          ..
2024/04/02  16:09    <DIR>          AmosDevelopment
2021/01/28  17:47    <DIR>          IBM
2021/03/12  14:22    <DIR>          mteleco
2021/02/08  13:06    <DIR>          My Digital Editions
2021/03/12  14:21    <DIR>          Office のカスタム テンプレート
2025/07/02  15:33    <DIR>          streamlit
2021/01/28  17:52    <DIR>          Visual Studio 2019
2021/02/08  13:19    <DIR>          サウンド レコーディング
2023/09/12  16:57    <DIR>          マイ Tableau Prep リポジトリ
2023/09/12  16:50    <DIR>          マイ Tableau リポジトリ
               0 個のファイル                   0 バイト
              12 個のディレクトリ  68,282,204,160 バイトの空き領域

(base) C:\Users\UserName\Documents>cd streamlit ⏎

(base) C:\Users\UserName\Documents\streamlit>

次に,作成済みの仮想環境の一覧を確認します.まだ仮想環境を作成していないので,base 環境のみが表示されました.このとき,作成した仮想環境を有効にするためのコマンドがヒントとして表示されていることにも注意してください.

(base) C:\Users\UserName\Documents\streamlit>conda env list ⏎
# conda environments:
#
base                  *  C:\ProgramData\anaconda3


(base) C:\Users\UserName\Documents\streamlit>

次のコマンドで Python のバージョンに 3.12 を指定した仮想環境を作成し,その環境名に py312stream を設定します.

(base) C:\Users\UserName\Documents\streamlit>conda create -n py312stream python=3.12 ⏎
Channels:
 - defaults
Platform: win-64
Collecting package metadata (repodata.json): done
Solving environment: done

## Package Plan ##

  environment location: C:\ProgramData\anaconda3\envs\py312stream

  added / updated specs:
    - python=3.12


The following packages will be downloaded:

    package                    |            build
    ---------------------------|-----------------
    expat-2.7.1                |       h8ddb27b_0         259 KB
    pip-25.1                   |     pyhc872135_2         1.3 MB
    python-3.12.11             |       h716150d_0        16.5 MB
    setuptools-78.1.1          |  py312haa95532_0         2.2 MB
    tk-8.6.14                  |       h5e9d12e_1         3.5 MB
    tzdata-2025b               |       h04d1e81_0         116 KB
    vc-14.42                   |       haa95532_5          11 KB
    vs2015_runtime-14.42.34433 |       hbfb602d_5         1.2 MB
    wheel-0.45.1               |  py312haa95532_0         177 KB
    xz-5.6.4                   |       h4754444_1         280 KB
    ------------------------------------------------------------
                                           Total:        25.5 MB

The following NEW packages will be INSTALLED:

  bzip2              pkgs/main/win-64::bzip2-1.0.8-h2bbff1b_6
  ca-certificates    pkgs/main/win-64::ca-certificates-2025.2.25-haa95532_0
  expat              pkgs/main/win-64::expat-2.7.1-h8ddb27b_0
  libffi             pkgs/main/win-64::libffi-3.4.4-hd77b12b_1
  openssl            pkgs/main/win-64::openssl-3.0.16-h3f729d1_0
  pip                pkgs/main/noarch::pip-25.1-pyhc872135_2
  python             pkgs/main/win-64::python-3.12.11-h716150d_0
  setuptools         pkgs/main/win-64::setuptools-78.1.1-py312haa95532_0
  sqlite             pkgs/main/win-64::sqlite-3.45.3-h2bbff1b_0
  tk                 pkgs/main/win-64::tk-8.6.14-h5e9d12e_1
  tzdata             pkgs/main/noarch::tzdata-2025b-h04d1e81_0
  vc                 pkgs/main/win-64::vc-14.42-haa95532_5
  vs2015_runtime     pkgs/main/win-64::vs2015_runtime-14.42.34433-hbfb602d_5
  wheel              pkgs/main/win-64::wheel-0.45.1-py312haa95532_0
  xz                 pkgs/main/win-64::xz-5.6.4-h4754444_1
  zlib               pkgs/main/win-64::zlib-1.2.13-h8cc25b3_1


Proceed ([y]/n)? y ⏎

done
#
# To activate this environment, use
#
#     $ conda activate py312stream
#
# To deactivate an active environment, use
#
#     $ conda deactivate


(base) C:\Users\UserName\Documents\streamlit>

もう一度,仮想環境の一覧を確認します.py312stream が作成されていますが,* 印が付いている base 環境が有効であることが分かります.

(base) C:\Users\UserName\Documents\streamlit>conda env list ⏎
# conda environments:
#
base                  *  C:\ProgramData\anaconda3
py312stream              C:\ProgramData\anaconda3\envs\py312stream


(base) C:\Users\UserName\Documents\streamlit>

仮想環境 py312stream を有効化します.

(base) C:\Users\UserName\Documents\streamlit>conda activate py312stream ⏎

(py312stream) C:\Users\UserName\Documents\streamlit>

現時点でインストールされているパッケージを一覧で確認します.仮想環境の設定直後であるので,インストールされているパッケージの数はごくわずかです.

(py312stream) C:\Users\UserName\Documents\streamlit>pip list ⏎

Package    Version
---------- -------
pip        25.1
setuptools 78.1.1
wheel      0.45.1

(py312stream) C:\Users\UserName\Documents\streamlit>

いよいよ streamlit をインストールします.Streamlit をインストールすると,関連する多くのパッケージもインストールされることが分かります.

(py312stream) C:\Users\UserName\Documents\streamlit>pip install streamlit ⏎
Collecting streamlit
  Downloading streamlit-1.46.1-py3-none-any.whl.metadata (9.0 kB)
Collecting altair<6,>=4.0 (from streamlit)
  Downloading altair-5.5.0-py3-none-any.whl.metadata (11 kB)
Collecting blinker<2,>=1.5.0 (from streamlit)
  Downloading blinker-1.9.0-py3-none-any.whl.metadata (1.6 kB)
Collecting cachetools<7,>=4.0 (from streamlit)
  Downloading cachetools-6.1.0-py3-none-any.whl.metadata (5.4 kB)
Collecting click<9,>=7.0 (from streamlit)
  Downloading click-8.2.1-py3-none-any.whl.metadata (2.5 kB)
Collecting numpy<3,>=1.23 (from streamlit)
  Downloading numpy-2.3.1-cp312-cp312-win_amd64.whl.metadata (60 kB)
Collecting packaging<26,>=20 (from streamlit)
  Downloading packaging-25.0-py3-none-any.whl.metadata (3.3 kB)
Collecting pandas<3,>=1.4.0 (from streamlit)
  Downloading pandas-2.3.0-cp312-cp312-win_amd64.whl.metadata (19 kB)
Collecting pillow<12,>=7.1.0 (from streamlit)
  Downloading pillow-11.3.0-cp312-cp312-win_amd64.whl.metadata (9.2 kB)
Collecting protobuf<7,>=3.20 (from streamlit)
  Downloading protobuf-6.31.1-cp310-abi3-win_amd64.whl.metadata (593 bytes)
Collecting pyarrow>=7.0 (from streamlit)
  Downloading pyarrow-20.0.0-cp312-cp312-win_amd64.whl.metadata (3.4 kB)
Collecting requests<3,>=2.27 (from streamlit)
  Downloading requests-2.32.4-py3-none-any.whl.metadata (4.9 kB)
Collecting tenacity<10,>=8.1.0 (from streamlit)
  Downloading tenacity-9.1.2-py3-none-any.whl.metadata (1.2 kB)
Collecting toml<2,>=0.10.1 (from streamlit)
  Downloading toml-0.10.2-py2.py3-none-any.whl.metadata (7.1 kB)
Collecting typing-extensions<5,>=4.4.0 (from streamlit)
  Downloading typing_extensions-4.14.0-py3-none-any.whl.metadata (3.0 kB)
Collecting watchdog<7,>=2.1.5 (from streamlit)
  Downloading watchdog-6.0.0-py3-none-win_amd64.whl.metadata (44 kB)
Collecting gitpython!=3.1.19,<4,>=3.0.7 (from streamlit)
  Downloading GitPython-3.1.44-py3-none-any.whl.metadata (13 kB)
Collecting pydeck<1,>=0.8.0b4 (from streamlit)
  Downloading pydeck-0.9.1-py2.py3-none-any.whl.metadata (4.1 kB)
Collecting tornado!=6.5.0,<7,>=6.0.3 (from streamlit)
  Downloading tornado-6.5.1-cp39-abi3-win_amd64.whl.metadata (2.9 kB)
Collecting jinja2 (from altair<6,>=4.0->streamlit)
  Downloading jinja2-3.1.6-py3-none-any.whl.metadata (2.9 kB)
Collecting jsonschema>=3.0 (from altair<6,>=4.0->streamlit)
  Downloading jsonschema-4.24.0-py3-none-any.whl.metadata (7.8 kB)
Collecting narwhals>=1.14.2 (from altair<6,>=4.0->streamlit)
  Downloading narwhals-1.45.0-py3-none-any.whl.metadata (11 kB)
Collecting colorama (from click<9,>=7.0->streamlit)
  Downloading colorama-0.4.6-py2.py3-none-any.whl.metadata (17 kB)
Collecting gitdb<5,>=4.0.1 (from gitpython!=3.1.19,<4,>=3.0.7->streamlit)
  Downloading gitdb-4.0.12-py3-none-any.whl.metadata (1.2 kB)
Collecting smmap<6,>=3.0.1 (from gitdb<5,>=4.0.1->gitpython!=3.1.19,<4,>=3.0.7->streamlit)
  Downloading smmap-5.0.2-py3-none-any.whl.metadata (4.3 kB)
Collecting python-dateutil>=2.8.2 (from pandas<3,>=1.4.0->streamlit)
  Downloading python_dateutil-2.9.0.post0-py2.py3-none-any.whl.metadata (8.4 kB)
Collecting pytz>=2020.1 (from pandas<3,>=1.4.0->streamlit)
  Downloading pytz-2025.2-py2.py3-none-any.whl.metadata (22 kB)
Collecting tzdata>=2022.7 (from pandas<3,>=1.4.0->streamlit)
  Downloading tzdata-2025.2-py2.py3-none-any.whl.metadata (1.4 kB)
Collecting charset_normalizer<4,>=2 (from requests<3,>=2.27->streamlit)
  Downloading charset_normalizer-3.4.2-cp312-cp312-win_amd64.whl.metadata (36 kB)
Collecting idna<4,>=2.5 (from requests<3,>=2.27->streamlit)
  Downloading idna-3.10-py3-none-any.whl.metadata (10 kB)
Collecting urllib3<3,>=1.21.1 (from requests<3,>=2.27->streamlit)
  Downloading urllib3-2.5.0-py3-none-any.whl.metadata (6.5 kB)
Collecting certifi>=2017.4.17 (from requests<3,>=2.27->streamlit)
  Downloading certifi-2025.6.15-py3-none-any.whl.metadata (2.4 kB)
Collecting MarkupSafe>=2.0 (from jinja2->altair<6,>=4.0->streamlit)
  Downloading MarkupSafe-3.0.2-cp312-cp312-win_amd64.whl.metadata (4.1 kB)
Collecting attrs>=22.2.0 (from jsonschema>=3.0->altair<6,>=4.0->streamlit)
  Downloading attrs-25.3.0-py3-none-any.whl.metadata (10 kB)
Collecting jsonschema-specifications>=2023.03.6 (from jsonschema>=3.0->altair<6,>=4.0->streamlit)
  Downloading jsonschema_specifications-2025.4.1-py3-none-any.whl.metadata (2.9 kB)
Collecting referencing>=0.28.4 (from jsonschema>=3.0->altair<6,>=4.0->streamlit)
  Downloading referencing-0.36.2-py3-none-any.whl.metadata (2.8 kB)
Collecting rpds-py>=0.7.1 (from jsonschema>=3.0->altair<6,>=4.0->streamlit)
  Downloading rpds_py-0.26.0-cp312-cp312-win_amd64.whl.metadata (4.3 kB)
Collecting six>=1.5 (from python-dateutil>=2.8.2->pandas<3,>=1.4.0->streamlit)
  Downloading six-1.17.0-py2.py3-none-any.whl.metadata (1.7 kB)
Downloading streamlit-1.46.1-py3-none-any.whl (10.1 MB)
   ---------------------------------------- 10.1/10.1 MB 78.3 MB/s eta 0:00:00
Downloading altair-5.5.0-py3-none-any.whl (731 kB)
   ---------------------------------------- 731.2/731.2 kB 10.2 MB/s eta 0:00:00
Downloading blinker-1.9.0-py3-none-any.whl (8.5 kB)
Downloading cachetools-6.1.0-py3-none-any.whl (11 kB)
Downloading click-8.2.1-py3-none-any.whl (102 kB)
Downloading GitPython-3.1.44-py3-none-any.whl (207 kB)
Downloading gitdb-4.0.12-py3-none-any.whl (62 kB)
Downloading numpy-2.3.1-cp312-cp312-win_amd64.whl (12.7 MB)
   ---------------------------------------- 12.7/12.7 MB 88.5 MB/s eta 0:00:00
Downloading packaging-25.0-py3-none-any.whl (66 kB)
Downloading pandas-2.3.0-cp312-cp312-win_amd64.whl (11.0 MB)
   ---------------------------------------- 11.0/11.0 MB 76.5 MB/s eta 0:00:00
Downloading pillow-11.3.0-cp312-cp312-win_amd64.whl (7.0 MB)
   ---------------------------------------- 7.0/7.0 MB 61.7 MB/s eta 0:00:00
Downloading protobuf-6.31.1-cp310-abi3-win_amd64.whl (435 kB)
Downloading pydeck-0.9.1-py2.py3-none-any.whl (6.9 MB)
   ---------------------------------------- 6.9/6.9 MB 70.6 MB/s eta 0:00:00
Downloading requests-2.32.4-py3-none-any.whl (64 kB)
Downloading charset_normalizer-3.4.2-cp312-cp312-win_amd64.whl (105 kB)
Downloading idna-3.10-py3-none-any.whl (70 kB)
Downloading smmap-5.0.2-py3-none-any.whl (24 kB)
Downloading tenacity-9.1.2-py3-none-any.whl (28 kB)
Downloading toml-0.10.2-py2.py3-none-any.whl (16 kB)
Downloading tornado-6.5.1-cp39-abi3-win_amd64.whl (444 kB)
Downloading typing_extensions-4.14.0-py3-none-any.whl (43 kB)
Downloading urllib3-2.5.0-py3-none-any.whl (129 kB)
Downloading watchdog-6.0.0-py3-none-win_amd64.whl (79 kB)
Downloading certifi-2025.6.15-py3-none-any.whl (157 kB)
Downloading jinja2-3.1.6-py3-none-any.whl (134 kB)
Downloading jsonschema-4.24.0-py3-none-any.whl (88 kB)
Downloading attrs-25.3.0-py3-none-any.whl (63 kB)
Downloading jsonschema_specifications-2025.4.1-py3-none-any.whl (18 kB)
Downloading MarkupSafe-3.0.2-cp312-cp312-win_amd64.whl (15 kB)
Downloading narwhals-1.45.0-py3-none-any.whl (371 kB)
Downloading pyarrow-20.0.0-cp312-cp312-win_amd64.whl (25.7 MB)
   ---------------------------------------- 25.7/25.7 MB 85.5 MB/s eta 0:00:00
Downloading python_dateutil-2.9.0.post0-py2.py3-none-any.whl (229 kB)
Downloading pytz-2025.2-py2.py3-none-any.whl (509 kB)
Downloading referencing-0.36.2-py3-none-any.whl (26 kB)
Downloading rpds_py-0.26.0-cp312-cp312-win_amd64.whl (234 kB)
Downloading six-1.17.0-py2.py3-none-any.whl (11 kB)
Downloading tzdata-2025.2-py2.py3-none-any.whl (347 kB)
Downloading colorama-0.4.6-py2.py3-none-any.whl (25 kB)
Installing collected packages: pytz, watchdog, urllib3, tzdata, typing-extensions, tornado, toml, tenacity, smmap, six, rpds-py, pyarrow, protobuf, pillow, packaging, numpy, narwhals, MarkupSafe, idna, colorama, charset_normalizer, certifi, cachetools, blinker, attrs, requests, referencing, python-dateutil, jinja2, gitdb, click, pydeck, pandas, jsonschema-specifications, gitpython, jsonschema, altair, streamlit
Successfully installed MarkupSafe-3.0.2 altair-5.5.0 attrs-25.3.0 blinker-1.9.0 cachetools-6.1.0 certifi-2025.6.15 charset_normalizer-3.4.2 click-8.2.1 colorama-0.4.6 gitdb-4.0.12 gitpython-3.1.44 idna-3.10 jinja2-3.1.6 jsonschema-4.24.0 jsonschema-specifications-2025.4.1 narwhals-1.45.0 numpy-2.3.1 packaging-25.0 pandas-2.3.0 pillow-11.3.0 protobuf-6.31.1 pyarrow-20.0.0 pydeck-0.9.1 python-dateutil-2.9.0.post0 pytz-2025.2 referencing-0.36.2 requests-2.32.4 rpds-py-0.26.0 six-1.17.0 smmap-5.0.2 streamlit-1.46.1 tenacity-9.1.2 toml-0.10.2 tornado-6.5.1 typing-extensions-4.14.0 tzdata-2025.2 urllib3-2.5.0 watchdog-6.0.0

(py312stream) C:\Users\UserName\Documents\streamlit>

今回はゴチバトルの問題を解くために,ortoolpy もインストールします.

py312stream) C:\Users\UserName\Documents\streamlit>pip install ortoolpy ⏎
Collecting ortoolpy
  Downloading ortoolpy-0.9.0-py3-none-any.whl.metadata (5.8 kB)
Collecting more-itertools>=10.7.0 (from ortoolpy)
  Downloading more_itertools-10.7.0-py3-none-any.whl.metadata (37 kB)
Requirement already satisfied: pandas>=2.3.0 in c:\programdata\anaconda3\envs\py312stream\lib\site-packages (from ortoolpy) (2.3.0)
Collecting pulp>=3.2.1 (from ortoolpy)
  Downloading pulp-3.2.1-py3-none-any.whl.metadata (6.9 kB)
Requirement already satisfied: numpy>=1.26.0 in c:\programdata\anaconda3\envs\py312stream\lib\site-packages (from pandas>=2.3.0->ortoolpy) (2.3.1)
Requirement already satisfied: python-dateutil>=2.8.2 in c:\programdata\anaconda3\envs\py312stream\lib\site-packages (from pandas>=2.3.0->ortoolpy) (2.9.0.post0)
Requirement already satisfied: pytz>=2020.1 in c:\programdata\anaconda3\envs\py312stream\lib\site-packages (from pandas>=2.3.0->ortoolpy) (2025.2)
Requirement already satisfied: tzdata>=2022.7 in c:\programdata\anaconda3\envs\py312stream\lib\site-packages (from pandas>=2.3.0->ortoolpy) (2025.2)
Requirement already satisfied: six>=1.5 in c:\programdata\anaconda3\envs\py312stream\lib\site-packages (from python-dateutil>=2.8.2->pandas>=2.3.0->ortoolpy) (1.17.0)
Downloading ortoolpy-0.9.0-py3-none-any.whl (28 kB)
Downloading more_itertools-10.7.0-py3-none-any.whl (65 kB)
Downloading pulp-3.2.1-py3-none-any.whl (16.4 MB)
   ---------------------------------------- 16.4/16.4 MB 73.6 MB/s eta 0:00:00
Installing collected packages: pulp, more-itertools, ortoolpy
Successfully installed more-itertools-10.7.0 ortoolpy-0.9.0 pulp-3.2.1

(py312stream) C:\Users\UserName\Documents\streamlit>

ここでインストール済みのパッケージを一覧で確認します.今回インストールされたのは streamlit 1.46.1 です.

(py312stream) C:\Users\UserName\Documents\streamlit>pip list ⏎
Package                   Version
------------------------- -----------
altair                    5.5.0
attrs                     25.3.0
blinker                   1.9.0
cachetools                6.1.0
certifi                   2025.6.15
charset-normalizer        3.4.2
click                     8.2.1
colorama                  0.4.6
gitdb                     4.0.12
GitPython                 3.1.44
idna                      3.10
Jinja2                    3.1.6
jsonschema                4.24.0
jsonschema-specifications 2025.4.1
MarkupSafe                3.0.2
more-itertools            10.7.0
narwhals                  1.45.0
numpy                     2.3.1
ortoolpy                  0.9.0
packaging                 25.0
pandas                    2.3.0
pillow                    11.3.0
pip                       25.1
protobuf                  6.31.1
PuLP                      3.2.1
pyarrow                   20.0.0
pydeck                    0.9.1
python-dateutil           2.9.0.post0
pytz                      2025.2
referencing               0.36.2
requests                  2.32.4
rpds-py                   0.26.0
setuptools                78.1.1
six                       1.17.0
smmap                     5.0.2
streamlit                 1.46.1
tenacity                  9.1.2
toml                      0.10.2
tornado                   6.5.1
typing_extensions         4.14.0
tzdata                    2025.2
urllib3                   2.5.0
watchdog                  6.0.0
wheel                     0.45.1

(py312stream) C:\Users\UserName\Documents\streamlit>

目次に戻る