BEMAロゴ

エンジニアの
成長を支援する
技術メディア

AIは地方創生の夢を見るか?ハッカソンで挑んだ「地図の中の哲学者」開発秘話とVertex AI・LangChain活用術

はじめに 

こんにちは、株式会社メンバーズのOh ByeongHeonです。 これまで個人でAI技術を学んできましたが、さらなる成長を求め、チームでの開発経験を積みたいと漠然と考えていました。そんなある日、私の挑戦のきっかけとなる一言が舞い込んできます。

「AIハッカソンがあるんだけど、一緒に参加してみない?」

AIフォーオールカンパニーOpen in new tabの同期からの魅力的な誘いでした。Zenn主催の「第2回AI Agent Hackathon with Google Cloud」。面白そうだ、と即答したものの、すぐに大きな壁にぶつかります。ルールに書かれた必須技術は「Google Cloud アプリケーション関連サービスの利用」と「Google Cloud AI 技術の利用」。正直に言うと、どちらも全く触ったことのない、まさに知識ゼロの状態でした。

「AIを活用したチーム開発を経験したい。でも、今のスキルでは足を引っ張るだけではないか…?」

新しい挑戦への好奇心と、スキル不足への大きな不安。その葛藤の末に、私の無謀とも思える挑戦は始まりました。この記事では、スキルゼロからハッカソンに挑み、AIエージェント「地図の中の哲学者」を開発したリアルな体験談をお届けします。

企画立案 - 私たちが「地方の過疎化」に挑んだ理由

今回のハッカソンで私たちが挑んだのは、「地方の過疎化」という社会課題です。私たちは、単に便利なツールを作るのではなく、人の心を動かし、知的好奇心を刺激するようなAIエージェントでこの課題に向き合いたいと考えました。

そこで着目したのが「地方の隠れた魅力」です。有名な観光地だけでなく、すべての土地には語られるべき歴史や文化、人々の営みがあります。その多くが情報として埋もれてしまっている現状を、AIの力で変えられないかと考えました。

こうして生まれたのが、AIエージェント「地図の中の哲学者」です。ユーザーが地図上で都道府県を選ぶだけで、AIがその土地に関する膨大な情報を自律的にリサーチし、分析・再構成。まるでその土地を深く知る哲学者が語るような、示唆に富んだオリジナル記事を生成します。

目指したのは、単なる情報提供の先にある「新しい地域発見体験」。AIが紡ぐ物語を通して、読者がその土地に想いを馳せ、訪れてみたいと感じるきっかけを作ることが、このプロダクトの核心です。

技術選定 - 課せられた条件と僕らのアーキテクチャ

短期間でこの複雑なアイデアを実現するため、技術選定は極めて重要でした。そして、今回のハッカソンには、参加の必須条件として以下の2点が定められていました。

  1. Google Cloud アプリケーション関連サービスの利用
  2. Google Cloud AI 技術の利用

このルールが、私たちの技術選定の大きな土台となりました。私たちはこれらの条件を満たし、かつ迅速な開発を実現するために、以下のアーキテクチャを設計しました。

カテゴリ

技術スタック

役割

フロントエンドフレームワーク

Streamlit

WebアプリケーションのUI(ユーザーインターフェース)を構築

アプリケーションサーバー

Cloud Run

Streamlitで作成されたアプリケーションをコンテナとして実行・ホスティング

CI/CD

Cloud Build

GitHub上のソースコードからコンテナイメージを自動でビルド

ソースコード管理

GitHub

アプリケーションのソースコードを管理

AIオーケストレーション

LangChain

複数のAIモデルやAPIを連携させ、自律的な処理フローを制御

AIモデル(テキスト生成)

gemini-2.0-flash-lite-001 on Vertex AI

記事本文、タイトル、名言などのテキストコンテンツを生成

AIモデル(画像生成)

imagen-3.0-generate-002 on Vertex AI

記事を彩る4コマイラストや挿絵などの画像を生成

API

Custom Search API

LangChainエージェントがWeb情報を検索するために使用するツール

必須条件であるGoogle Cloudのサービス群を全面的に採用し、特にAIの心臓部にはVertex AIの最新モデル群を選択。サーバーレスでインフラ管理の手間が少ないCloud Runや、デプロイを自動化するCloud Buildを組み合わせることで、開発チームがプロダクトのコアロジック開発に集中できる環境を整えました。

