ガーディアン・グリッド

GitHub リポジトリLinkedIn 投稿
デモ動画ハッカソンの詳細

概要

Guardian Grid (SF) は、主要な災害時にコミュニティが迅速かつ安全に対応できるよう支援するスマートシティ緊急避難ツールです。システムは、市の管理者や緊急担当者が自然災害の影響を受けた地域などの危険ゾーンをマークし、インタラクティブな地図上で安全ゾーンを直接定義できるようにします。その後、先進的な経路探索アルゴリズムを使用して、現在の危険を考慮した上で住民に最も安全な避難ルートを生成し、伝達します。

緊急事態が発生した際、担当者は危険エリアと安全エリアを更新し、即座にテキストメッセージで住民の携帯電話に警報を送信できます。各人はウェブポータルへのリンクを受け取り、現在位置を利用して危険を考慮した安全へのルートを表示し、Google Maps を使って即時の案内を提供します。状況が変化すると、ルートはリアルタイムで再計算され、新たな警報が送信されて全員が最新情報と安全を保てます。デモをご覧ください:

現在のデモコードでは、デモおよびテスト目的でアラートは単一の電話番号にSMSで送信されます。しかし、実際の導入では Guardian Grid SF は Wireless Emergency Alerts (WEA) system と統合し、影響を受けた都市または地域のすべての人々に避難警報を放送します。

現在の焦点はサンフランシスコ湾エリアにありますが、私たちのビジョンは Guardian Grid を世界中の他の主要都市へ拡大することです。私たちの目標は、協調的かつデータ駆動型の避難を実現する堅牢なシステムを提供し、すべての都市が住民を保護し、渋滞を最小限に抑え、緊急事態が発生した際に迅速に対応できるようにすることです。

チーム アスペン

Guardian Grid は、National Security Hackathon でチーム アスペンによって開発されました。私たちのチームは以下で構成されていました:

私たちは、Elliott Wolf、Adam Papa、Ray Del Vecchio を含むメンターや主催者からの指導とサポートに感謝しています。

ハッカソンの旅路

2025年4月26日から27日に開催されたハッカソンの週末は、予想外ながらも強力なコラボレーションをもたらしました。親友の Dylan Eck と私はそれぞれコロラド州とミズーリ州からサンフランシスコで開催された Cerebral Valley の第2回 National Security Hackathon に参加するために移動しました。イベントのキックオフで、Christina HuangIoana Munteanu に出会い、チーム アスペンが誕生しました。

LinkedIn 投稿

Ioana のハッカソン体験をハイライトした LinkedIn 投稿

ハッカソンは2つの異なる課題を提示しました。主要トラックは従来の表彰賞があるプロジェクトベースの競技であり、特別課題は参加者に Code Metal の冷却システムを倫理的にハックすることを求めました。私たちのチームは多様な専門知識を持ち、特に Dylan がソフトウェアと機械工学の両方のバックグラウンドを持っていたことから、24時間の時間枠内で両方の課題に取り組む戦略的決定を下しました。

この野心的なアプローチは、2つの重要な成果につながりました:

  1. Guardian Grid (SF) - 私たちの主要なハッカソンプロジェクトは緊急避難に焦点を当てました:

  2. Code Metal Challenge - 私たちは彼らの冷却システムに対する最も成功したペネトレーションテストを実施し、5,000ドルの特別賞を獲得しました。このソリューションは機密情報として保持されますが、ソフトウェアと熱力学システムの両方におけるチームの技術的深さを示しました。

Guardian Grid はメインコンペティションでトップ3に入らなかったものの、審査員はその潜在的インパクトと革新的アプローチを評価しました。プロジェクトの範囲は野心的で、2つの課題に焦点を分散させたため、時間制限内にすべての構想機能を実装できませんでした。それでも、審査員のフィードバックは都市緊急管理への解決策の重要性を裏付けました。

ハッカソンは変革的な経験となりました。技術的成果や賞金を超えて、新たな友情が芽生え、プレッシャー下で多様なスキルセットが結集する力が実証されました。2024年後半から2025年初頭にかけて個人的な課題に直面した後、この成功は特に意義深く、再活力をもたらしました。

ハッカソンの詳細

