見出し画像

Pythonのステキなライブラリ「Streamlit」でインタラクティブなツールを作る!

▼はじめに

Python好きな自分としては、シンプルにチャチャっとアプリを作りたいなあ、と強く願っています。

特に2021年は「マイクロアプリ開発元年」としてまして、「小さなアプリ」を持続的にリリースしていきたい、その中で役立ったアプリがあったらスケールしていきたい、と思っています。

そんな中、データサイエンス向けの手軽にアプリが作れるStreamlitというライブラリを発見しましたので、チュートリアルをやりながら、マイクロアプリを作っていくことにしました。

公式サイトをざっと見る限り、かなり手軽に作れそうですので、よろしければ皆様も一緒に手を動かして覚えていきましょう!

▼なぜやるのか?

・マイクロアプリを作れるようになりたいから
・なんだかステキなライブラリのような気がするから

▼なにをやるのか?

・マイクロアプリを作ってみる

▼どうやるのか?

・ローカルで開発する
・チュートリアルをやってみる
・公式サイトを読み下してみる

▼実装

Anaconda環境でやっていますが、普通のPython環境でもできます。

・インストールする

conda install -c conda-forge streamlit

普通の環境でしたら、

pip install streamlit

結果

Collecting package metadata (current_repodata.json): done
Solving environment: done

## Package Plan ##

 environment location: /Users/rw-mbp/opt/anaconda3/envs/st1

 added / updated specs:
   - streamlit


