誕生日お祝いアプリのバージョンアップ〜要件定義〜
ChatGPTと壁打ちしながらつくる要件定義
― 誕生日お祝いアプリのバージョンアップに向けて
歴史ブログの連載を終えて、しばらく「文章を書くモード」でAIエディターの Cursor(カーソル) を使っていました。言葉を磨きながら、資料を引用しながら、AIと一緒に原稿を育てていく作業はとても楽しかったです。
一方で、次に挑戦したいのは コードを書くほうの“AI活用”。しばらく遠ざかっていたアプリ開発を再開します。
その第一歩として、以前 Streamlit で作った 誕生日お祝いアプリ を、もう一度バージョンアップしてみることにしました。
歴史探訪とお祝いアプリの記事
ChatGPTが「相棒」になってしまった理由
今回の要件定義づくりは、Cursor で作ることもできたのですが、気づけば自然と ChatGPT に向かって話しかけていました。
というのも、これまで歴史ブログや技術メモ、アプリ開発の相談など、あらゆる作業をGPTに壁打ちしてきたおかげで、
過去の経緯を分かってくれている
こちらの癖や好みを理解してくれている
「それならこういう機能もありますよ」と自然に提案してくれる
そんな存在になってしまったからです。
Gemini や Claude も興味はあります。でも、長く積み上げた会話履歴や文脈を考えると、いまのところ私は ChatGPTにロックインされている心地よさのほうが勝っている、と感じています。
壁打ちしながら作った「要件定義」
今回の誕生日お祝いアプリの要件定義書は、ChatGPT と対話しながら作りました。
会話をしていると、GPT が 「こんな機能もあるとユーザーが喜びそうですね」
と提案してくれることがあります。
ただ、今回は Cursor のエージェントを使ってみることを重視したいので、“最小限のバージョンアップ”の内容とし、「将来拡張のアイデア」として温存しつつ、基本的には私が当初考えていた範囲で要件を整理しました。
完成した要件定義書は、
アプリの目的
基本的な動作
UI の流れ
保存しない情報
トーン&体験設計
といった内容を シンプルかつ実装をイメージしやすい形 でまとめています。
次は「AIエージェント」を使ってアプリ開発へ
ここから先は、この要件定義をもとにして、
Cursor の AI エージェント
ChatGPT の対話
GitHub + Streamlit Cloud の運用
を組み合わせながら、誕生日お祝いアプリのアップデートを進めていく予定です。
これまで歴史ブログで「文章 × AIエディター」を使ってきましたが、次は 「コード × AIエージェント」 の番です。
自分一人で作るよりもずっと早く、そして何より楽しく進むはずだと感じています。
おわりに:AIは“共同作業者”になった
かつては「AIを使ってみる」という感覚でしたが、最近はすっかり
“AIと一緒に作っていく”
という感覚に変わってきました。
特に要件定義のような 考えを言語化しながら整理する作業 は、AIと対話することで何倍もスムーズになります。
誕生日アプリの開発が進んだら、その体験も続編の記事としてまとめたいと思います。
要件定義書
# 🎂 誕生日お祝いアプリ「生まれてきてくれ、ありがとう」
## 要件定義書(v1.0)
## 1. アプリ概要
### 1.1 アプリ名
- アプリ名:**「生まれてきてくれ、ありがとう」**
### 1.2 アプリの目的
ユーザーが自分の誕生日を入力すると、
- **誕生日から今日まで生きてきた日数** を計算し、
- その日数を祝う **優しくて、ほのぼのしたお祝いメッセージ** を表示する。
このアプリを通じて、ユーザーが
> 「生きててよかったな」
> 「自分の人生も悪くないな」
と、少しでも幸せな気持ちになれることを目的とする。
## 2. 使用技術 / プラットフォーム
### 2.1 フレームワーク・実行環境
- フロントエンド・UI:**Streamlit**
- 実行環境:
- ローカル環境(開発・個人利用)
- Streamlit Cloud(デプロイ用)
- Python バージョン:3系
### 2.2 設定・秘密情報
- ローカル:`.env` に OpenAI API キーを保存
- Streamlit Cloud:Secrets Manager を使用
### 2.3 外部サービス
- メッセージ生成:OpenAI GPT-5
## 3. 機能要件
### 3.1 誕生日入力
- 誕生日(YYYY-MM-DD)を入力
- 入力後、日数計算+メッセージ生成
### 3.1.1 誕生日保存仕様
- **誕生日は保存しない**(将来拡張)
### 3.2 日数計算
- 日本時間(JST)で「今日」を取得して日数計算
### 3.3 誕生日当日の特別処理
- 誕生日一致時:年齢を計算し、特別メッセージ
### 3.4 GPT-5 メッセージ生成
- 基本トーン:優しい、ほのぼの
- 毎日違うメッセージを生成
- 似た表現の連続を避ける
### 3.5 UI・画面仕様
- タイトル、誕生日入力欄、ボタン、メッセージ表示エリア
## 4. 非機能要件
### 4.1 時差・日付管理
- 必ず日本時間で計算
### 4.2 エラー処理
- OpenAI API の障害時はユーザーに通知
### 4.3 セキュリティ
- API キーをコードに直書きしない
## 5. データ保存仕様
### 5.1 誕生日の保存
- 保存しない
### 5.2 メッセージ履歴の保存
- 保存しない
## 6. 将来拡張
- 誕生日保存
- メッセージトーン選択
- メッセージ履歴
- 多言語対応
