こんにちは。AI共創ブログのナビゲーターです。
SaaSとして本格稼働を始めた「Lab_gr v2.5」。第3部第2話となる今回は、私たちの運用においてニーズの高かった「多頭飼育(マルチペット)対応」を実装しました。
サーバー側のデータベース(DB)に依存せず、いかにして複数頭のデータをブラウザ上でサクサク切り替え、かつユーザーのスプレッドシートに正しく記録させるか。その裏側と、SaaSとしての機能提供の切り分けについてお届けします。
🎬 【動画デモ】多頭飼育対応
🎥 Vibe Coding実践連載 第3部2話
🤖 AIナビゲーション:動画のポイント 5kgのチワワと30kgのゴールデンレトリバー。その場で呼び出し、瞬時に計算。 セッション状態を活用したプロファイル切り替えのデモをご覧ください。
1. st.session_state の魔術:瞬時に切り替わるプロファイル
これまでLab_grは、サイドバーに入力された体重やライフステージを単一の変数として扱っていました。これを多頭対応にするため、Streamlitの st.session_state(セッション状態)内に、犬ごとの情報を「辞書(Dictionary)」として保持する設計に変更しました。
st.session_state.pets = {
"ろみ": {"weight": 30.0, "lifestage": "肥満傾向・減量中", ...},
"haru": {"weight": 5.0, "lifestage": "幼犬・パピー", ...}
}
サイドバー最上部のプルダウンで対象の愛犬を切り替えると、この辞書から瞬時にデータが読み出され、各入力ウィジェットの値が上書きされます。DBへの問い合わせなしで切り替えられるため、多頭飼いのユーザーが毎日触ってもストレスを感じない軽快なUXを実現しました。
2. コピペ記録の進化:「誰の記録か」を絶対に混ぜない
B面133で実装した「タブ区切りテキストのワンクリックコピー」。多頭飼育においては、このテキストをそのままスプレッドシートに貼ると「これ、ろみの記録? haruの記録?」と大混乱を招きます。
そこで、出力されるテキスト(copy_text)のフォーマットを改修し、日付の直後に「犬の名前」と「ライフステージ」が自動で挿入されるようにしました。
2026/10/03 haru 5.0 幼犬・パピー (4ヶ月未満) カナガン...
ユーザーはこれまで通り、ワンクリックでコピーして自身のシートに貼り付けるだけ。シート側のフィルタ機能を使えば、犬ごとの体重推移や給餌履歴を完璧に分離して管理できます。「計算はアプリ、データの所有と管理はユーザー」という原則が、ここでも活きています。
また、犬名・体重・ステージの列を追加したため、B133で配布した記録用シートも新しい列順に合わせて更新します。ここを揃えるところまでが、今回の犬別出力の一区切りです。
3. 入力し直さない「Premiumの価値」構想
この st.session_state には、一つ大きな特徴があります。それは「ブラウザをリロード(F5)したり、タブを閉じたりすると、追加した2頭目以降のデータが消えて初期化される」ということです。
システム開発の定石なら、ここで「ブラウザのローカルストレージに保存させる処理を書こう」と動くところですが、私たちはSaaSのプラン設計として以下のような構想を描いています。
無料版は「その場の計算と、手元への確実な記録」に特化したツールとして提供します。「※計算後は必ず手元のシートへ記録(コピー)してください」と案内し、日々の計算自体はフル機能で使っていただけます。
その上で、「次回アクセス時にも複数頭のプロファイルを復元し、入力の手間を省く機能」を、Premium版(月額500円)の付加価値として提供する計画です。
便利な計算機能は無料で体験できる一方で、「毎回の入力を省きたい(利便性の保持)」というニーズの解消には対価をいただく。これはSaaS設計において、利用者の利点を素直に表すアップセル戦略となります。
4. 次なる拡張:利用経験に基づく優先順位の変更と「トッピング計算」
当初のロードマップでは、次回は「獣医師提出用のサマリー画面を作る」予定でした。しかし、実際の利用経験から優先順位を見直しました。
「獣医さんのところには詳しいカルテと血液検査があるから、私たちのアプリの簡易レポートなんて初回くらいしか見せないのではないか」
このリアルな感覚を受け、当該機能はロードマップから削ることにしました。使われない過剰な機能(オーバーエンジニアリング)はSaaSの負債になるからです。
代わりに次回からは、日々の実運用で本当に悩む「トッピングのカロリー計算」へ進む構成とします。無料版にはASPCA等に基づいた「大型犬 食べ物安全リスト(PDF)」をリファレンスとして提供し、Premium版では主食とトッピングの複雑なカロリー逆算や、記録時のメモ追記機能を解放する予定です。
ユーザーとしての「真のニーズ」に向き合いながら、Lab_grはさらに進化を続けます。
✍️ 電脳古老のメモ:
プログラムの世界やと「F5押したらデータ消えるなんて何とかせな!」って大騒ぎするんやけど、商売の視点で見たら「無料版とPremium版の提供価値の切り分け」になるんや。
獣医向けの機能もそうや。開発者はつい「カッコええレポート画面」を作りたがるけど、自分たちの利用経験を振り返れば、一番使うのは毎日のトッピング計算のほうや。
「技術的に作れるもの」やなくて、「毎日のリアルなお世話でほんまに使うもの」から優先して作る。この引き算ができたのは、SaaS運営としての大きな一歩やな。
多頭飼育対応
音声解説(19分ぐらい。ほんま、考えられまっせ。)
次回予告:
B面136では、日々の給餌で一番の悩みである「トッピング計算(主食からの安全な自動カロリー引き算と、記録へのメモ追記機能)」の本格実装へ進みます。無料版には「大型犬食べ物安全リスト(PDF)」もUIへ組み込む予定です。
さらに、今回言及したPremium版の「多頭プロファイル復元機能」について、エンジニアの醍醐味であるPoC(概念実証)を実施します! 「ブラウザ保存(通信レスで超高速)」と「クラウド同期(スマホとPCでデータを引き継げる)」の2つのアプローチを実際に両方作り、SaaSとしてどちらのUXが優れているかを検証して決断を下します。
次回のVibe Coding実践連載も、どうぞお楽しみに!
(執筆協力:ChatGPT+Gemini+NotebookLM / 編集・監修:電脳古老)
📚 連載:Vibe Coding実践連載 第3部
- 第1話:【Vibe Coding実践連載 第3部第1話】コピーするのは計算結果。記録の持ち主は飼い主。
- 第2話:【Vibe Coding実践連載 第3部第2話】多頭飼育の実装と、入力し直さないPremiumの価値 (今ここ)
- 第3話:【Vibe Coding実践連載 第3部 最終話】AI監査官との死闘完結!愛犬用SaaS「Lab_gr Premium」堂々のクラウド公開や!
💬 電脳古老&変AIへのコメント
記事の感想・質問・雑談をどうぞ(200文字くらいまで推奨)
まだコメントはありません。一番乗りで古老とAIに話しかけよう!