The following packages will be downloaded:

   package                    |            build
   ---------------------------|-----------------
   abseil-cpp-20200923.2      |       h046ec9c_1         886 KB  conda-forge
   altair-4.1.0               |             py_1         614 KB  conda-forge
   appnope-0.1.2              |   py39h6e9494a_0          10 KB  conda-forge
   argh-0.26.2                |  pyh9f0ad1d_1002          26 KB  conda-forge
   argon2-cffi-20.1.0         |   py39h5a22ff9_2          45 KB  conda-forge
   arrow-cpp-2.0.0            |py39hc542cae_9_cpu        15.9 MB  conda-forge
   astor-0.8.1                |     pyh9f0ad1d_0          25 KB  conda-forge
   async_generator-1.10       |             py_0          18 KB  conda-forge
   attrs-20.3.0               |     pyhd3deb0d_0          41 KB  conda-forge
   aws-c-common-0.4.59        |       hc929b4f_1         142 KB  conda-forge
   aws-c-event-stream-0.1.6   |       hc90cea0_6          21 KB  conda-forge
   aws-checksums-0.1.10       |       h38ed436_0          48 KB  conda-forge
   aws-sdk-cpp-1.8.70         |       h154b968_1         1.9 MB  conda-forge
   backcall-0.2.0             |     pyh9f0ad1d_0          13 KB  conda-forge
   backports-1.0              |             py_2           4 KB  conda-forge
   backports.functools_lru_cache-1.6.1|             py_0           8 KB  conda-forge
   base58-2.0.1               |             py_0           7 KB  conda-forge
   bleach-3.2.1               |     pyh9f0ad1d_0         111 KB  conda-forge
   blinker-1.4                |             py_1          13 KB  conda-forge
   boto3-1.16.45              |     pyhd8ed1ab_0          70 KB  conda-forge
   botocore-1.19.45           |     pyhd8ed1ab_0         4.4 MB  conda-forge
   brotli-1.0.9               |       hb1e8313_3         422 KB  conda-forge
   brotlipy-0.7.0             |py39h66d5b7b_1001         357 KB  conda-forge
   bzip2-1.0.8                |       hc929b4f_4         155 KB  conda-forge
   c-ares-1.17.1              |       hc929b4f_0          95 KB  conda-forge
   cachetools-4.1.1           |             py_0          12 KB  conda-forge
   cffi-1.14.4                |   py39h7786acb_1         219 KB  conda-forge
   chardet-4.0.0              |   py39h6e9494a_0         198 KB  conda-forge
   click-7.1.2                |     pyh9f0ad1d_0          64 KB  conda-forge
   cryptography-3.3.1         |   py39h79a2c39_0         614 KB  conda-forge
   decorator-4.4.2            |             py_0          11 KB  conda-forge
   defusedxml-0.6.0           |             py_0          22 KB  conda-forge
   entrypoints-0.3            |  pyhd8ed1ab_1003           8 KB  conda-forge
   gflags-2.2.2               |    hb1e8313_1004          92 KB  conda-forge
   gitdb-4.0.5                |             py_0          46 KB  conda-forge
   gitpython-3.1.11           |             py_0         110 KB  conda-forge
   glog-0.4.0                 |       hb7f4fc5_3          89 KB  conda-forge
   grpc-cpp-1.33.2            |       h1671c54_2         2.5 MB  conda-forge
   idna-2.10                  |     pyh9f0ad1d_0          52 KB  conda-forge
   importlib-metadata-3.3.0   |   py39h6e9494a_2          20 KB  conda-forge
   importlib_metadata-3.3.0   |       hd8ed1ab_2           3 KB  conda-forge
   ipykernel-5.4.2            |   py39h71a6800_0         166 KB  conda-forge
   ipython-7.19.0             |   py39h71a6800_0         1.1 MB  conda-forge
   ipython_genutils-0.2.0     |             py_1          21 KB  conda-forge
   ipywidgets-7.6.2           |     pyhd3deb0d_0         101 KB  conda-forge
   jedi-0.18.0                |   py39h6e9494a_1         922 KB  conda-forge
   jinja2-2.11.2              |     pyh9f0ad1d_0          93 KB  conda-forge
   jmespath-0.10.0            |     pyh9f0ad1d_0          21 KB  conda-forge
   jsonschema-3.2.0           |             py_2          45 KB  conda-forge
   jupyter_client-6.1.7       |             py_0          76 KB  conda-forge
   jupyter_core-4.7.0         |   py39h6e9494a_0          72 KB  conda-forge
   jupyterlab_pygments-0.1.2  |     pyh9f0ad1d_0           8 KB  conda-forge
   jupyterlab_widgets-1.0.0   |     pyhd8ed1ab_1         130 KB  conda-forge
   krb5-1.17.2                |       h60d9502_0         1.2 MB  conda-forge
   libblas-3.9.0              |       3_openblas          11 KB  conda-forge
   libcblas-3.9.0             |       3_openblas          11 KB  conda-forge
   libcurl-7.71.1             |       h9bf37e3_8         297 KB  conda-forge
   libev-4.33                 |       haf1e3a3_1          99 KB  conda-forge
   libevent-2.1.10            |       hddc9c9b_3         1.0 MB  conda-forge
   libgfortran-5.0.0          |      h6c81a4c_15          19 KB  conda-forge
   libgfortran5-9.3.0         |      h6c81a4c_15         1.7 MB  conda-forge
   liblapack-3.9.0            |       3_openblas          11 KB  conda-forge
   libnghttp2-1.41.0          |       h7580e61_2         831 KB  conda-forge
   libopenblas-0.3.12         |openmp_h54245bb_1         8.8 MB  conda-forge
   libprotobuf-3.14.0         |       hfd3ada9_0         2.2 MB  conda-forge
   libsodium-1.0.18           |       hbcb3906_1         516 KB  conda-forge
   libssh2-1.9.0              |       h8a08a2b_5         214 KB  conda-forge
   libthrift-0.13.0           |       h990abc0_6         351 KB  conda-forge
   libutf8proc-2.6.1          |       h35c211d_0          93 KB  conda-forge
   llvm-openmp-11.0.0         |       h73239a0_1         268 KB  conda-forge
   markupsafe-1.1.1           |   py39h66d5b7b_2          25 KB  conda-forge
   mistune-0.8.4              |py39h5a22ff9_1002          54 KB  conda-forge
   nbclient-0.5.1             |             py_0          60 KB  conda-forge
   nbconvert-6.0.7            |   py39h6e9494a_3         530 KB  conda-forge
   nbformat-5.0.8             |             py_0         100 KB  conda-forge
   nest-asyncio-1.4.3         |     pyhd8ed1ab_0           9 KB  conda-forge
   notebook-6.1.6             |   py39h6e9494a_0         6.3 MB  conda-forge
   numpy-1.19.4               |   py39he588a01_2         5.1 MB  conda-forge
   orc-1.6.6                  |       h2742e8b_0         391 KB  conda-forge
   packaging-20.8             |     pyhd3deb0d_0          34 KB  conda-forge
   pandas-1.2.0               |   py39h089d6f7_0        10.7 MB  conda-forge
   pandoc-2.11.3.1            |       h35c211d_0        14.3 MB  conda-forge
   pandocfilters-1.4.2        |             py_1           9 KB  conda-forge
   parquet-cpp-1.5.1          |                2           3 KB  conda-forge
   parso-0.8.1                |     pyhd8ed1ab_0          67 KB  conda-forge
   pexpect-4.8.0              |     pyh9f0ad1d_2          47 KB  conda-forge
   pickleshare-0.7.5          |          py_1003           9 KB  conda-forge
   prometheus_client-0.9.0    |     pyhd3deb0d_0          44 KB  conda-forge
   prompt-toolkit-3.0.8       |     pyha770c72_0         237 KB  conda-forge
   protobuf-3.14.0            |   py39h81cd7d3_0         326 KB  conda-forge
   ptyprocess-0.6.0           |          py_1001          15 KB  conda-forge
   pyarrow-2.0.0              |py39hc80f86d_9_cpu         2.2 MB  conda-forge
   pycparser-2.20             |     pyh9f0ad1d_2          94 KB  conda-forge
   pydeck-0.5.0               |     pyh9f0ad1d_0         3.6 MB  conda-forge
   pyopenssl-20.0.1           |     pyhd8ed1ab_0          48 KB  conda-forge
   pyparsing-2.4.7            |     pyh9f0ad1d_0          60 KB  conda-forge
   pyrsistent-0.17.3          |   py39h5a22ff9_1          87 KB  conda-forge
   pysocks-1.7.1              |   py39h2c36a5b_2          27 KB  conda-forge
   python-dateutil-2.8.1      |             py_0         220 KB  conda-forge
   pytz-2020.5                |     pyhd8ed1ab_0         244 KB  conda-forge
   pyyaml-5.3.1               |   py39h66d5b7b_1         180 KB  conda-forge
   pyzmq-20.0.0               |   py39h07c395c_1         466 KB  conda-forge
   re2-2020.11.01             |       h2e338ed_0         190 KB  conda-forge
   requests-2.25.1            |     pyhd3deb0d_0          51 KB  conda-forge
   s3transfer-0.3.3           |     pyhd8ed1ab_5          51 KB  conda-forge
   send2trash-1.5.0           |             py_0          12 KB  conda-forge
   six-1.15.0                 |     pyh9f0ad1d_0          14 KB  conda-forge
   smmap-3.0.4                |     pyh9f0ad1d_0          22 KB  conda-forge
   snappy-1.1.8               |       hb1e8313_3          29 KB  conda-forge
   streamlit-0.73.1           |     pyhd8ed1ab_0         6.0 MB  conda-forge
   terminado-0.9.1            |   py39h6e9494a_1          25 KB  conda-forge
   testpath-0.4.4             |             py_0          85 KB  conda-forge
   toml-0.10.2                |     pyhd8ed1ab_0          18 KB  conda-forge
   toolz-0.11.1               |             py_0          46 KB  conda-forge
   tornado-6.1                |   py39h5a22ff9_0         645 KB  conda-forge
   traitlets-5.0.5            |             py_0          81 KB  conda-forge
   tzlocal-2.1                |     pyh9f0ad1d_0          18 KB  conda-forge
   urllib3-1.26.2             |     pyhd8ed1ab_0          98 KB  conda-forge
   validators-0.18.2          |     pyhd3deb0d_0          18 KB  conda-forge
   watchdog-1.0.2             |   py39hcbf5805_0          97 KB  conda-forge
   wcwidth-0.2.5              |     pyh9f0ad1d_2          33 KB  conda-forge
   webencodings-0.5.1         |             py_1          12 KB  conda-forge
   widgetsnbextension-3.5.1   |   py39h6e9494a_4         1.8 MB  conda-forge
   yaml-0.2.5                 |       haf1e3a3_0          81 KB  conda-forge
   zeromq-4.3.3               |       h74dc148_3         249 KB  conda-forge
   zipp-3.4.0                 |             py_0          11 KB  conda-forge
   ------------------------------------------------------------
                                          Total:       104.8 MB

