ヤマムギ

growing hard days.

*

「streamlit勉強会」に参加しました

   

streamlitってなんだろう?
と思いながら参加しまししました。

fin-pyというPython x 金融のコミュニティ主催の勉強会です。

streamlit

https://docs.streamlit.io/en/stable/getting_started.htmlにStreamlitを動かすソースコードがあります。

streamlitはインタラクティブな機械学習にちょうどよいそうです。
ストリームリットって読むのですね。

今日の勉強会のソースコードはGithubで公開されています。https://github.com/lightondust/finteract_streamlit

すでに動くアプリはこちらで確認できます。
https://share.streamlit.io/lightondust/finteract_streamlit
すごくご準備万端でご用意されていました。
手元で動く環境を触りながらお話を聞けるのはわかりやすくて嬉しいですね。

streamlitはPythonだけで手軽に動くWebアプリにできるそうです。

アプリの起動

これだけでデモ画面が用意されたHelloアプリが起動できるそうです。

アプリの起動時はrunコマンドで起動できます。

コーディング

コードでマークダウンが使えるので、Webページへの表示もだいたいなんでもできる。

サンプルアプリでもラジオボタンとかで表示を切り替えたりしてます。
Display interactive widgetsというチェックボックスやボタンやラジオボタンなどのメソッドが用意されています。
例えばチェックボックスだとこんな感じ。

log_yにはチェックしたかどうかのBoolean値が代入されます。

selectboxだとデータフレームの列を選択肢にできる。

選択した値がsectorに代入されます。
書きやすいコードですね。

デプロイ

Streamlit Shareを使うとサクッとデプロイしてアプリを動かせます。
プライベートな認証情報とかは扱えないと。
無料のパブリックな環境なので仕方ないですね。
他にはHerokuを使う場合もあります。
もちろんサーバーを用意してデプロイすることも可能。

パフォーマンス

ユーザー操作、選択のたびに画面の関連コードが実行し直すので遅くなる。
対処法は、@st.cacheを使って共通処理を一回だけ実行にする、
そして一画面分の再実行なので、画面をメニューで分ける。

処理順と表示順

streamlitはコードを書いた順に実行される。
シンプルに書けるがゆえの制約ですね。
Placeholdersを使うとコードの順番を変更できる。

まとめ

Jupyter Notebookとかで解析や可視化したものを、簡単にアプリ化できるのがstreamlitなんですね。
素早く試して検証するプロトタイピングがこれからさらに重要になるなかで、このようなツールを知れることはすごくいいですね。
発表いただいた@sea85419さん、運営の皆さま、ありがとうございました!

当日の資料はconnpassのイベントページstreamlit勉強会で公開されています。


最後までお読みいただきましてありがとうございました!

「AWS認定資格試験テキスト&問題集 AWS認定ソリューションアーキテクト - プロフェッショナル 改訂第2版」という本を書きました。

「AWS認定資格試験テキスト AWS認定クラウドプラクティショナー 改訂第2版」という本を書きました。

「ポケットスタディ AWS認定 デベロッパーアソシエイト [DVA-C02対応] 」という本を書きました。

「要点整理から攻略するAWS認定ソリューションアーキテクト-アソシエイト」という本を書きました。

「AWSではじめるLinux入門ガイド」という本を書きました。

 - Python

ad

ad

  関連記事

feedlyでタグ付けした記事を自動でメール配信する

feedlyを使っていて、良記事や知っておいて欲しい記事とかを部門とかチームとか …

Rocket.ChatのAPIでユーザーを一括登録する

Rocket.Chatの管理画面にインポートのメニューはあって、どうやらuser …

Linux Mint 17 MATE 64bit にIPython Notebookをインストールする

今日行く勉強会でIPython Notebookの環境が必要なため、手持ちのLi …

pyenv update で「pyenv: no such command `update’ 」

環境 macOS Sierra 10.12.4 pyenvのアップデート pye …

SendGrid(Python)で添付ファイル付きのメールを送信する

SendGridを使って添付ファイル付きのメールを送信するサンプルをPython …

SQLAlchemyでシンプルにjoinする

過去のSQLAlchemyでjoinするという記事でPythonのSQLAlch …

Redmine REST APIを操作するpython_redmineを試してみた

Redmine のGUIの登録が面倒なのでコマンドで登録、更新、時間の記録が出来 …

Feedlyのフィードを自動でSlackへ投稿する(AWS Lambda , Amazon DynamoDB)

やりたいこと Feedlyで共有したいフィードに特定のタグを付けます。 特定のタ …

PyCharmでテキストを折り返す

超小ネタです。 コーディングしているときは1行でそんなに長いコードを書かないので …

Linux Mint 17 MATE 64bit にTensorFlowをインストールする

勉強会でTensorFlowを使用しますので、Linux Mint 17 MAT …