Guardian Grid (SF) は、Cerebral Valley と Shield Capital が Stanford DEFCON と提携して主催した第2回年次 National Security Hackathon(2025年4月26日〜27日)で構築されました。このイベントは、米軍関係者が策定した国家安全問題ステートメントに対するソリューションを構築するために、技術者とエンジニアを結集させ、政府、軍、スタートアップのメンターから指導を受けました。

  • 週末にはスタンフォード大学で防衛技術キャリアフェアとチームビルディングが行われ、その後サンフランシスコで24時間のハッキングが実施されました。
  • スポンサーおよびサポーターには Shield Capital、In-Q-Tel、NATO Innovation Fund、Vannevar Labs、Scale AI、Groq、Windsurf、Anthropic、Microsoft、Maxar、Dedrone、Distributed Spectrum、Code Metal が含まれます。
  • ハッカソンのカテゴリには Smart Cities、War Games、Maritime Pattern Analysis、Cybersecurity for AI Deployments、Radio Frequency Navigation、General National Security、Hack A Refrigeration System がありました。

ハッカソンのメインセクションでは、1位に $3,000 と Starlink ユニット、2位に $2,000、3位に $1,000 が授与されましたが、冷却システム課題のために隠された特別賞 $5,000 が用意されていました。

私たちのチームは Smart CitiesHack A Refrigeration System の両方の課題にエントリーしました。Guardian Grid (SF) は Smart Cities エントリーでした。冷却システム課題での技術的取り組みで $5,000 の特別賞と優秀賞を受賞し、Smart Cities ソリューションは審査員と仲間から強いフィードバックを得ました。

審査員と仲間は、Guardian Grid (SF) を緊急管理における重要課題へのインパクトのある対応として評価し、その創造性、実用的アプローチ、そして単に LLM 技術を万能解として使用しなかった点を称賛しました。リソースを二つの課題に分散したため時間的制約で Smart Cities プロジェクトはトップ3に入らなかったものの、審査員はその可能性と関連性に感銘を受けました。私たちのチームはこの評価を受け、Hack A Refrigeration System 課題での優勝と共に光栄に思います。

詳細と考察は私たちの LinkedIn 投稿 でご覧いただけます。また、ハッカソンのフォトギャラリーは こちら です。

GPS データソース

サンフランシスコ湾エリアでの経路探索とマッピングのために、正確で包括的な道路データが必要でした。当初は Google Maps API と Mapbox の API の両方でデータ取得を試みましたが、ライセンス制限と機能的制約により、ハッカソンの目標に合致した形で基礎となるルーティンググラフを取得・使用できませんでした。これらの制約のため、オープンな生の地理データセットを使用しました。以下の2つのオープンソースからこの生の地理データを取得しました:

Linear features represent roadways for the San Francisco Bay Region. The feature set was assembled using all county-based 2021 TIGER/Line shapefiles by the Metropolitan Transportation Commission (MTC/ABAG). The dataset includes all primary, secondary, local neighborhood, and rural roads, city streets, vehicular trails, ramps, service drives, alleys, private roads, bike paths, bridle/horse paths, walkways, pedestrian trails, and stairways for the entire region.

  • The feature set contains unique road segments for each county and includes cases where a single stretch of road has multiple designations (e.g., an interstate being called by its number and local name).
  • Primary roads are major divided highways, while secondary roads are main arteries in the region.
  • The dataset includes attribute columns for identifying road type, jurisdiction, and more, supporting flexible routing and data analysis.

You can read more about the licensing and data details at the MTC dataset source.

実行方法

  1. Clone this repository and navigate into it.

  2. Set up your .env.local file. Refer to the env.local.example file to learn what environment variables you need. Note that you will need a MapBox API key for the map UI and geocoding, a TextBelt API key for SMS alerts (demo only), as well as a phone number for texting during the demo.

  3. After you create your .env.local file, you can start setting up all of GuardianGrid’s services, which include:

    • frontend: The app’s frontend interface.
    • backend: The app’s backend, including map pathfinding logic.
  4. To set up the frontend service, ensure you have Yarn installed and run:

    yarn install
    
  5. To set up the backend service, do the following:

    # go into this directory
    cd ./src/backend
    
    # set up a python environment
    python3 -m venv env
    
    # activate the python environment
    source env/bin/activate
    
    # install dependencies
    pip3 install -r requirements.txt
    
    # deactivate python environment
    deactivate
    
    # return to the project's root directory
    cd -
    
  6. With everything set up, the final step is to run the app. You’ll need two separate terminal windows or tabs, referred to as Terminal #1 and Terminal #2.

  7. In Terminal #1, start the backend service:

    # go into the backend service directory
    cd ./src/backend
    
    # activate the python environment
    source env/bin/activate
    
    # run the backend
    bash ./run.sh
    
  8. In Terminal #2, start the frontend service:

    yarn dev
    
  9. With everything running, open your browser and go to: http://localhost:3000/

  10. When finished, close Terminal #1 and Terminal #2.