アプリ概要
「あずかり旅」は、ホテルに預けた荷物を旅するキャラクターとして擬人化し、チェックインからチェックアウトまでの時間を"旅の追体験"に変えるスマートフォンアプリです。
ゲストはチェックイン時に自分だけのカバンキャラクターを作り、名前・性格・出発地を設定します。するとAIがその性格に合った1日分の観光プランを自動生成し、キャラクターは地図上を自律的に移動しながら訪れたスポットの感想をリアルタイムで送り届けます。チェックアウト後には、旅の思い出として特製のお土産(シール・絵葉書)がホテルから渡されます。
荷物を預けている「ただの待ち時間」が、キャラクターの冒険を見守るワクワクする体験に変わります。
個人の挑戦
- ななせさん:本格的なモバイル開発をやったことがないので、きちんと完成させるところまでやりたい!
- tomoyo:他とかぶらないデザインとかわいさが欲しい
- そうま:初モバイルアプリ開発なので、理解を深めたい!
画面の流れ
チェックイン(キャラ作成・性格設定)
↓
旅スタート(AIがプラン生成)
↓
地図画面(リアルタイム移動を追う)
↓
メッセージ画面(キャラから感想が届く)
↓
チェックアウト後にお土産を受け取る
主な機能・ユーザー体験 (UX)
- 荷物のキャラクターカスタマイズ (
/checkin)
- 預ける荷物の種類(スーツケース、ボストンなど)、色、目パーツ、装飾品を組み合わせてアバターを作成。
- 「好奇心旺盛」「方向音痴」といった性格・気質・興味を設定。
- AIによる旅程自動生成 (
POST /trips/plan)
- 出発地と荷物の性格を元に、AI Agentが周辺の観光スポットを巡るタイムラインを生成。
- 「道に迷う」「寄り道する」といった性格に応じたハプニング(イベント)も自動で挟み込まれる。
- マップでのリアルタイム追跡 (
/map)
- Google Maps上に荷物の現在地が表示され、時間経過に伴い移動する。
- 移動中(バウンス+土煙)や散策中(浮遊+キラキラ)など、ステータスに応じたアニメーションで状態を可視化。
- チャット形式のメッセージ通知 (
/message)
- 荷物から「〇〇に着いた!」「おいしそうな匂いがする」といった感想メッセージが、設定した「口調」に合わせてリアルタイム風に届く。
- お土産・ポストカード生成 (
/souvenir)
- 旅が終わると、訪問先の風景を元に画像生成AIが作成した「ポストカード」や、旅のタイムラインをまとめた「旅行日記」を閲覧・保存できる。
推しアイディア
- 「待ち時間」を価値に変える逆転発想 — 荷物を預けた後の空白時間に着目。"荷物が遊びに行っている"という発想で、何もない時間をエンタメ体験に変える。
- キャラクターの性格がすべてに一貫する設計 — 「のんびり屋」「グルメ好き」などの性格設定が、観光スポットの選び方・滞在時間・感想の文体まで全部に反映される。
- 受け取れるお土産でデジタルとリアルをつなぐ — アプリ内の体験で終わらせず、キャラクターが旅先で"選んだ"シールや絵葉書をホテルから物理的に受け取れる体験まで設計している。
作った背景
- ホテルのチェックアウト後の「手持ち無沙汰」に気づいた — 荷物を預けてから観光する時間帯は、ゲストにとっての体験の空白。ここにおもてなしが介在できると考えた。
- ハッカソンテーマ「おもてなし」をデジタルで体現したかった — 単なる情報提供ではなく、ゲストが能動的に楽しめる"参加型のおもてなし"を目指した。
推し技術
- Gemini 2.5 Flashによる性格反映プラン生成 — キャラクターの気質・興味・特性・口調を構造化モデルとして渡し、スポット選定から感想の文体まで一貫して生成させている。
- Places API連携でハルシネーション対策 — Geminiに架空スポットを作らせず、Google Places APIで取得した実在スポット候補の中からのみ選ばせる二段構えの設計。
- Expo Routerで2日間にiOS/Android両対応 — ファイルベースルーティングとExpo Goにより、ネイティブアプリを短期間で実機動作まで仕上げた。
技術スタック
| レイヤー | 技術 |
|---|
| モバイルアプリ | Expo (React Native) + Expo Router |
| バックエンド | Express (TypeScript) — Railway にデプロイ |
| データベース | PostgreSQL (Railway) |
| AI | Gemini API (gemini-2.5-flash) |
| 地図 | Google Maps JavaScript API + Directions API |
| スポット検索 | Google Places API (New) + Geocoding API |