GiraGo!

https://github.com/Umeno27A/Wingarc_hack_frontend

GitHub

TypeScript

React

Python

ギラヴァンツ北九州を追いながら旅行しちゃおう!!

やぎさんバスピス

Cookie777

推しアイデア

マップにローカル店のみを表示するようにしました!

作った背景

試合観戦×ローカルグルメで地域ごと盛り上げていきたい!

推し技術

Google Place APIを使って動的に地図の建物を表示した。

プロジェクト詳細

概要

image

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

image

使用技術

フロントエンド

  • React   

バックエンド

  • FastAPI
  • supabase

フロー

フロントエンド (Vercel) ↓ HTTPS + JWT バックエンド (Render) ├→ Supabase │ ├→ 認証検証 │ └→ データベースクエリ ├→ Google Places API │ └→ 周辺店舗検索 └→ Gemini API └→ プラン生成

Google Places 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, # カテゴリ )
  • 4回API呼び出し: restaurant, cafe, bar, bakeryを個別に検索
  • 理由: 1回の検索では最大20件までしか返ってこないようにしているため
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/

こだわりポイント

  • 最近話題の「チェーン店のみ表示するマップ」の逆張りで「チェーン店以外を表示するマップ」を取り入れました。
  • ゲーム要素として、弾幕ゲーム(Ver. ギラヴァンツ北九州)がプレイできます。 下の画像は全く関係ない画像です。

image

やぎさんバスピス

@chiho_yagi