The following NEW packages will be INSTALLED:

 abseil-cpp         conda-forge/osx-64::abseil-cpp-20200923.2-h046ec9c_1
 altair             conda-forge/noarch::altair-4.1.0-py_1
 appnope            conda-forge/osx-64::appnope-0.1.2-py39h6e9494a_0
 argh               conda-forge/noarch::argh-0.26.2-pyh9f0ad1d_1002
 argon2-cffi        conda-forge/osx-64::argon2-cffi-20.1.0-py39h5a22ff9_2
 arrow-cpp          conda-forge/osx-64::arrow-cpp-2.0.0-py39hc542cae_9_cpu
 astor              conda-forge/noarch::astor-0.8.1-pyh9f0ad1d_0
 async_generator    conda-forge/noarch::async_generator-1.10-py_0
 attrs              conda-forge/noarch::attrs-20.3.0-pyhd3deb0d_0
 aws-c-common       conda-forge/osx-64::aws-c-common-0.4.59-hc929b4f_1
 aws-c-event-stream conda-forge/osx-64::aws-c-event-stream-0.1.6-hc90cea0_6
 aws-checksums      conda-forge/osx-64::aws-checksums-0.1.10-h38ed436_0
 aws-sdk-cpp        conda-forge/osx-64::aws-sdk-cpp-1.8.70-h154b968_1
 backcall           conda-forge/noarch::backcall-0.2.0-pyh9f0ad1d_0
 backports          conda-forge/noarch::backports-1.0-py_2
 backports.functoo~ conda-forge/noarch::backports.functools_lru_cache-1.6.1-py_0
 base58             conda-forge/noarch::base58-2.0.1-py_0
 bleach             conda-forge/noarch::bleach-3.2.1-pyh9f0ad1d_0
 blinker            conda-forge/noarch::blinker-1.4-py_1
 boto3              conda-forge/noarch::boto3-1.16.45-pyhd8ed1ab_0
 botocore           conda-forge/noarch::botocore-1.19.45-pyhd8ed1ab_0
 brotli             conda-forge/osx-64::brotli-1.0.9-hb1e8313_3
 brotlipy           conda-forge/osx-64::brotlipy-0.7.0-py39h66d5b7b_1001
 bzip2              conda-forge/osx-64::bzip2-1.0.8-hc929b4f_4
 c-ares             conda-forge/osx-64::c-ares-1.17.1-hc929b4f_0
 cachetools         conda-forge/noarch::cachetools-4.1.1-py_0
 cffi               conda-forge/osx-64::cffi-1.14.4-py39h7786acb_1
 chardet            conda-forge/osx-64::chardet-4.0.0-py39h6e9494a_0
 click              conda-forge/noarch::click-7.1.2-pyh9f0ad1d_0
 cryptography       conda-forge/osx-64::cryptography-3.3.1-py39h79a2c39_0
 decorator          conda-forge/noarch::decorator-4.4.2-py_0
 defusedxml         conda-forge/noarch::defusedxml-0.6.0-py_0
 entrypoints        conda-forge/noarch::entrypoints-0.3-pyhd8ed1ab_1003
 freetype           conda-forge/osx-64::freetype-2.10.4-h3f75d11_0
 gflags             conda-forge/osx-64::gflags-2.2.2-hb1e8313_1004
 gitdb              conda-forge/noarch::gitdb-4.0.5-py_0
 gitpython          conda-forge/noarch::gitpython-3.1.11-py_0
 glog               conda-forge/osx-64::glog-0.4.0-hb7f4fc5_3
 grpc-cpp           conda-forge/osx-64::grpc-cpp-1.33.2-h1671c54_2
 idna               conda-forge/noarch::idna-2.10-pyh9f0ad1d_0
 importlib-metadata conda-forge/osx-64::importlib-metadata-3.3.0-py39h6e9494a_2
 importlib_metadata conda-forge/noarch::importlib_metadata-3.3.0-hd8ed1ab_2
 ipykernel          conda-forge/osx-64::ipykernel-5.4.2-py39h71a6800_0
 ipython            conda-forge/osx-64::ipython-7.19.0-py39h71a6800_0
 ipython_genutils   conda-forge/noarch::ipython_genutils-0.2.0-py_1
 ipywidgets         conda-forge/noarch::ipywidgets-7.6.2-pyhd3deb0d_0
 jedi               conda-forge/osx-64::jedi-0.18.0-py39h6e9494a_1
 jinja2             conda-forge/noarch::jinja2-2.11.2-pyh9f0ad1d_0
 jmespath           conda-forge/noarch::jmespath-0.10.0-pyh9f0ad1d_0
 jpeg               conda-forge/osx-64::jpeg-9d-hbcb3906_0
 jsonschema         conda-forge/noarch::jsonschema-3.2.0-py_2
 jupyter_client     conda-forge/noarch::jupyter_client-6.1.7-py_0
 jupyter_core       conda-forge/osx-64::jupyter_core-4.7.0-py39h6e9494a_0
 jupyterlab_pygmen~ conda-forge/noarch::jupyterlab_pygments-0.1.2-pyh9f0ad1d_0
 jupyterlab_widgets conda-forge/noarch::jupyterlab_widgets-1.0.0-pyhd8ed1ab_1
 krb5               conda-forge/osx-64::krb5-1.17.2-h60d9502_0
 lcms2              conda-forge/osx-64::lcms2-2.11-h11f7e16_1
 libblas            conda-forge/osx-64::libblas-3.9.0-3_openblas
 libcblas           conda-forge/osx-64::libcblas-3.9.0-3_openblas
 libcurl            conda-forge/osx-64::libcurl-7.71.1-h9bf37e3_8
 libev              conda-forge/osx-64::libev-4.33-haf1e3a3_1
 libevent           conda-forge/osx-64::libevent-2.1.10-hddc9c9b_3
 libgfortran        conda-forge/osx-64::libgfortran-5.0.0-h6c81a4c_15
 libgfortran5       conda-forge/osx-64::libgfortran5-9.3.0-h6c81a4c_15
 liblapack          conda-forge/osx-64::liblapack-3.9.0-3_openblas
 libnghttp2         conda-forge/osx-64::libnghttp2-1.41.0-h7580e61_2
 libopenblas        conda-forge/osx-64::libopenblas-0.3.12-openmp_h54245bb_1
 libpng             conda-forge/osx-64::libpng-1.6.37-h7cec526_2
 libprotobuf        conda-forge/osx-64::libprotobuf-3.14.0-hfd3ada9_0
 libsodium          conda-forge/osx-64::libsodium-1.0.18-hbcb3906_1
 libssh2            conda-forge/osx-64::libssh2-1.9.0-h8a08a2b_5
 libthrift          conda-forge/osx-64::libthrift-0.13.0-h990abc0_6
 libtiff            conda-forge/osx-64::libtiff-4.2.0-h355d032_0
 libutf8proc        conda-forge/osx-64::libutf8proc-2.6.1-h35c211d_0
 libwebp-base       conda-forge/osx-64::libwebp-base-1.1.0-hbcb3906_3
 llvm-openmp        conda-forge/osx-64::llvm-openmp-11.0.0-h73239a0_1
 lz4-c              conda-forge/osx-64::lz4-c-1.9.2-hb1e8313_3
 markupsafe         conda-forge/osx-64::markupsafe-1.1.1-py39h66d5b7b_2
 mistune            conda-forge/osx-64::mistune-0.8.4-py39h5a22ff9_1002
 nbclient           conda-forge/noarch::nbclient-0.5.1-py_0
 nbconvert          conda-forge/osx-64::nbconvert-6.0.7-py39h6e9494a_3
 nbformat           conda-forge/noarch::nbformat-5.0.8-py_0
 nest-asyncio       conda-forge/noarch::nest-asyncio-1.4.3-pyhd8ed1ab_0
 notebook           conda-forge/osx-64::notebook-6.1.6-py39h6e9494a_0
 numpy              conda-forge/osx-64::numpy-1.19.4-py39he588a01_2
 olefile            conda-forge/noarch::olefile-0.46-pyh9f0ad1d_1
 orc                conda-forge/osx-64::orc-1.6.6-h2742e8b_0
 packaging          conda-forge/noarch::packaging-20.8-pyhd3deb0d_0
 pandas             conda-forge/osx-64::pandas-1.2.0-py39h089d6f7_0
 pandoc             conda-forge/osx-64::pandoc-2.11.3.1-h35c211d_0
 pandocfilters      conda-forge/noarch::pandocfilters-1.4.2-py_1
 parquet-cpp        conda-forge/noarch::parquet-cpp-1.5.1-2
 parso              conda-forge/noarch::parso-0.8.1-pyhd8ed1ab_0
 pexpect            conda-forge/noarch::pexpect-4.8.0-pyh9f0ad1d_2
 pickleshare        conda-forge/noarch::pickleshare-0.7.5-py_1003
 pillow             conda-forge/osx-64::pillow-8.0.1-py39h38d7768_0
 prometheus_client  conda-forge/noarch::prometheus_client-0.9.0-pyhd3deb0d_0
 prompt-toolkit     conda-forge/noarch::prompt-toolkit-3.0.8-pyha770c72_0
 protobuf           conda-forge/osx-64::protobuf-3.14.0-py39h81cd7d3_0
 ptyprocess         conda-forge/noarch::ptyprocess-0.6.0-py_1001
 pyarrow            conda-forge/osx-64::pyarrow-2.0.0-py39hc80f86d_9_cpu
 pycparser          conda-forge/noarch::pycparser-2.20-pyh9f0ad1d_2
 pydeck             conda-forge/noarch::pydeck-0.5.0-pyh9f0ad1d_0
 pygments           conda-forge/noarch::pygments-2.7.3-pyhd8ed1ab_0
 pyopenssl          conda-forge/noarch::pyopenssl-20.0.1-pyhd8ed1ab_0
 pyparsing          conda-forge/noarch::pyparsing-2.4.7-pyh9f0ad1d_0
 pyrsistent         conda-forge/osx-64::pyrsistent-0.17.3-py39h5a22ff9_1
 pysocks            conda-forge/osx-64::pysocks-1.7.1-py39h2c36a5b_2
 python-dateutil    conda-forge/noarch::python-dateutil-2.8.1-py_0
 python_abi         conda-forge/osx-64::python_abi-3.9-1_cp39
 pytz               conda-forge/noarch::pytz-2020.5-pyhd8ed1ab_0
 pyyaml             conda-forge/osx-64::pyyaml-5.3.1-py39h66d5b7b_1
 pyzmq              conda-forge/osx-64::pyzmq-20.0.0-py39h07c395c_1
 re2                conda-forge/osx-64::re2-2020.11.01-h2e338ed_0
 requests           conda-forge/noarch::requests-2.25.1-pyhd3deb0d_0
 s3transfer         conda-forge/noarch::s3transfer-0.3.3-pyhd8ed1ab_5
 send2trash         conda-forge/noarch::send2trash-1.5.0-py_0
 six                conda-forge/noarch::six-1.15.0-pyh9f0ad1d_0
 smmap              conda-forge/noarch::smmap-3.0.4-pyh9f0ad1d_0
 snappy             conda-forge/osx-64::snappy-1.1.8-hb1e8313_3
 streamlit          conda-forge/noarch::streamlit-0.73.1-pyhd8ed1ab_0
 terminado          conda-forge/osx-64::terminado-0.9.1-py39h6e9494a_1
 testpath           conda-forge/noarch::testpath-0.4.4-py_0
 toml               conda-forge/noarch::toml-0.10.2-pyhd8ed1ab_0
 toolz              conda-forge/noarch::toolz-0.11.1-py_0
 tornado            conda-forge/osx-64::tornado-6.1-py39h5a22ff9_0
 traitlets          conda-forge/noarch::traitlets-5.0.5-py_0
 tzlocal            conda-forge/noarch::tzlocal-2.1-pyh9f0ad1d_0
 urllib3            conda-forge/noarch::urllib3-1.26.2-pyhd8ed1ab_0
 validators         conda-forge/noarch::validators-0.18.2-pyhd3deb0d_0
 watchdog           conda-forge/osx-64::watchdog-1.0.2-py39hcbf5805_0
 wcwidth            conda-forge/noarch::wcwidth-0.2.5-pyh9f0ad1d_2
 webencodings       conda-forge/noarch::webencodings-0.5.1-py_1
 widgetsnbextension conda-forge/osx-64::widgetsnbextension-3.5.1-py39h6e9494a_4
 yaml               conda-forge/osx-64::yaml-0.2.5-haf1e3a3_0
 zeromq             conda-forge/osx-64::zeromq-4.3.3-h74dc148_3
 zipp               conda-forge/noarch::zipp-3.4.0-py_0
 zstd               conda-forge/osx-64::zstd-1.4.5-h289c70a_2

