Thanks to visit codestin.com
Credit goes to github.com

Skip to content

jphacks/tk_a_2505

Repository files navigation

IMAGE ALT TEXT HERE

🏆 受賞

東京会場A Hack Day Sponsor Award - 川田テクノシステム株式会社

製品概要

HiNan!

HiNan! は、「歩いて避難訓練を習慣にする」ことを目的としたモバイルアプリです。AIが生成するシナリオに基づき、利用者は実際に近くの避難所まで歩いて避難訓練を行います。

競争やバッジなどのゲーミフィケーションを通して、避難訓練を“楽しく・繰り返せる・健康的な”体験にします。

背景(製品開発のきっかけ、課題等)

日本は世界でも有数の災害多発国であり、地震や台風、津波などへの備えの重要性は広く認識されています。しかし、実際に避難訓練に参加する人の割合は依然として低いのが現状です。

研究によると、日本で防災訓練に参加したことがある人は全体の約15%にとどまり、約半数(50%)は一度も参加したことがないと報告されています。また、18〜29歳の若年層ではわずか33.3%と、他の世代に比べて参加率が最も低くなっています。外国人住民の間でも、情報や環境の違いから防災行動への参加が難しいケースが多く見られます。

(参考: PMC+1, JMAJ, J-STAGE

この現状を変え、誰もが避難訓練を楽しみながら継続できる未来を目指し、私たちは『歩いて避難訓練を習慣化できるアプリ: HiNan! 』を開発しました。

製品説明(具体的な製品の説明)

特長

1. 楽しく避難訓練を実施できる!

HiNan!では、『ミッション』という形で発令された災害シミュレーションを実施できます。

従来の訓練の「義務感」や「恐怖」ではなく、ゲーム的な楽しさ・挑戦・達成感を通して人々を防災行動へと導きます。

2.毎日変わる『災害シナリオ』

AIが地域に合わせて毎日新しい災害シナリオを生成し、ユーザーに配信します。

実際の災害もいつ身近に起こるか分かりません。毎日違ったシチュエーションで避難訓練を実施することで、いざという時への大きな備えになります。

3. バッジを集めながら新しい避難所を発見!

避難訓練を成功させることで、訪れた避難所限定の『バッジ』を獲得することができます。

さらに、誰も訪れたことの無い避難所に到達したユーザーは新たなバッジを生成し、名前を残すことが出来ます。

指定緊急避難場所は全国に11万個以上 (参考: 日本経済新聞)あるため、非常に大きなコレクション要素となっています。

解決出来ること

  • 避難行動を習慣化し、モチベーションを維持できる
  • 災害時の判断力と知識を定着させることができる
  • 最寄りの避難所と安全ルートを身体で覚えることができる
  • 外国人住民を含むすべての人に、情報を提供できる

今後の展望

  • グループミッションの実装
    • 現在はバッジ以外で他ユーザーとつながる方法がありません。グループミッションを導入することで、より地域と連携してアプリが盛り上がることを期待しています。
    • また企業内の防災・健康施策などにおいて、部門連携を深めるようなユースケースも想定しています。
  • 災害シナリオ内容の多様化
    • 火災 / 洪水 / 土砂崩れ など、さまざまな災害シナリオの実装を進めます。
    • 特に「洪水・津波」については実際の標高データを使用し、浸水状況の可視化を行います。

注力したこと

  • アプリ内避難訓練 (ミッション)機能の実装
    • Backend: 災害シナリオのスキーマをチーム共同で考え、プロンプトエンジニアリングとイベント処理の実装を行いました。
    • Frontend: 緊急感を出しつつ、ユーザーが楽しく遊べるようなUIの実装に力を入れました。位置情報を取得するのに苦労しました。
  • 避難所バッジ生成 / 獲得 機能の実装
    • Backend: 生成に使用するプロンプト、DB設計、Edge Functionの実装などに注力。避難所データを保存するために2つテーブルを作ってから移動させるなど、工夫が必要でした。
    • Frontend: コレクター要素の核となる機能なので、3Dライクに表示するなどインタラクティブなUIになるようこだわりました。DBに保存した避難所の情報も記載するようにしました。
  • 複数言語(英語, 日本語)への対応
    • 日本滞在中の外国人でも利用できるようするため、また多国籍な開発チーム内でもアプリの動きが十分確認できるようにするため、全テキストの多言語対応を行いました。
  • AIモデルの選定
    • 災害シナリオ / 画像生成モデルへのプロンプト生成: Gemini 2.5 Flash
      • 生成スピードが速さ、文脈理解力の高さを評価しました。
      • 他のメンバーが扱いやすい日本語・英語両対応である点も重視しました。
    • 避難場所バッジ画像生成: Flux.1 Schnell
      • Artificial Analysis の比較表 を参考にし、生成が非常に速く、軽量で安定している点を評価しました。
      • 高解像度を必要としないユースケースでコストを抑えつつ、十分に魅力的なデザインが得られます。

開発技術

活用した技術

API・データ

  • 国土地理院オープンデータ(避難所)

フレームワーク・ライブラリ・モジュール

  • Frontend: SwiftUI / MapKit
  • Backend: Supabase (ユーザ・バッジ・イベント管理)
  • AI: LLMによるシナリオ生成・バッジ自動生成

デバイス

  • iPhone

独自技術

ハッカソンで開発した独自機能・技術

  • 独自で開発したものの内容をこちらに記載してください

    • マップ上で災害をシミュレーションする機能
    • 指定避難場所からバッジを生成 / 獲得する機能
  • 特に力を入れた部分をファイルリンク、またはcommit_idを記載してください。

    1. ios/escape/escape/Map/MapView.swift 何がすごいのか: リアルタイムの位置追跡と、ユーザーに向かって追いかけてくるゾンビのAI経路探索アルゴリズムを実装した、災害時の避難訓練を体験できるインタラクティブな地図ビュー

    2. supabase/edge_functions/generate_mission/index.ts 何がすごいのか: Gemini AIを使って日本語の災害シナリオをJSON形式で生成し、システムプロンプトで出力を制御。AI呼び出し、レスポンスのパース、バリデーション、データベース保存まで、エラーハンドリングと詳細なロギングを含めた完全なパイプラインを実装。

    3. ios/escape/escape/Home/MissionController.swift 何がすごいのか: Supabaseとの通信ロジックを完全に分離し、Observable patternでクリーンなアーキテクチャを実現。タイムゾーンを考慮した日付範囲のクエリで「今日のミッション」を判定し、ユーザーがミッションを持っていない場合は自動的に新しいミッションを生成する賢い仕組みを実装。

リポジトリガイド

About

【HiNan!: 歩いて避難訓練を習慣にするアプリ】 🏆 Award Day Finalist

Topics

Resources

License

Stars

Watchers

Forks

Contributors 8