推しアイデア
マップにローカル店のみを表示するようにしました!
マップにローカル店のみを表示するようにしました!
試合観戦×ローカルグルメで地域ごと盛り上げていきたい!
Google Place APIを使って動的に地図の建物を表示した。

このサイトでは、ギラヴァンツ北九州の試合日程や場所に合わせてAIが旅行プランを考えてくれます。移動時間や待ち時間も楽しめるようにゲーム要素も盛り込んでいます!

フロントエンド (Vercel) ↓ HTTPS + JWT バックエンド (Render) ├→ Supabase │ ├→ 認証検証 │ └→ データベースクエリ ├→ Google Places API │ └→ 周辺店舗検索 └→ Gemini API └→ プラン生成
search_types = ["restaurant", "cafe", "bar", "bakery"] for place_type in search_types: resp = client.places_nearby( location=(latitude, longitude), # 中心座標 radius=radius_m, # 半径(メートル) type=place_type, # カテゴリ )
all_results: List[dict] = [] seen_place_ids: set = set() for place_type in search_types: for place in resp.get("results", []): place_id = place.get("place_id") if place_id and place_id not in seen_place_ids: seen_place_ids.add(place_id) # 🔑 重複チェック all_results.append(place)
重複チェックして
# 静的キーワードリスト(21-45行目) CHAIN_KEYWORDS = ( "mcdonald", "starbucks", "kfc", "yoshinoya", "sukiya", "matsuya", "mos burger", "saizeriya", "gusto", # ... 25種類のチェーン店 ) # フィルタリング関数(48-56行目) def is_chain_store(name: str) -> bool: lower = name.lower() return any(k in lower for k in CHAIN_KEYWORDS) 実際の動作: # 例1: チェーン店 → 除外 is_chain_store("マクドナルド 小倉店") # → "mcdonald" が含まれる → True → 除外 ❌ # 例2: ローカル店 → 残す is_chain_store("焼肉 炭火亭") # → どのキーワードも含まれない → False → 残す ✅ # 例3: 部分一致も検出 is_chain_store("すき家 北九州店") # → "sukiya" が含まれる → True → 除外 ❌
チェーン店フィルタリング
試合ごとに旅行プランを作成します。 生成した旅行プランがお気に召さなければ、ローカル店舗のみを表示した特別なマップからお好みのお店をお選びください!! 選手のおすすめ店舗も表示されるので推し活にも花が咲きますね🌼⚽
ただし我々ドライブ大好きチームゆえ、全て車移動前提の旅行になっています(^^) 楽しい旅になりそうですね🚗💨✨
https://masumotale.vercel.app/
