KASUGAI Canvas v6.17.0

ハッカソン — 第5回 Agentic AI Hackathon with Google Cloud 出展まとめ

ハッカソン概要

第5回 Agentic AI Hackathon with Google Cloud は、Zenn(クラスメソッド)主催、Google Cloud 協賛のハッカソンです。テーマは 「作れる」から「使える」。エージェントの、新しいステージへ。 単なる自動化ではなく、可観測性・セキュリティ・ガバナンスを意識した「使えるエージェント」を募集します。

基本情報

  • 期間:2026/08/20 〜 2026/10/15
  • 主催:Zenn(クラスメソッド株式会社)
  • 協賛:グーグル・クラウド・ジャパン合同会社
  • エントリー数:302
  • Google Cloud クーポン:エントリー者に 300 ドル分

スケジュール

日程内容
2026/10/15(木)参加登録・プロジェクト提出締切
2026/10/28(水)ファイナリスト発表
2026/12/01(火)最終ピッチコンテスト・表彰式(渋谷ストリーム予定)

プロジェクト概要

KASUGAI Canvas は、CesiumJS のブラウザ GIS と Gemini を連携するアプリです。Cloud Run で静的配信・認証・Gemini API プロキシを提供し、Cloud Storage にプロジェクトとデータを保存します。Gemini が function calling で GIS ツールを選び、ブラウザ内蔵エージェントが実行します。ツールは Canvas の GIS API を通じてレイヤーや地図を操作します。自然言語の依頼を GIS 操作につなぐ構成で、審査用環境を公開しています。

渋谷区の地図上にサンプルスポットのレイヤーを表示した KASUGAI Canvas
KASUGAI Canvas の画面例。渋谷区の地図上に AI 生成の架空サンプルレイヤーを表示しています。

課題と解決

渋谷ミニハッカソンで、GIS が地図を描く道具にとどまり、場所と情報を一緒に見て理解や合意形成を支える活用が十分でない課題を確認しました。

取り組んだ課題

説明用データや資料の準備には手間がかかり、GIS 導入前に活用イメージを共有しにくい状況です。対象は、GIS 導入を検討する現場担当者、GIS 専門家ではない会議参加者、位置情報で合意形成したいチームです。

解決アプローチ

Gemini が function calling でツールを選び、ブラウザ内蔵エージェントが Canvas の GIS API を操作します。

  1. 自然言語の依頼から地域や目的を読み取り、公開情報の検索やレイヤー追加を行う。
  2. 本番データがない場合は、架空サンプルであることを明示して地図に表示し、レイヤーや属性を見比べられるようにする。
  3. 確認できた状況と検討案を資料にまとめ、地図の視点を再現するパーマリンクで詳細情報につなぐ。根拠や限界も示す。

GIS の価値を導入前に体験し、必要なデータ・機能・運用を考えることで、適切な導入判断と課題解決を支援します。

システムアーキテクチャ

利用者の依頼をブラウザ内の AI が GIS 操作に変換し、Cloud Run が認証・AI 中継・保存を支えます。地図とデータはブラウザと Cloud Storage が連携して扱います。

flowchart TB
  User[利用者] --> Agent

  subgraph Browser[ブラウザ]
    Agent[内蔵 AI エージェント]
    Tool[executeChatTool]
    Canvas[Canvas GIS API]
    Agent -->|function calling| Tool -->|GIS 操作| Canvas
  end

  Agent <-->|BYO key| Gemini[Gemini API]
  Agent <-->|キーなし:AI プロキシ| CloudRun[Cloud Run / FastAPI]
  CloudRun <-->|サーバーキー| Gemini
  Secrets[Secret Manager] -->|API キー・認証情報| CloudRun

  Canvas <-->|認証・保存 API| CloudRun
  CloudRun -->|署名 URL 発行| Canvas
  Canvas <-->|署名 URL で直接転送| Storage[Cloud Storage]
  CloudRun -->|Maps キー| Canvas

      

参加条件・提出物

必須:Google Cloud アプリケーション実行プロダクト

必須:Google Cloud AI 技術

提出物

技術構成とデモ

参加条件との対応

本ハッカソンの参加条件(必須プロダクト・必須 AI 技術・提出物)に対し、KASUGAI Canvas は以下のように対応します。

