BeFree

https://github.com/kaka0913/watnow-hack-team8-backend

Swift

Go

Python

GCP

PostgreSQL

AIが物語を生成する新しい散歩ルート提案アプリ

黒田康介

株丹優一郎

推しアイデア

「どこかいきたいけど、どこに行こう?」を即座に解決。 グルメや自然、ホラーといった多様なテーマが、普段の道を物語に変えてくれる。自身の散歩を記録・共有すれば、他の誰かを通じて、まだ知らない街の魅力に出会える。

作った背景

黄色いテーマカラーから着想を得たハチがコンセプトです。ハチが花を探して蜜を集めるのと同じように、ユーザーは街のスポットを巡って楽しい体験をあつめる。その記録が集まる様子を、蜂の巣がモチーフの「ハニカムマップ」で表現している。

推し技術

高い精度のスポット探索を実現する検索ロジック。各テーマには、目的地の有無といった条件に合わせて複数の探索シナリオを用意していて、ただ評価の高いスポットを選ぶのではなく、スポットの候補が見つかりにくいエリアでは探索範囲を拡大するなどして、柔軟な探索で最適な散歩ルートを提案する。

プロジェクト詳細

1. アプリケーションの概要

ユーザーの現在地や目的地(有無は問わない)、テーマに合わせてAIが物語付きの散歩ルートを提案するアプリケーションでユーザーは提案されたルートを体験したり、実際に歩いた記録を投稿・共有したりできる。

2. 動作内容

シナリオベースのルート提案

1.「テーマ」の選択 

ユーザーはグルメ、自然、ホラーなどのテーマを選択し、提案する散歩の方向性が決まる。

2.「シナリオ」による複数の選択肢 

各テーマの中に、細かく散歩ルールを決めた複数のシナリオを用意している。例えばグルメというテーマを選んだ場合、カフェ巡りやベーカリー巡りなどの違うシナリオを提案する。

3.物語を形成するための「ロジック」 

各シナリオには、立ち寄るスポットのカテゴリや順番のためにロジックを組んでいる。例えばカフェ巡りというシナリオ(目的地なし)では、「①書店/雑貨店 → ②メインのカフェ → ③公園/ベーカリー」という順で、物語性のあるようなスポットの組み合わせを探索する。

4.条件に応じた柔軟性 

このロジックは目的地がある場合とない場合でも分けられていて、経由地の数やスポットの選択が変化しする。また、各ステップでは物件の評価が高いというところも考慮してスポットを選択するため、満足度の高いルートを生成する。

記録と共有

1.散歩の体験を記録・投稿  

散歩を終えたユーザーは、完成した物語、実際に歩いた時間や距離、感想、立ち寄ったスポットなどを散歩の記録として投稿でき、これにより、個人の体験が形として保存できる。

2.ハニカムマップによる体験の共有 

投稿された散歩の記録は、ハニカムマップ上で他のユーザーに共有され、これにより他の人がどこでどのように散歩を楽しんだのかを地図上で発見できる。

3.他のユーザーによる「体験」 

他のユーザーはマップ上の記録をタップして、その散歩の詳しい内容を閲覧できます。これによって、気になった散歩を自分でも体験でき、ユーザー同士の新たな発見や交流のきっかけが生まれる。

3.技術構成

フロントエンド

Swift  アプリケーションのUIを作成

バックエンド

Go言語ルート 提案に必要な複数の処理であるSupabaseからのスポット情報取得やGoogle Maps APIへの経路問い合わせなどを効率的に同時実行でき、処理の待ち時間を短縮化し、ユーザーを待たせない。

Python 事前に目的地となる地点の情報を取得してくるために Google Map APIを叩いてデータを取得するためのスクリプトをPythonで作成しています

データベース

Supabase    散歩ルート提案の基盤となるスポット(POI)情報を集約・管理する。PostGIS GIS関数を使用してGEOMETRY型を導入した本アプリの、正確な位置情報によるデータの絞り込みを実現

Firestore ルート計算とAIによる物語生成が終わると、完成した複数の提案をFirestoreに保存する。ユーザーが提案を選択すると、アプリはそのIDを使ってFirestoreからルートの詳細を高速に取得する。

インフラ

Cloud Run, Artifact Registry, Terraform

Cloud RunへのデプロイにはArtifact Registryでコンテナイメージを管理しています。 CD(継続的デプロイメント)にはGitHub Actionsを導入しており、バックエンドのデプロイはプルリクエストをマージするだけで完了する仕組みです。 また、Cloud RunやFirestoreといったインフラリソースは、Terraformを用いてコードで管理・作成しています。

API

Directions API(高かった、、、)Places API (New) 、Gemini API

4今後追加したいもの

  • 今回データベース上にあるスポットは京都府のみなのでそれを全国へと拡大していく
  • テーマはグルメや自然などがすでに存在するがショッピング、アート、健康などを追加する
  • 徒歩だけなく公共交通機関や車などでもルートを提案できるようにする

黒田康介

@4337300f0720c804