はじめに
以前こちらの記事で作ったアプリを、一ヶ月ほど実際に使ってみました。
ChatGPTで営業メールを要約 → DBに保存 → クエリで探せる仕組みを作ってみた
https://qiita.com/shrimpTail/items/530e8c54e14a048e9394
一ヶ月ってみて思った、「やっぱり保守って大事」
自分で作ったアプリ、自分で使ってみて思ったんですが……
ちょっと使いづらい!
いや、構想、設計はちゃんと考えたつもりだったんですが、運用して初めて気づく不便さってありますよね。
というわけで、リリース後一ヶ月、自分自身で使ってみて感じたこと、そして実際に行った改善をまとめておきます。
不便だったポイントと改善した内容
▶ クエリが流れすぎて何が起きてるのか分からん
処理のログを出すのは良いこと……なんですが、保存用SQLのクエリが全部表示されていて、もうわけが分からない。
INSERT INTO emails (...) VALUES (...);
INSERT INTO email_projects (...) VALUES (...);
-- (以下無限に続く)
改善:ENVでログ出力ON/OFF切り替え
envで、保存系のクエリ表示を抑制できるようにしました。
デフォルトでは表示しない、デバッグ時だけ有効化できるように。
▶ どのメールを保存してるのか分かりづらい
メールはAPIから順に取って保存してるんですが、
え?今のメール、どれ?どこ?
みたいなことが頻発。
クエリは流れるけど、処理対象が不明瞭という状態に。
改善:GmailのメッセージIDをログに表示
これで「どのメールか」がちゃんと特定できるようになりました。
今後、処理失敗の調査や個別再取得にも使えるので、一石二鳥。
▶ メールの整理がしたい
一覧画面を作る予定とはいえ、「これはチェック済み」「これは良かった」「これは微妙…」みたいにステータスをつけたい。
改善:emails テーブルに3つの状態カラムを追加
- is_checked: チェック済み
- is_good: 良さそう!
- is_bad: 微妙かも…
一覧画面を作る際にはこの3つでフィルタ・ソートが可能になります。
番外編:Claude Sonnet 4に裏切られた話
clineを本格的に使用した知見をためておきたいこともあり、vive codingすることを決意。
「まぁClaude Sonnet 4と一緒にvive codingすればいけるっしょ!」と思ったのが間違いでした。
最初はどんどん出来上がる成果物にAI驚き屋と化していましたが、
出てきたのは、いわゆる“クソコード”。
テストも破綻、構造も崩壊、コメントも意味不明。
最終的には。
8000行削除、2000行書き直し
という大規模リファクタを手動で実施しました。
(夜のテンションで「クソコードしかねぇじゃねぇか」と言って消したのを覚えてます)
保守はつらいけど、愛着はわいてくる
機能追加よりも、地味なところの手入れのほうが時間かかることもあります。
でも、毎日使うツールなら、「ちょっと便利」が積み重なるだけで気持ちよくなるのもまた事実。
今後は、一覧UIと人材メール対応をしつつ、もう少しだけ育てていこうかなと思ってます。
ソースコード(変わらず公開中)
実行コストについて
chatGpt 4.1miniを使用しています。
私の環境でのAIによるメール解析のAPI利用料/処理件数は以下の通りでした。
$0.1=93通
$1=930通