参加条件KASUGAI Canvas での対応
必須:アプリケーション実行プロダクトCloud Run に KASUGAI Canvas 本体(静的フロント配信)+ AI プロキシ(/api/gemini)+ GIS 保存 API(/api/kasc・/api/data → Cloud Storage)を1サービスとしてデプロイ(agent/・実装済み)。同一オリジン構成で CORS 不要・提出 URL 1本
必須:Google Cloud AI 技術Gemini API の function calling とブラウザ内蔵エージェントから GIS ツールを呼び出す基盤を実装。/api/gemini はサーバーキーを注入し、審査員が個人キーなしで利用できる構成です。回遊シナリオへの拡張を目指します。併用する Google Cloud プロダクトとして Cloud Storage(.kasc・gs:// データ・V4 署名付き URL 転送)と Secret Manager(API キー・認証情報)を使用
提出物 1:GitHub リポジトリgithub.com/yamamoto-ryuzo/kasugai_canvas を連携(フロント・エージェント・IaC を含む)
提出物 2:デプロイ URLhttps://kasugai-canvas-nqh4tuar6a-an.a.run.app/(Cloud Run 上の公開 URL)を提出し、審査期間中(〜2026/12/01)動作確認可能な状態を維持
提出物 3:概要・構成図・デモ動画プロジェクト概要(本ページ)+Mermaid によるシステムアーキテクチャ+デモ動画

今回実装した基盤

内蔵 AI エージェントの指示文

内蔵 AI エージェントには、モデルに依存しない次の指示を設定します。

あなたは KASUGAI Canvas の GIS 案内エージェントです。
利用者が地図や GIS に詳しくなくても、場所とデータを一緒に見ながら状況を理解し、次の判断につなげられるよう支援してください。

## 目標
利用者の依頼に応じて、Canvas の地図・レイヤー・属性・資料を整え、
「GIS で何が分かり、どんな課題解決に役立つか」を体験できる状態にします。

## 進め方
1. 依頼から対象地域、目的、必要な情報を読み取ります。不明点が結果を大きく左右するときだけ質問します。
2. 実在施設や公開情報が必要なら、検索・既存データを使います。架空サンプルでよい依頼なら、現実の情報と誤認されないサンプルを生成します。
3. 関連するデータを意味の分かる名前のレイヤーに分けて追加し、地図を対象地域へ移動します。
4. 属性や分布から読み取れることを整理します。データだけでは裏付けられないことは事実のように断定しません。
5. 必要なら資料を作成し、地図の状態を再現できるパーマリンクを付けます。
6. 完了時に、追加したレイヤー、分かったこと、サンプルデータか実データか、資料へのリンクを簡潔に説明します。

## サンプルデータの扱い
- 架空データは、名前・説明・資料内に「AI 生成の架空サンプル」と明記します。
- 架空の地点や属性を、実在施設の情報として紹介しません。
- サンプルから導けるのは操作や分析の例までです。現実の意思決定に使える結論として扱いません。
- サンプルを作るときは、依頼された地域・目的に沿った、地図上で比較できるデータにします。

## ツールの使い方
- 依頼を達成するために必要なツールを選び、実行結果を確認してから次へ進みます。
- レイヤー生成は、出力が大きくなりすぎないよう原則1レイヤーずつ行います。
- 同じレイヤーや資料を重複して作らないよう、現在の地図状態を確認します。
- 必要のない設定変更やデータ削除は行いません。
- ツールが失敗した場合は、成功したように装わず、失敗した操作と代替案を説明します。

## 資料の作成
資料には、次の内容を含めます。
- 対象地域と目的
- 地図上で確認できる状況
- データや属性から読み取れる内容
- 課題に対する検討案
- データの出典、または「AI 生成の架空サンプル」である旨
- 地図を開くパーマリンク

検討案は、確認できたデータに基づく案として書き、根拠の限界や追加で必要なデータも必要に応じて示します。

目標デモシナリオ:渋谷区の回遊プランと公園周遊

想定するデモでは、渋谷区の公園・文化/観光スポット・飲食店の架空サンプルを地図で見比べ、見どころの資料を作成し、公園を順番に巡ります。公園ルートはカメラのピッチを真下(-90°)にして FLY します。サンプルデータであることを明記する想定です。

依頼:「渋谷区内の公園、文化・観光スポット、飲食店を、それぞれ約5か所ずつ架空のサンプルデータとして作成し、別々の点レイヤーに追加してください。サンプルデータであることを明記したうえで、各スポットの見どころを紹介する資料と、公園を順番に巡ってください。公園を巡る際は、カメラのピッチを真下(-90°)にして順番に FLY してください。」

読み原稿(プロジェクト動作デモ)

読み原稿:「まず Cloud Run 上の KASUGAI Canvas にログインします。CesiumJS の GIS 画面では、地図にレイヤーを重ね、場所と属性を確認できます。内蔵 AI に自然な言葉で依頼すると、Gemini が function calling でツールを選び、ブラウザ内のエージェントが Canvas の GIS API を呼び出します。今回はこのエージェントの基盤を整えました。資料作成や公園の自動周遊など、これから広がる KASUGAI Canvas にご期待ください。次回のハッカソンでお待ちしています。」

技術スタック(提出構成)

層技術用途
フロントエンドKASUGAI Canvas(CesiumJS)3D 地球・レイヤー表示・FlyTo・チャット UI・資料モーダル
ホスティングCloud Run (必須プロダクト充足)静的フロント配信+GIS 保存 API+/api/gemini AI プロキシを1サービスに同居(同一オリジン・CORS 不要・提出URL 1本)
AI エージェントGemini API(function calling)(必須 AI 技術充足)Gemini がツールを選び、ブラウザ内蔵エージェントが GIS API を呼び出す基盤を実装。レイヤー操作などの個別機能を備え、サンプル生成・分析・資料作成・周遊をつなぐ体験への拡張を目指す
データ保存(GIS の保存先)Cloud Storage.kasc(kasc/<ID>)・gs:// 秘匿データ(data/<key>)。GET は V4 署名付き URL でブラウザ⇄GCS 直接転送
セキュリティCloud IAP / HMAC トークン / Secret Manager / Cloud IAM起動制御モード5/6/7・秘匿情報は Secret Manager・実行サービスアカウントの最小権限

参考リンク