
実店舗向けバーチャル試着システム導入のアーキテクチャ検討 - Bodygram × Gemini API
概要
Bodygram Platform × Gemini APIでバーチャル試着を試してみたでは、BodygramとGemini APIを用いて、サイズ感を反映したバーチャル試着を実装する方法について解説しました。今回は、この仕組みを実店舗に導入し、来店客がその場でサイズ感を確認しながらバーチャル試着を体験できるようにするためのアーキテクチャを検討してみたので、その内容を共有します。
なお、本記事はアーキテクチャの設計検討段階のものであり、実装・実店舗への導入はまだ行っていません。以降の体験フローや処理フローは、想定する設計内容として記載しています。
システムの特徴
- LINEタッチで会員登録: NFCタグをスマホでタッチするだけでLIFFアプリが起動
- カメラゲートで自動計測: 入店時に正面・右側面の2方向から撮影し、Bodygramで体型を自動計測
- RFIDで商品検知: 試着ラックに商品を掛けるだけで自動認識
- タッチパネルでバーチャル試着: AIが生成した試着画像をその場で確認
体験フロー
実際の店舗に導入した場合を想定した、ユーザーの体験フローです。
システムアーキテクチャ
全体構成
使用技術
| コンポーネント | 技術 | 役割 |
|---|---|---|
| 会員アプリ | LIFF (LINE Front-end Framework) | 会員登録、会員証表示 |
| 認証 | Cognito + LINE Login | ユーザー認証、JWT発行 |
| カメラゲート | Raspberry Pi 5 + USB カメラ×2 | 撮影、バーコード読取 |
| 体型計測 | Bodygram Platform API | 24箇所の身体計測 |
| 商品検知 | RFID リーダー (TS-100F) | ラック上の商品を自動認識 |
| 試着アプリ | Next.js (タッチパネル向け) | バーチャル試着UI |
| 画像生成 | Gemini API (gemini-3-pro-image-preview※) | 試着画像の生成 |
| バックエンド | Lambda + API Gateway | API処理 |
| データベース | DynamoDB | 会員、計測、商品データ |
| ストレージ | S3 | 撮影画像、生成画像 |
| 通知 | LINE Messaging API | 計測完了通知 |
※ 2026年1月時点プレビュー版
Phase 1: 会員登録(LIFF)
店舗入口のNFCタグにスマホをかざすと、LIFFアプリが起動します。LINE Login認証後、規約同意と体型データ入力を行い、JWT署名付きの会員証バーコードを発行します。
処理フロー
Phase 2: 撮影 & 計測(カメラゲート)

イメージ画像です
会員証バーコードをゲートにかざすと、Raspberry Pi 5が2台のカメラで同時撮影を行います。撮影後、画像はS3にアップロードされ、SQSキュー経由でBodygram APIによる体型計測が非同期で実行されます。
ハードウェア構成
| 機器 | 用途 |
|---|---|
| Raspberry Pi 5 | 制御用コンピュータ |
| USBカメラ × 2 | 正面・側面撮影 |
| バーコードリーダー | 会員証読取 |
| ディスプレイ | 撮影ガイド表示 |
処理フロー
Phase 3: バーチャル試着(試着エリア)

イメージ画像です
試着エリアのタッチパネルで会員証バーコードをスキャンすると、試着セッションが開始されます。RFIDリーダーがラックに掛けられた商品を自動検知し、顧客が商品カードをタッチするとGemini APIによるバーチャル試着画像が生成されます。
画面遷移
処理フロー
RFIDリーダー
RFIDリーダー
RFIDリーダーにはTS-100Fを想定しています。TS-100Fは「透過読み取り」モデルで、本体から最長2〜3mのエリアでICタグを認識できる広い読み取り範囲が特徴です。
電波が直線的に届く特性を活かし、ラックの横に設置することで、ラックに掛けられた商品のRFIDタグをまとめて検知する構成を想定しています。実際にTS-100FとRFIDタグで検証したところ、出力を調整することで横方向に約2メートルの範囲で安定して検知できることを確認しました。
データベース設計
DynamoDB テーブル構成
Members テーブル
| 属性 | 型 | 説明 |
|---|---|---|
| userId (PK) | String | 会員ID |
| lineUserId | String | LINE ユーザーID |
| height | Number | 身長 (cm) |
| weight | Number | 体重 (kg) |
| gender | String | 性別 |
| age | Number | 年齢 |
| createdAt | String | 登録日時 |
Scans テーブル
| 属性 | 型 | 説明 |
|---|---|---|
| scanId (PK) | String | スキャンID |
| userId (GSI) | String | 会員ID |
| status | String | queued / processing / completed / failed |
| s3Paths | Map | 画像パス (front, side) |
| measurements | Map | Bodygram計測結果 |
| createdAt | String | 撮影日時 |
| ttl | Number | 自動削除用TTL (30日後) |
Products テーブル
| 属性 | 型 | 説明 |
|---|---|---|
| productId (PK) | String | 商品ID |
| rfidTag (GSI) | String | RFIDタグID |
| name | String | 商品名 |
| price | Number | 価格 |
| category | String | カテゴリ |
| colors | List | カラーバリエーション |
| sizeChart | List | サイズ表 |
| imageUrls | Map | 商品画像URL |
まとめ
本記事では、BodygramとGemini APIを組み合わせた実店舗向けバーチャル試着システムの設計を紹介しました。LINEタッチによる会員登録、カメラゲートでの自動計測、RFIDによる商品検知、タッチパネルでのバーチャル試着という4つのフェーズを組み合わせることで、専用アプリ不要で始められる手軽さと、体型に合った試着体験を両立できる構成です。
今後実装を進めるにあたっては、Bodygram APIの計測レイテンシ(約10秒)やGemini APIの画像生成時間(約20秒)をユーザー体験上どう吸収するかが課題になります。本設計ではSQSによる非同期処理とLINE Push通知で計測待ちを解消し、試着画像生成中はプログレスバーで待機時間を可視化する方針としています。
各APIの具体的な実装方法についてはBodygram Platform × Gemini APIでバーチャル試着を試してみたで解説しています。