The following packages will be UPDATED:

 libcxx                         pkgs/main::libcxx-10.0.0-1 --> conda-forge::libcxx-11.0.0-h4c3b8ed_1

The following packages will be SUPERSEDED by a higher-priority channel:

 ca-certificates    pkgs/main::ca-certificates-2020.12.8-~ --> conda-forge::ca-certificates-2020.12.5-h033912b_0
 certifi            pkgs/main::certifi-2020.12.5-py39hecd~ --> conda-forge::certifi-2020.12.5-py39h6e9494a_0
 openssl              pkgs/main::openssl-1.1.1i-h9ed2024_0 --> conda-forge::openssl-1.1.1i-h35c211d_0


Proceed ([y]/n)? y 


Downloading and Extracting Packages
brotli-1.0.9         | 422 KB    | ####################################################################################### | 100% 
libcurl-7.71.1       | 297 KB    | ####################################################################################### | 100% 
smmap-3.0.4          | 22 KB     | ####################################################################################### | 100% 
orc-1.6.6            | 391 KB    | ####################################################################################### | 100% 
aws-c-event-stream-0 | 21 KB     | ####################################################################################### | 100% 
s3transfer-0.3.3     | 51 KB     | ####################################################################################### | 100% 
wcwidth-0.2.5        | 33 KB     | ####################################################################################### | 100% 
nbformat-5.0.8       | 100 KB    | ####################################################################################### | 100% 
prompt-toolkit-3.0.8 | 237 KB    | ####################################################################################### | 100% 
base58-2.0.1         | 7 KB      | ####################################################################################### | 100% 
liblapack-3.9.0      | 11 KB     | ####################################################################################### | 100% 
notebook-6.1.6       | 6.3 MB    | ####################################################################################### | 100% 
importlib-metadata-3 | 20 KB     | ####################################################################################### | 100% 
pydeck-0.5.0         | 3.6 MB    | ####################################################################################### | 100% 
nbclient-0.5.1       | 60 KB     | ####################################################################################### | 100% 
async_generator-1.10 | 18 KB     | ####################################################################################### | 100% 
blinker-1.4          | 13 KB     | ####################################################################################### | 100% 
libevent-2.1.10      | 1.0 MB    | ####################################################################################### | 100% 
nbconvert-6.0.7      | 530 KB    | ####################################################################################### | 100% 
bzip2-1.0.8          | 155 KB    | ####################################################################################### | 100% 
cffi-1.14.4          | 219 KB    | ####################################################################################### | 100% 
jupyter_client-6.1.7 | 76 KB     | ####################################################################################### | 100% 
backcall-0.2.0       | 13 KB     | ####################################################################################### | 100% 
ipython-7.19.0       | 1.1 MB    | ####################################################################################### | 100% 
decorator-4.4.2      | 11 KB     | ####################################################################################### | 100% 
ptyprocess-0.6.0     | 15 KB     | ####################################################################################### | 100% 
mistune-0.8.4        | 54 KB     | ####################################################################################### | 100% 
abseil-cpp-20200923. | 886 KB    | ####################################################################################### | 100% 
watchdog-1.0.2       | 97 KB     | ####################################################################################### | 100% 
jsonschema-3.2.0     | 45 KB     | ####################################################################################### | 100% 
ipykernel-5.4.2      | 166 KB    | ####################################################################################### | 100% 
urllib3-1.26.2       | 98 KB     | ####################################################################################### | 100% 
ipywidgets-7.6.2     | 101 KB    | ####################################################################################### | 100% 
snappy-1.1.8         | 29 KB     | ####################################################################################### | 100% 
parso-0.8.1          | 67 KB     | ####################################################################################### | 100% 
pandoc-2.11.3.1      | 14.3 MB   | ####################################################################################### | 100% 
toml-0.10.2          | 18 KB     | ####################################################################################### | 100% 
validators-0.18.2    | 18 KB     | ####################################################################################### | 100% 
astor-0.8.1          | 25 KB     | ####################################################################################### | 100% 
terminado-0.9.1      | 25 KB     | ####################################################################################### | 100% 
pyrsistent-0.17.3    | 87 KB     | ####################################################################################### | 100% 
re2-2020.11.01       | 190 KB    | ####################################################################################### | 100% 
pyopenssl-20.0.1     | 48 KB     | ####################################################################################### | 100% 
appnope-0.1.2        | 10 KB     | ####################################################################################### | 100% 
libgfortran-5.0.0    | 19 KB     | ####################################################################################### | 100% 
click-7.1.2          | 64 KB     | ####################################################################################### | 100% 
pyparsing-2.4.7      | 60 KB     | ####################################################################################### | 100% 
tzlocal-2.1          | 18 KB     | ####################################################################################### | 100% 
markupsafe-1.1.1     | 25 KB     | ####################################################################################### | 100% 
numpy-1.19.4         | 5.1 MB    | ####################################################################################### | 100% 
send2trash-1.5.0     | 12 KB     | ####################################################################################### | 100% 
cachetools-4.1.1     | 12 KB     | ####################################################################################### | 100% 
packaging-20.8       | 34 KB     | ####################################################################################### | 100% 
glog-0.4.0           | 89 KB     | ####################################################################################### | 100% 
gitdb-4.0.5          | 46 KB     | ####################################################################################### | 100% 
nest-asyncio-1.4.3   | 9 KB      | ####################################################################################### | 100% 
pyzmq-20.0.0         | 466 KB    | ####################################################################################### | 100% 
jinja2-2.11.2        | 93 KB     | ####################################################################################### | 100% 
libcblas-3.9.0       | 11 KB     | ####################################################################################### | 100% 
c-ares-1.17.1        | 95 KB     | ####################################################################################### | 100% 
pycparser-2.20       | 94 KB     | ####################################################################################### | 100% 
jupyterlab_widgets-1 | 130 KB    | ####################################################################################### | 100% 
boto3-1.16.45        | 70 KB     | ####################################################################################### | 100% 
entrypoints-0.3      | 8 KB      | ####################################################################################### | 100% 
pexpect-4.8.0        | 47 KB     | ####################################################################################### | 100% 
traitlets-5.0.5      | 81 KB     | ####################################################################################### | 100% 
krb5-1.17.2          | 1.2 MB    | ####################################################################################### | 100% 
libsodium-1.0.18     | 516 KB    | ####################################################################################### | 100% 
argh-0.26.2          | 26 KB     | ####################################################################################### | 100% 
libev-4.33           | 99 KB     | ####################################################################################### | 100% 
gitpython-3.1.11     | 110 KB    | ####################################################################################### | 100% 
arrow-cpp-2.0.0      | 15.9 MB   | ####################################################################################### | 100% 
bleach-3.2.1         | 111 KB    | ####################################################################################### | 100% 
protobuf-3.14.0      | 326 KB    | ####################################################################################### | 100% 
ipython_genutils-0.2 | 21 KB     | ####################################################################################### | 100% 
jupyter_core-4.7.0   | 72 KB     | ####################################################################################### | 100% 
libopenblas-0.3.12   | 8.8 MB    | ####################################################################################### | 100% 
chardet-4.0.0        | 198 KB    | ####################################################################################### | 100% 
python-dateutil-2.8. | 220 KB    | ####################################################################################### | 100% 
yaml-0.2.5           | 81 KB     | ####################################################################################### | 100% 
testpath-0.4.4       | 85 KB     | ####################################################################################### | 100% 
jupyterlab_pygments- | 8 KB      | ####################################################################################### | 100% 
jedi-0.18.0          | 922 KB    | ####################################################################################### | 100% 
cryptography-3.3.1   | 614 KB    | ####################################################################################### | 100% 
streamlit-0.73.1     | 6.0 MB    | ####################################################################################### | 100% 
gflags-2.2.2         | 92 KB     | ####################################################################################### | 100% 
zipp-3.4.0           | 11 KB     | ####################################################################################### | 100% 
brotlipy-0.7.0       | 357 KB    | ####################################################################################### | 100% 
pysocks-1.7.1        | 27 KB     | ####################################################################################### | 100% 
libthrift-0.13.0     | 351 KB    | ####################################################################################### | 100% 
prometheus_client-0. | 44 KB     | ####################################################################################### | 100% 
libutf8proc-2.6.1    | 93 KB     | ####################################################################################### | 100% 
aws-checksums-0.1.10 | 48 KB     | ####################################################################################### | 100% 
importlib_metadata-3 | 3 KB      | ####################################################################################### | 100% 
tornado-6.1          | 645 KB    | ####################################################################################### | 100% 
toolz-0.11.1         | 46 KB     | ####################################################################################### | 100% 
attrs-20.3.0         | 41 KB     | ####################################################################################### | 100% 
jmespath-0.10.0      | 21 KB     | ####################################################################################### | 100% 
backports.functools_ | 8 KB      | ####################################################################################### | 100% 
pytz-2020.5          | 244 KB    | ####################################################################################### | 100% 
libssh2-1.9.0        | 214 KB    | ####################################################################################### | 100% 
requests-2.25.1      | 51 KB     | ####################################################################################### | 100% 
aws-c-common-0.4.59  | 142 KB    | ####################################################################################### | 100% 
libprotobuf-3.14.0   | 2.2 MB    | ####################################################################################### | 100% 
argon2-cffi-20.1.0   | 45 KB     | ####################################################################################### | 100% 
zeromq-4.3.3         | 249 KB    | ####################################################################################### | 100% 
idna-2.10            | 52 KB     | ####################################################################################### | 100% 
parquet-cpp-1.5.1    | 3 KB      | ####################################################################################### | 100% 
libgfortran5-9.3.0   | 1.7 MB    | ####################################################################################### | 100% 
six-1.15.0           | 14 KB     | ####################################################################################### | 100% 
pandas-1.2.0         | 10.7 MB   | ####################################################################################### | 100% 
backports-1.0        | 4 KB      | ####################################################################################### | 100% 
pickleshare-0.7.5    | 9 KB      | ####################################################################################### | 100% 
pandocfilters-1.4.2  | 9 KB      | ####################################################################################### | 100% 
pyyaml-5.3.1         | 180 KB    | ####################################################################################### | 100% 
pyarrow-2.0.0        | 2.2 MB    | ####################################################################################### | 100% 
llvm-openmp-11.0.0   | 268 KB    | ####################################################################################### | 100% 
webencodings-0.5.1   | 12 KB     | ####################################################################################### | 100% 
libnghttp2-1.41.0    | 831 KB    | ####################################################################################### | 100% 
widgetsnbextension-3 | 1.8 MB    | ####################################################################################### | 100% 
altair-4.1.0         | 614 KB    | ####################################################################################### | 100% 
grpc-cpp-1.33.2      | 2.5 MB    | ####################################################################################### | 100% 
defusedxml-0.6.0     | 22 KB     | ####################################################################################### | 100% 
botocore-1.19.45     | 4.4 MB    | ####################################################################################### | 100% 
aws-sdk-cpp-1.8.70   | 1.9 MB    | ####################################################################################### | 100% 
libblas-3.9.0        | 11 KB     | ####################################################################################### | 100% 
Preparing transaction: done
Verifying transaction: done
Executing transaction: \ Enabling notebook extension jupyter-js-widgets/extension...
     - Validating: OK

