2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

はじめに

日本酒を飲むたびに「この銘柄・スペック、前も飲んだっけ?」「あのとき飲んだやつ何だったっけ?」と思うことが増えてきました。メモアプリに記録するのは面倒、SNSに投稿するのはちょっと違う、専用アプリはUIが好みでない。。。ということで、自分用に「酒ファイル」というWebアプリを作りました。
この記事ではアプリの機能紹介と、AWSフルサーバーレス構成で作ったアプリケーションを紹介します。

主なこだわった機能

image.png

1本ずつ、好きなだけ詳しく記録できる

銘柄名・酒造・種類だけでなく、こだわりたい人向けにスペックも細かく残せます。

精米歩合 / 日本酒度 / 酸度 / アミノ酸度
酒米 / 酵母 / アルコール度数
評価(★1〜5)/ 紹介文 / テイスティングノート
価格 / 容量 / 購入日 / 飲んだ日 / 購入場所
リピート回数 / 在庫状態(ストック・飲みかけ・飲み切り)
タグ / 写真(最大5枚)

「銘柄名だけ書く」,「全項目埋める」など様々な使い分けを可能にしています。

ラベルを撮るだけでスペック自動入力(AI)

日本酒の裏ラベルには、精米歩合とか日本酒度とか、細かい数字がびっしり書かれています。これを毎回手で打ち込んで記録するのは正直しんどい。。。
なので、裏ラベルを撮影するだけで、AIが読み取って各項目に自動で入れてくれる機能をつけました。

  • 銘柄名・酒造名
  • 種類(純米/吟醸/大吟醸など)
  • 精米歩合・日本酒度・酸度・アミノ酸度
  • 酒米・酵母・アルコール度数
  • ラベルに書かれている紹介文

上記を一発で抽出します。あとは評価と感想を書くだけです。
※この機能についてはアーキテクチャ部分で解説しています。

テイスティングノートのAI改善提案

「辛口でうまかった」みたいな雑なメモも、ボタン1つで日本酒っぽい言い回しに膨らませてくれます。
スペック情報も一緒にAIに渡しているので、それっぽい香り・味わい・余韻の描写を作ってくれます。「採用する」「破棄する」が選べるので、AIの提案を下書きとして使って、自分の言葉に直す想定で作成してみます。
ここでは繰り返し生成させることも考慮してGPT-OSS-120bを採用しています。

このように機能が割とAI色が強めです。

アーキテクチャ

image.png

アーキテクチャ図をClaude君に書かせてみました。

使っている技術

レイヤー 技術
フロントエンド React + Vite + TypeScript + Chakra UI v3
認証 Cognito
API API Gateway
バックエンド Lambda
データストア DynamoDB
画像 S3(presigned URLでブラウザから直接アップロード)
AI Bedrock(Claude Sonnet4.5 (画像処理) / GPT-OSS-120b(文書生成))
配信 CloudFront
IaC Terraform(モジュール分割)
外部API さけのわデータAPI(銘柄情報)

ラベル解析

ラベルを撮るだけで自動入力の裏側は、Bedrock の Claude Sonnet4.5にラベル画像を渡してJSONで返してもらっています。

プロンプトで以下のような細かい指示を与えることで、誤抽出を減らしています。

"""この日本酒のラベル画像から以下の情報を読み取り、JSON形式のみで返してください。
読み取れない項目は null にしてください。

{
  "name": "銘柄名",
  "brewery": "蔵元・製造者の会社名(例: 旭酒造株式会社、有限会社田中酒造)。住所や所在地は含めないこと",
  "type": "種類(純米/吟醸/純米吟醸/大吟醸/純米大吟醸/本醸造/その他 のいずれか)",
  "seimaibuai": "精米歩合(例: 70 %は自動で着くので付けない)",
  "nihonshuDo": "日本酒度(例: +20)",
  "acidity": "酸度(例: 2.3)",
  "aminoAcid": "アミノ酸度(例: 1.9)",
  "sakeMai": "仕込みに使用した米の品種名のみ(例: 山田錦、五百万石)。原材料欄の'米(国産)'や'米こうじ'は含めないこと",
  "kobo": "使用酵母(例: 協会9号)",
  "alcohol": "アルコール度数(例: 15度)",
  "description": "ラベルに記載されている商品説明・紹介文の本文(箇条書きや成分表ではなく文章になっている部分)"
}

JSONのみ返してください。余計な説明は不要です。"""

使った画像
20260501_004927.JPG

取り込み例

最後に

自分自身が飲んだ酒を忘れることが多いのでこの日本酒管理アプリを作成してあとで思い出すのに非常に重宝しています。
また、このようなアプリケーションを誰でもサクッと作れる時代になったなあと改めて思います。運用費用もLLMの使用料が大半でほぼほぼかかっていません。(昨月は36円)

最後まで読んでいただきありがとうございました。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?