はじめに(自己紹介)
大阪ハイテクノロジー専門学校 人工知能学科 2年の山本夏織です。
この度、株式会社スリーアップ・テクノロジーで実習に参加し、Google Cloud のAIハッカソンに向けて、AIエージェント「Earth Insight Agent(EIA)」を開発しました。
実習テーマ:Google Cloud のAIハッカソンで勝つ
今回のテーマは、「第5回 Agentic AI Hackathon with Google Cloud」(主催:Zenn、協賛:Google Cloud)で勝つことです。
ハッカソンに出れば、自分のスキルアップになり、就職活動でも話せますし、賞金も狙えます。そして、近くに優勝経験が豊富な三上さんがいらっしゃったので、勝つ秘訣を聞けると思い、挑戦を決めました。
成果
- 開発期間:3週間(最初のコミット 9月16日 〜 10月6日)
- コミット数:103
- コード:98ファイル・約19,000行(Python・TypeScript・CSS。テストを含む)
- 自動テスト:286件が通過(10月5日時点)
- 質問からレポートまで:最短33.6秒、真ん中の値54.5秒(10月6日・7日に完了した11回)
背景:AIの答えは、本当に合っているのか
AIに検索させると、それらしい答えはすぐに返ってきます。でも、その答えが本当かどうかは分かりません。
目指したのは、企業のデータをクラウドの中でAIが分析する仕組みです。企業で使うなら、AIが言ったことをそのまま信じるのではなく、データで確かめられる必要があります。ただし、ハッカソンで使える企業データがありません。そこで、公開されているオープンデータを使って開発しました。
Earth Insight Agent とは?
Earth Insight Agent は、質問すると、AIが自分で調べ、オープンデータで確かめ、結果を1画面のレポートにまとめるAIエージェントです。
特に意識したのは、ネットで調べた内容を「仮説」として扱うこと。検索結果をそのまま答えにせず、観測データの分析を「根拠」にします。
システム構成
- 画面:React と CesiumJS(3Dの地球)
- サーバー:Cloud Run 上の FastAPI・ADK・Python
- AI:Gemini(Vertex AI)。調査と文章化だけを担当
- データ:BigQuery の公開データ、外部の公開データ(Open-Meteo、NASA POWER など)
- 公開までの流れ:Cloud Build → Artifact Registry → Cloud Run
機能
機能①:調べて、データで確かめる
EIA は、次の順番で調査を進めます。
- 調べる:Gemini が Google 検索でニュースを探し、どの災害の話かを決める
- データを集める:Python が場所の緯度・経度を求め、1940年からの雨量と気温を取得する
- 計算する:Python が、大雨の期間、過去の年と比べた順位、長期の傾きを計算する
- 確かめる:別のデータ(NASA POWER)と照らし合わせ、報道とデータの食い違いを調べる
- 考察を書く:確かめた事実だけを Gemini に渡し、1〜2文で書かせる
Gemini が書いた考察に、渡した事実に無い数字が混じっていたら、その考察はレポートに出しません。
機能②:1画面のレポートで見せる
調べた結果を、パッと見て分かる1画面のレポートにまとめました。
- 答えを1行で:「なぜ起きたのか → 87年で2番目の大雨」のように、いちばん上に出す
- グラフ:1940年からの各年の雨量を並べ、今回の年だけ色を変える
- 食い違いはそのまま出す:報道が「雨が原因」と伝えても、データで確かめられなければ、そう表示する
- 出典:使ったデータと報道の出どころを、画面の下に出す
※雨量は観測そのものではなく、過去の天気を計算で再現した推定値です。レポートまでの時間は、Gemini が検索にかける時間で大きく変わります(最長は145.4秒でした)。
機能③:使いすぎを止める
クラウドは使った分だけお金がかかります。そこで、歯止めを入れました。
- BigQuery は実行前に必ず Dry Run(読み取る量の見積もり)を行い、上限を超えるクエリは実行前に止める
- APIキーなどの秘密は Secret Manager に置き、ファイルに書かない
- ログイン画面と、利用回数の制限を付ける
- 料金の見積もりを画面に表示する
開発手法:ChatGPT(完成イメージ)× Claude Code(実装)× Codex(レビュー)
開発では、ChatGPT で完成イメージを考え、そのイメージをもとに Claude Code で実装しました。Codex はコードのレビューなどに使いました。実際に動かしながら、Google Cloud やデータ連携の仕組みを理解していきました。
苦労した点(どこまで作れば完成なのか)
一番きつかったのは、どこまで作れば完成なのか、今の方向でよいのかが分からなくなったことでした。
三上さんの「ハッカソンで勝つのがゴール」という言葉で、ゴールに立ち返りました。目標はありましたが、改善を判断する評価基準まで具体化できていなかったことに気づきました。
画面にも課題がありました。最初の画面は文字量が多く、情報を出しているだけになりやすかったのです。三上さんの助言から、情報設計や説明のしやすさ、エンタメ性を意識し、グラフや衛星画像、イベントに応じた画面の変化など、見せ方を改善しました。
9月19日の大阪ミニハッカソンでは、Earth Insight Agent を一人で発表しました。その場で資料と話す内容を準備し、自分の言葉で説明する経験になりました。結果は企業チームに負けました。正直、「やらかした」と思いました。三上さんに助言をたくさんもらっておきながら、負けてしまったからです。1位のチームは、自社のデータを活用し、システムに組み込んでいました。
それでも、ミニハッカソンは、同じハッカソンに出る人の作品がどんな感じかを見る「ライバルの視察」だと、自分に言い聞かせました。人前で発表したことも、システムに足りないものを振り返る良いきっかけになりました。締め切りは10月15日です。ここからです。
AIを使った開発で、実習中に学んだこと
AIは速い。だから、人間がゴールを持つ AIを使うと、実装や改善を速く進められます。その分、人間がゴールと評価基準を持つ必要があると学びました。
良し悪しを判断するのは人間 何が良いのか、何を直せば目標に近づくのかを判断するのは、自分の仕事でした。
実際に動かして確かめる 作ったものは、実際に動かして確かめることが大切だと感じました。
最後に
実習期間中にご指導いただいたスリーアップ・テクノロジーの皆さまに、お礼を申し上げます。ありがとうございました。
今回は、オープンデータを Google Cloud でAIが分析する環境を構築しました。これからは、企業の重要なデータを扱うAIシステムを構築できる人材を目指します。