done

何やら、ものすごい量のパッケージがインストールされます!
これは期待大ですね!

・ハローワールド

streamlit コマンド

が使えるようになるらしいので、使ってみます。

streamlit hello

結果

👋 Welcome to Streamlit!

 If you're one of our development partners or you're interested in getting
 personal technical support or Streamlit updates, please enter your email
 address below. Otherwise, you may leave the field blank.

 Email: 

 Privacy Policy:
 As an open source project, we collect usage statistics. We cannot see and do
 not store information contained in Streamlit apps. You can find out more by
 reading our privacy policy at: https://streamlit.io/privacy-policy

 If you'd like to opt out of usage statistics, add the following to
 ~/.streamlit/config.toml, creating that file if necessary:

   [browser]
   gatherUsageStats = false


 Welcome to Streamlit. Check out our demo in your browser.

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

 Ready to create your own Python apps super quickly?
 Head over to https://docs.streamlit.io

 May you create awesome apps!

途中でEメール登録の有無を聞かれますが、今回はblankのままエンター。

そして、ブラウザが起動します。

スクリーンショット 2020-12-30 22.22.58

ジャジャーン!!!
かっこいい!!!
簡単!!!

これは、まじでデータサイエンティストにとっては、フロント書かずに済むので、ありがたいかもしれません!

