俺の配合

https://github.com/SanoKota/Hackz-iwamon

Flask

Python

CSS

JavaScript

HTML

あなたと馬、どんな物語がありますか。

佐野滉太

Seigo Takeda

Yamamoto Tohgo

推しアイデア

若くして亡くなってしまった馬や、血が濃すぎて配合できない馬同士の仔を走らせることができる!!

作った背景

「4年に1度」というテーマと、競馬を何としてでも絡めたかった。

推し技術

人力スクレイピングを用いたデータベース!

プロジェクト詳細

競馬配合シミュレーション 「俺の配合」

概要

「あの名馬がもし生きていたら…」「この配合が実現していたら…」 競馬ファンが一度は抱くそんな夢を、最新のAI技術(Gemini)で叶える血統シミュレーションアプリです。

若くして世を去った悲運の名馬や、血統の袋小路(近親交配)により現実では困難な配合を、デジタルな世界で解き放ちます。「4年に1度」をテーマに、競走馬の黄金期である3歳から4歳までのピーク期間を駆け抜ける、あなただけの最強馬を創り出します。

機能

・配合シミュレーション

image 「種牡馬」「繁殖牝馬」を選択し、生まれてくる「仔馬の名前」を入力するだけで完了する、直感的なシミュレーション機能です。

入力項目: 種牡馬リストから1頭、繁殖牝馬リストから1頭を選び、仔馬に名前を付けるだけ。

AI解析: Geminiが両親の現役時代の適性(距離、馬場、脚質)や血統背景を瞬時に読み取り、仔馬の4歳までの戦績を生成します。

「もしも」の実現: 現実では不可能な「予後不良で世を去った馬」や「血が濃すぎる配合」も、デジタル上でなら最高のコンディションで再現可能です。

・ドリームレース

image 作成した配合馬が、時空を超えて伝説のG1レースに挑むシミュレーション機能です。

舞台設定: 人力データベースに収録された実在のG1レース(日本ダービー、有馬記念など)を選択。

レジェンドホースとの激突: データベース上の歴史的名馬たちと直接対決します。

AI実況: 着順だけでなく、Geminiが「父譲りの末脚が炸裂」「第4コーナーでの驚異的な粘り」など、その配合ならではのレース展開をテキストで実況します。

・収録馬一覧

image 執念の人力スクレイピングによって構築された、本作の誇るデータベースを閲覧できる図鑑機能です。

厳選された名馬: 1頭ずつ手作業で入力された、正確かつ愛のある馬プロフィールを網羅。

ビジュアル: 各馬の写真と共に、父、母、母父といった主要な血統情報を一目で確認できます。

仕様技術スタック

  • フロントエンド: HTML/CSS, JavaScript
  • バックエンド: Python, Flask
  • データベース: Supabase
  • AIモデル: Gemini

推しポイント:人力データベース🔥

本アプリの心臓部は、自動スクレイピングに頼らず、一点一点丹精込めて作り上げた人力競馬データベースです。データの精度と熱量は、既存のツールにはない本物の競馬愛を体現しています。

データベース設計

テーブルを3つに限定することで品質の良い(?)データを提供でき、とても奥が深い配合シミュレーションを実現しています。

/* データベース構成 */ { "database_schema": { "tables": [ { "table_name": "horses", "description": "競走馬の基本情報を管理するテーブル", "columns": [ { "name": "horse_id", "type": "uuid", "description": "馬を一意に識別するID" }, { "name": "name", "type": "string", "description": "馬の名前" }, { "name": "sex", "type": "string", "description": "性別 (牡/牝)" }, { "name": "sire", "type": "string", "description": "父馬の名前" }, { "name": "dam", "type": "string", "description": "母馬の名前" }, { "name": "broodmare_sire", "type": "string", "description": "母の父馬の名前" }, { "name": "image_url", "type": "string", "description": "写真の保存先パスまたはURL" } ] }, { "table_name": "races", "description": "対象となるG1レース情報を管理するテーブル", "columns": [ { "name": "race_id", "type": "uuid", "description": "レースを一意に識別するID" }, { "name": "race_name", "type": "string", "description": "レース名 (例: 日本ダービー)" }, { "name": "distance", "type": "integer", "description": "距離 (m)" }, { "name": "venue", "type": "string", "description": "競馬場名" }, { "name": "track_type", "type": "string", "description": "芝 または ダート" } ] }, { "table_name": "race_results", "description": "シミュレートされたレース結果を記録するテーブル", "columns": [ { "name": "result_id", "type": "uuid", "description": "結果を一意に識別するID" }, { "name": "race_id", "type": "uuid", "description": "関連するレースのID" }, { "name": "horse_id", "type": "uuid", "description": "出走した馬のID" }, { "name": "event_date", "type": "date", "description": "開催日" }, { "name": "ranking", "type": "integer", "description": "着順" } ] } ] } }

※全部手打ちです。

改善点

さらなる競馬愛自己満UX向上のためのロードマップです。

アニメーション挿入

ご存じの通り全てテキストのコンテンツ。せっかく競馬を題材にしているのでどこかにアニメーションを入れたい!

AI実況の音声化

Geminiが生成したレースリポートを、合成音声で読み上げる機能。より臨場感のあるレース体験を提供します。

配合相性(ニックス)のヒント表示

特定の組み合わせを選んだ際、AIが過去の傾向から「この配合は期待大です」といった期待度を事前に示唆する機能。

奇跡の血量:イクイノックス×アーモンドアイ(サンデーサイレンス4×3) 黄金配合:ステイゴールド×ポイントフラッグ(ステマ配合)

IF設定のカスタマイズ

「もし重馬場だったら」「もし大外枠だったら」など、レース条件を細かく設定してシミュレーションの精度を深める機能。

佐野滉太

@2850ecd011af7e19