公開ページ: https://jim-auto.github.io/body-type-analyzer/
日本の著名人プロフィールの公開データをもとに、スタイルランキングと画像ベースの簡易体型診断を提供する Next.js 16 アプリです。GitHub Pages 向けに静的エクスポートしており、公開版は https://jim-auto.github.io/body-type-analyzer/ で確認できます。
- 女性 300 件、男性 200 件のプロフィールを使ったランキング表示
- 女性: スタイル偏差値、AI 推定身長、AI 推定カップのランキング
- 男性: スタイル偏差値、AI 推定身長のランキング
- 画像 1 枚から推定身長、推定カップ、シルエットタイプ、類似有名人を表示
- 公開データと推定データの分布比較
- 画像クレジットページ (
/credits)
- Next.js 16.2.2 / React 19 / TypeScript
- App Router + static export (
output: "export") - Jest + Testing Library
- ランキングデータ:
lib/source-profiles.tsとpublic/data/ranking.json - 診断モデル:
public/data/diagnosis-model.json
- 画像診断はブラウザ内で特徴抽出を行う構成で、アプリ専用サーバーへ画像を送信しません
- コミット済みモデルは 192 件の学習プロフィールから生成
- 固定ホールドアウト 22 件で検証
- 身長は 70% が ±6cm 以内
- カップは 70% が ±1 カップ以内
- エンタメ用途の簡易診断であり、医学的・身体計測的な正確性を保証するものではありません
前提:
- Node.js 20.9 以上
- 診断モデルを再生成する場合のみ Python 3 と
Pillow
npm install
npm run dev開発サーバー: http://localhost:3000/body-type-analyzer
npm run lint
npm test
npm run buildnpm run build を実行すると、静的サイトが out/ に出力されます。本リポジトリは static export 前提のため、デプロイ時は out/ を GitHub Pages などの静的ホスティングへ配置します。
lib/source-profiles.ts: ランキング用の公開プロフィール母集団public/data/ranking.json: ランキング画面で使う生成済みデータpublic/data/diagnosis-model.json: 画像診断用の生成済みモデルpublic/data/image-credits.json: 配布画像のクレジット情報local-data/training-profiles.json: 追加収集したローカルトレーニングデータdocs/data-sources.md: 公開プロフィールの出典docs/cup-sources.md: カップ推定の根拠メモdocs/additional-data-sources.md: 追加収集ソース
アプリを動かすだけなら、コミット済みの JSON データをそのまま使えます。データやモデルを更新したい場合は次の順で実行します。
lib/source-profiles.tsを更新する- 必要に応じて
npm run fetch:local-trainingでlocal-data/を補完する node scripts/generate-ranking.mjsでpublic/data/ranking.jsonを再生成するnpm run generate:diagnosis-modelでpublic/data/diagnosis-model.jsonを再生成するnpm testで整合性を確認する
npm run fetch:local-training は外部サイトから追加候補を収集し、学習画像とプロフィールを local-data/ に保存します。必要に応じて ONLY_NAMES, THROTTLE_MS, BROAD_POOL, MAX_BROAD_NEW を使って対象や収集量を絞れます。