いくつかデモアプリを選択して見てみましょう。

スクリーンショット 2020-12-30 23.18.55

おおお!!!
すごい!!!
アニメーションが綺麗に表示されています。
さらに、左のバーでインタラクティブに変化させることができる。
これは、本当にいいツールになりそうですね!!

・Numpyで乱数を生成しテーブル表示

チュートリアルをとりあえず進めます。

Pythonファイルを作成し、編集していきましょう。

touch df.py
vim df.py
import streamlit as st
import numpy as np

dataframe = np.random.randn(10, 20)
st.dataframe(dataframe)

一応ちょっと説明を。

touch ファイル名

touch(トーチ)コマンドは、ファイルの作成日時やアクセス日時を変更するコマンドです。
引数に指定されたファイルがない場合は、ファイルが作成されます。
そのため、ファイル作成でよく使用されるコマンドです。

vim ファイル名

vim(ヴィム)コマンドは、ファイルエディタを開き、指定されたファイルを編集することができます。
Macでは通常インストールされているコマンドです。
もちろん、他のエディタで作成、編集をしてもオッケーです。

import streamlit as st
import numpy as np

importコマンドは、ライブラリを読み込むコマンドです。
Pythonには、
1. 読み込み済みライブラリ
2. 用意されているが読み込む必要があるライブラリ
3. 用意されていないライブラリ
があります。
streamlitは、3です。
そのため、インストールとインポートをしないと使用できません。
import ライブラリ名 as ほにゃらら
の as は、「このファイルでは、このライブラリを、こう呼びます」と宣言しています。
短縮して書ける、というわけですね。
「import した streamlit を、このファイル上では、 st と呼びます」と読み下してもオッケーです。