開発プロセス - 3つの壁とチームで乗り越えた技術的工夫

アーキテクチャは決まったものの、私にとって開発は苦難の連続でした。この熾烈な開発を支えてくれたのが、ハッカソン開始直後にチームで固めた開発基盤です。Dockerで環境を統一し、Git-flowに基づいたブランチ戦略を立てたことで、私のような初心者が新しい技術のキャッチアップに集中しつつも、チーム全体の開発がスムーズに進む体制を築けました。

それでもなお、私の前には大きな3つの壁が立ちはだかりました。

【第1の壁】意図通りに動かないLangChain

私にとって最初の壁はLangChainでした。知識が全くない状態から公式ドキュメントを読み解く日々。しかし、単純なプロンプトではAIが期待する思考プロセスを経てくれず、全く意図通りに動作しませんでした。

この壁を突破する鍵が、チームで設計した「自律的エージェント」の考え方です。単一の巨大なプロンプトに頼るのではなく、「検索」「分析」「執筆」といった各ステップを個別のタスクとして定義。それらをエージェントが自律的に呼び出す設計を採用しました。このおかげで、複雑な処理でも安定して実行できるようになり、ようやくLangChainを飼いならすことができました。

【第2の壁】凡庸な画像しか生成できないAI

次なる壁は、物語に合う画像を生成することでした。「〇〇県の画像」といった単純な指示では、ありきたりな風景画像しか生成されず、物語の世界観を表現できずに頭を抱えました。

ここで私は、「動的にプロンプトを生成する仕組み」を実装。『地域の特徴』『記事のメインタイトル』『各セクションの見出し』といった複数の情報を組み合わせ、画像スタイルまで指定した詳細なプロンプトを自動で作るようにしたのです。この多角的な情報こそが、物語の説得力を高める芸術的な画像を生み出す鍵となりました。

【第3の壁】地図が重い! ライブラリ変更でパフォーマンス改善

最後の壁は、UIの地図表示でした。当初、地図には定番のfoliumライブラリを使いましたが、Streamlit上だと思うように速度が出ず、ユーザー体験を損なう大きな問題となりました。

そこで、解決策としてより高速でStreamlitと相性の良いpydeckライブラリに切り替えました。この判断が成功の鍵となり、パフォーマンスは劇的に改善。「サクサク動く地図」が実現でき、プロダクトの完成度を大きく高めることができました。

挑戦から得た学び - AIは最高の「知的パートナー」だった

数々の壁をチームで乗り越え、「地図の中の哲学者」が初めて一本の記事を、意図通りの画像と共に生成した時の感動は今でも忘れられません。AIが私たちの意図を汲み取り、想像を超えるクオリティの物語を紡ぎ出した瞬間、AIが単なる「ツール」ではなく、私たちの創造性を拡張してくれる最高の「知的パートナー」になり得ることを確信しました。

そして何より、この経験を通してチーム開発の価値を痛感しました。スキル不足で心が折れそうになった時、励まし、助けてくれた同期の存在。一人では決してこのプロダクトを完成させることはできませんでした。

個人での学習とは全く違う、技術的な成長と精神的な支えが両立する「チームで創り上げる」という経験そのものが、私にとって最大の収穫です。

おわりに - 次の一歩を踏み出すあなたへ

「地図の中の哲学者」は、まだ生まれたばかりの小さな一歩です。しかし、知識ゼロから始まったこの挑戦は、私に「やればできる」という大きな自信を与えてくれました。

もしこの記事を読んで「自分にはスキルがないから無理かも」と感じた方がいれば、伝えたいです。挑戦する気持ちと、助けてくれる仲間さえいれば、スキルは後からついてきます。このハッカソンが、私にとってそうであったように。

この記事が、AIを使ったプロダクト開発の魅力や、Google Cloudの可能性を感じる一助となれば、これ以上嬉しいことはありません。最後までお読みいただき、ありがとうございました。

この記事が役に立ったと思ったら、
ぜひ「いいね」とシェアをお願いします!

リンクをコピーXでシェアするfacebookでシェアする

この記事を書いた人

Oh ByeongHeon
Oh ByeongHeon
2024年に新卒でメンバーズに入社したエンジニアです。現在の業務では、主にWebサイト開発のフロントエンド領域を担当し、UIの裏側を支えています。最近は、日々の業務に加え、AI技術が持つ可能性に夢中になっています。
詳しく見る
ページトップへ戻る