バイブコーディングで週末に開発した日本酒の在庫管理&レビュー管理アプリ「蔵ログ」(命名:Claude)の機能追加をしたのでメモっておきます。
前回、一通りの機能はできたんですが、たまった膨大な日本酒のデータ入力がまだ終わっていません。瓶ラベルをChatGPTがOCR認識してくれるので、ローカルデータからデータを作ろうとワークフローをChatGPTに整理させたところ、データフォルダーをPythonスクリプトで読み込んでChatGPTにAPI経由で送る方法を提案されました。ローカルの処理系を整備するかなと思ったんですが、よくよく考えると、WebアプリにChatGPT APIを組み込んで処理させたほうが、新規登録時の入力項目も作ってくれて楽じゃないかという考えに至りました。この機能、日本酒管理のiOSアプリとかにあるのは見たことがあったんですが、以前使ったものはラベルのマッチングで動いていたようであまりうまく動かなくて、すぐ使わなくなっていたので、すっかり忘れてました。
で、Claudeに瓶ラベルのOCR機能を追加してもらって動作確認してみたところ、なかなかいい感じ。さらに、今まで認識させていなかった解説文やQRコードも読み込ませるよう機能追加してみたんですが、ここでちょっと問題が発生。認識プロンプトをChatGPTのチャットで試したときと、WebアプリでAPIを実行したときとで結果に違いが出て「??」となりました。コードを見てみると、呼び出しているモデルがGPT-4oで、チャットはGPT-5.3という状況でした。違いとしては、解説文はそのまま返してという指示なのに、API経由だとなぜか要約されてしまう。QRコードはAPI経由だと認識されるけど、チャットだと無視される、という逆転現象も。結局これはモデルの挙動の違いということで、QRコードはいろいろチューニングしてみたものの安定せず。ChatGPTからも「QRコードを読ませるなら専用デコーダーを使ったほうがいい」と提案されたので、QRコード読み取りはいったん諦めて、解説文を正確に読み取る方向に絞り、APIもGPT-5を使うようコードを修正しました。最初に「OpenAIのAPIでラベルをOCRして」という漠然とした指示を出したのが反省点ですね。
あとは使い勝手の改善です。在庫管理だけでしたが、お店で飲んだ記録も入れられるようDBスキーマとUIを修正。情報更新時の登録漏れを防ぐため、保存前にページ移動できないようにしたり、見た目の色調を見間違えにくく調整したりしました。
コーディングはClaudeとChatGPTを並べて調査しながら進めました。実装はClaudeですが、APIはChatGPT製なのでどちらにも聞いた方がいいかなと。課金は今のところChatGPTのみなんですが、ファイル管理が大変になってきたのでClaude Codeも使った方がいいかなと思い始めています。Macでコーディングしてラズパイにアップロードするのも自動化できるのかしら?


