この記事は、求ム!Pythonを使ってAzureで開発する時のTips!【PR】日本マイクロソフト Advent Calendar 2020 の 5 日目です(後から追っかけで書いています)。
データサイエンティストのための最強のフロントエンド Streamlit を Azure にデプロイ!って話です。
What is Streamlit?
Streamlit は Python でサイトを構築できる OSS のフレームワークです。
Why Streamlit?
Streamlit にする理由は何があるんでしょうか? 最近流行りの React.js や Vue.js じゃダメなんでしょうか?
まったく、そんなことはありません!
むしろ、表現力や柔軟性などの要素を比べると React.js や Vue.js の方がずっと優れています。
じゃぁ、なぜ表現力や柔軟性などの要素で劣っている Streamlit を使うのか?というと、構築する人の適性からです。
React.js や Vue.js の場合、データサイエンティストが分析データをプロダクトに組み込むために必要となる以下のように作業コストがかなり高くなります。
- Python: データ分析にほぼ必須
- JavaScript(React.js や Vue.js): フロントエンドに分析データを組み込むのに必要
かといって、「分析データをプロダクトに組み込む」作業をエンジニアが代行するのは生産性の観点、コストパフォーマンスの観点、責任の観点からもいびつになってしまいます(*1)。
*1:とはいえ、「分析データをプロダクトに組み込む」に限らず、デザイナーの作った「デザイン(PDF、HTML)をプロダクトに組み込む」作業をエンジニアにやらせている東証一部上場企業はいくつもありますが…。
このデータサイエンティストにとっては高い作業コストを軽減させるために Streamlit は開発されました。
データ分析には Python を使うことが多いため、 Streamlit は Python さえあればフロントエンドを構築できるようになっています。
つまり、React.js や Vue.js を使った時に得られる表現力や柔軟性などをある程度妥協し、Python さえ分かっていれば構築できる作りになっているのです。
How to use Streamlit
インストールは以下で OK です。
$ pip install streamlit
詳しい使い方は公式のチュートリアルページがわかりやすいです。
以下のコマンドを実行すると、ローカルでデモアプリを立ち上げて、ブラウザで確認することができます。
$ streamlit hello
Streamlit はリモートリソースの実行もでき、以下のコマンドを実行すると、リモートリソースの実行ができます。
$ streamlit run https://raw.githubusercontent.com/streamlit/demo-self-driving/master/streamlit_app.py
Deploy to Azure VM
ここまでは手元のデータをローカルでさくっと確認するやり方でした。以下の手順で Azure VM にデプロイすることも可能です。
- Azure VM を立てる
- インスタンス内で、ローカルと同様に、streamlit をインストールする
- streamlit run [your_streamlit_app.py]
上記で、Azure VM にデプロイし、公開自体は可能となります。