dataframe = np.random.randn(10, 20)
st.dataframe(dataframe)

1行目で、Numpyのrandomのrandnメソッドを利用して、乱数を生成しています。
その生成された乱数を、dataframe という変数に格納しています。
2行目で、Numpyで生成した乱数を格納した dataframe 変数を、streamlitのdataframeメソッドに読み込んでいます。
おそらく、ですが、streamlitのdataframeメソッドは、データフレームを読み込むと、いい感じに表示してくれる、という便利な機能を提供してくれています。

・実行

streamlit run df.py

実行されます。

スクリーンショット 2020-12-30 23.16.10

出ました!
こんなに簡単にデータフレームが表示されるなんて、感動です。。

・他にも試してみる

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

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

st.dataframe(dataframe.style.highlight_max(axis=0))

スクリーンショット 2020-12-30 23.21.55

今度は pandas が使われています。
最終行で指定されているのは、列で一番数値が大きいセルがハイライトされる、というものです。
便利!

import streamlit as st
x = st.slider('x')
st.write(x, 'squared is', x * x)

スクリーンショット 2020-12-30 23.26.37

スライダーの実装もお手軽!
スライダーの値も簡単に取得でき、反映ができます!

▼結果

正直、驚きです!

こんなに簡単にウィジェット実装ができてしまうなんて。。

・機械学習のモデルを作って、入力変数にUIをつける。
・データの可視化を簡単に行う。

このようなケースにうってつけですね!

2021年は、streamlitを積極的に使ってアプリ開発をしていきたいと思います。
このnoteでも、引き続きチュートリアル学習を進めていきたいと思います。

この記事がお役に立ったら、ぜひフォローと好きをお願いしますね!

この記事が気に入ったらサポートをしてみませんか?