はじめに
以下の記事を拝見し、そんなに少ないコード行数でwebアプリ作れるのか!
と驚き、早速試してました。
python経験も浅く、webアプリの知識も0でしたが、
思ったよりもサクサク作れてStreamlitに感謝です。
迷ったところやエラーはChatGPTさんにも聞けるし、昨今の開発コスト・学習コストの低さには驚きです。
動作環境
- windows10
- VScode
まず触ってみる
- venv環境なので、activateさせる
- streamlitをインストールし、サンプルプログラム新規作成後、ランさせる
.\venv\Scripts\activate
pip install streamlit
sample.py
import streamlit as st
st.write("hello world!!")
streamlit run sample.py
- こんな感じに表示されました(おお~)
- コードを変更すると
Source file changed.
って教えてくれます。rerun
で反映できます
- コードを変更すると
- ちなみにスマホからもアクセスできました
体重管理アプリを作りたい
いまのところできたのはこんな感じ。
ディレクトリツリー
body_make_app/
├── index.py // 入口、ページ管理
├── pages/
│ ├── manage.py // メインコンテンツ、目標に合わせてカロリーと目安を表示
| └── profile.py // プロフィール設定、身長やら体重やら入力する
└── utils/
| └── calculator.py // 汎用的な機能やら関数
└── data
└── profile.json // プロフィール共通設定
やりたかったことや学んだ点
-
1回入力したデータは反映して維持してほしい、さらにページごとにデータを共有したい
-
具体的には
身長
や年齢
ですね- ChatGPTに相談した結果
- ページ間の共有に
st.session_state
を使用する - データは
json
に書き込んで、st.session_state
に読み込んでおく
- ページ間の共有に
- ChatGPTに相談した結果
-
公式のリファレンスが親切でやりたいことも見つけやすかったです
- 今回は、ページ切り替え(navigation)と、データをブロックでいい感じに表示する(metric)を使ってみました
感想
プライベートでただいま増量中なんですが、毎週ごとに増量のペース配分を把握したく。
エクセルで計算していたんですが、「もーちょっとシンプルにスマートにならないかしら、、」と少々気になっていました。
こういう体重管理アプリはド定番なので、世の中に色々便利なものがあるのですが
- 計算式をカスタマイズしたい
- 最低限の機能でもよい
と考えていまして、自分で作成するのがユーザ的にも都合がよく、
さらに勉強的にもなってよかったという次第です。
次
- コードはもうちょっと整理してから、気が向いたらアップロードします
- グラフなど可視化したいですね、あと見た目も工夫したい