🎈

#30DaysOfStreamlit をやってみた

2022/09/02に公開

🎈 Streamlit とは?

Python だけ でアプリケーションを作成するためのフレームワークです。
https://streamlit.io/
従来データを扱う Web アプリを作成しようとすると、

  • フロントの言語(HTML, JS およびライブラリ群)
  • バックエンドの言語(例えば Java, データアクセスに SQL)

のように様々な言語使う必要がありましたが、Python のみで実現できます。なのでアプリ作成の敷居がだいぶ低くなるのではないかと思います。
また Python だと Pandas をはじめとするデータをハンドリングするライブラリはもちろん、データサイエンス・機械学習などのライブラリも充実しています。
なので、

  • プロトタイピングアプリ
  • データとインタラクションするアプリ
  • データサイエンス・機械学習から得られたインサイトを見せるアプリ

みたいなユースケースが多いのではないかと思います。
動いているものを見たい!という方は公式サイトの Gallery からご覧になれますよ。
https://streamlit.io/gallery

📅 30DaysOfStreamlit とは?

そんな便利そうな Streamlit を初めてみよう!と思った際にいい感じの教材としてあったのが #30DaysOfStreamlit というものです。
https://30days.streamlitapp.com/
実はこのリンク先自体も Streamlit で構築されています。

どんな内容がある?

公式ブログによると、3 つのセクションに分かれて構成されています。

  1. 環境のセットアップから Hello World して、デプロイするまでの初級編
  2. Streamlit の基本的な要素を手を動かして理解する中級編
  3. 効率よくデータハンドリングしたり機械学習的なトピックもカバーする上級編

https://blog.streamlit.io/30-days-of-streamlit/
環境のセットアップから始めることができるので、ヤル気🔥さえ持ち合わせれば誰でも始めることができます。

✅ やってみた感想

実際最後までやってみましたが、"30Days" の通り 1 月弱で完走することができました🏃
https://twitter.com/tmasuo_/status/1556433080000266240
https://twitter.com/tmasuo_/status/1564761102365274112
1 日のタスクはそこまで重くなく、まとめて 2-3 日分をさばいてしまうこともあれば、Day 29 はガッツリアプリを作成するのでしっかり 1 日かかったりとまちまちです。
また、サンプルコードおよびその解説がしっかりあり、意味を咀嚼しながらすすめることができるため、純粋な Python の習熟具合がネックにはならないと思います。
「1 番難しい部分はなにか?」 という点については、ローカルの開発環境を設定したりする部分になるのではないかなと思います。(IDE などはお好きなものでどうぞ、というスタンスなので)
ということもあり、躓くこともあるのでぜひ 1 人ではなくみんなで進めるのがオススメです。
また遊びゴロロもあり、Wow な仕掛けもあるのでその部分はやってみてのお楽しみに🎈

👨‍💻 今後やってみたいこと

個人的な Streamlit を勉強し初めたキッカケは Streamlit と Snowflake の統合が発表されたことでした。Snowflake Summit 2022 で発表された内容なのですが、詳細はこちらをご覧ください。
YouTubeのvideoIDが不正ですhttps://youtu.be/5O9TbwjXRoY?t=4136
1 番難しい環境部分が Snowflake 上で開発〜デプロイできることで解決してしまう可能性があり、とても楽しみです。そしてそのアプリが Snowflake Marketplace を通じてシェアできる Roadmap も示されており、こちらも未来を感じますね。
ただ、統合はこれからの話で、いまできることは Python 経由で Snowflake にデータアクセスしてアプリを作成する、といったものになります。
これらは今後触ってみたいなと思っております。
https://blog.streamlit.io/make-dynamic-filters-in-streamlit-and-show-their-effects-on-the-original-dataset/
https://quickstarts.snowflake.com/guide/data_apps_summit_lab/index.html?index=..%2F..index#0
https://quickstarts.snowflake.com/guide/getting_started_with_snowpark_for_python_streamlit/index.html?index=..%2F..index#0

また、#30DaysOfStreamlit で触れていない便利機能もわんさかあるようなのでそのあたりもキャッチアップしてみたいなと思います。

Happy Streamlit-ing! 🎈

Discussion