はじめに ── きっかけはLINEの一通から

2026年4月2日の夜。ふくろいAIラボのメンバーからLINEで一報が入った。「磐田市が生成AIチャットボットの導入業者を公募しているらしい」と。

すぐに仕様書を読み込んだ。そこで最初に引っかかったのが、**「利用者の入力情報を第三者に提供しないこと」**という一文。これはつまり、ChatGPTやGeminiなどの外部APIが使えないことを意味する。独自にLLMを構築するか、ローカルでAIを動かす必要がある。

そしてその予算が、年間99万円

GPU搭載サーバーの運用だけで年間90万円以上かかる世界で、開発費も運用費も込みで99万円。率直に言って、この公募の設計自体に無理があると感じた。その問題意識から、磐田市案件の技術検証記事を書いた。

ただ、「できない」と批評するだけでは面白くない。以前、DiscordでAIタスク管理エージェントを開発した経験があり、RAG(検索拡張生成)の仕組みにも心当たりがあった。

「じゃあ、自分たちで作ってみよう」

こうして始まったのが、袋井市AIチャットボットプロジェクト。完全ではないけれど、動くものができた。この記事は、その開発の記録と成果をまとめたものです。

何を作ったか

袋井市の公式ウェブサイト全4,942ページの情報をAIに学習させ、市民からの質問に日本語を含む12言語で回答するチャットボットを構築しました。

チャットボットの概要

**対象データ:**袋井市公式サイトの全ページ(4,942ページ、約270万文字)

**対応言語:**日本語、英語、ポルトガル語、スペイン語、中国語、タガログ語、ベトナム語、インドネシア語、ネパール語、韓国語、タイ語、ミャンマー語

**回答方式:**段階的な絞り込み型(いきなり長文を返さず、確認しながら回答)

公開URL:aichatbot.fukuroi-ailab.xyz

チャットボットを試してみる

技術スタック

「99万円では作れない」と言った前回の記事で問題にしたのは、主にGPUサーバーの運用コストでした。今回は外部APIを活用する方針に切り替えることで、コストを劇的に下げています。

要素 採用技術 選定理由
LLM(AI本体) Gemini 2.5 Flash 高性能かつ低コスト。日本語の精度が高い
検索(RAG) ベクトル検索 + SQLite 4,942ページから関連情報を高速に抽出
サーバー Node.js + Express 軽量で保守しやすい
データベース SQLite(vec拡張) 別途DBサーバー不要。運用コストゼロ
ホスティング 国内VPS(4GB RAM) 月額1,700〜2,200円。安定運用にはVPSが正解

**RAG(Retrieval-Augmented Generation)**とは、AIが回答を生成する前に、まず関連する情報をデータベースから検索してくる仕組みです。AIが「知っている情報」だけでなく、「袋井市の最新の正確な情報」に基づいて答えられるようになります。

主な機能

全4,942ページのRAG検索

袋井市公式サイトの全ページをクローリング(自動収集)し、ページの内容を細かく分割してベクトルデータベースに格納しました。市民が質問すると、AIはまずこのデータベースから関連性の高い情報を探し出し、それをもとに回答を生成します。

たとえば「ごみの出し方を教えて」と聞くと、AIはごみ収集に関連する複数のページから情報を集め、的確な回答を組み立てます。

12言語対応 ── 袋井市の外国人住民のために

袋井市には約6,000人の外国人住民が暮らしています。人口の約7%です。ブラジル、フィリピン、ベトナムなど、さまざまな国からの住民がいます。

市役所の情報は基本的に日本語だが、このチャットボットでは画面上部の言語セレクターで言語を切り替えられる。ポルトガル語を選べばUI全体がポルトガル語に変わり、AIもポルトガル語で回答する。サジェスト質問や免責事項も含め、画面のすべてが選択した言語に翻訳される。

個人情報保護(2層防御)

自治体のチャットボットで最も注意が必要なのが個人情報の取り扱いです。市民がうっかり個人情報を入力してしまうことがあります。

本システムでは2層の防御を実装しました。まず入力段階で個人情報(マイナンバー、電話番号、住所など)のパターンを検出し、AIに送る前にブロック。さらにAI側でも個人情報を含む回答を生成しないよう制御しています。

段階的回答(絞り込み型)

よくあるチャットボットは、質問に対して長い文章をどーんと返してきます。しかし、それではユーザーが本当に知りたいことを見つけにくい。

本システムでは、まず「こういうことをお聞きですか?」と確認し、段階的に回答を絞り込んでいきます。窓口の職員が対応するような自然な対話を目指しました。

管理ダッシュボード

チャットボットは「作って終わり」ではありません。どんな質問が来ているのか、AIはちゃんと答えられているのか、継続的にモニタリングする必要があります。

管理ダッシュボード(認証付き・非公開)では、利用統計、会話ログ、回答品質の確認ができます。

コスト比較 ── 99万円 vs 年間10〜13万円

前回の記事で、磐田市の仕様書通りに作ると最低でも年間90万円以上かかると試算しました。99万円の予算では初期構築すらできない計算でした。

今回のプロジェクトでは、アーキテクチャを工夫することで年間運用コストを10〜13万円に抑えています。

磐田市仕様書どおりの場合

本プロジェクトの場合

※人口の20%が月3回利用、安全率2倍で試算

重要なのは「予算の考え方」を変えること

従来の自治体システムは「年間○○万円の固定費」で予算を組む。しかしAI APIは従量課金だ。使った分だけ支払う。利用が少なければ月数百円、多ければ数千円。この柔軟性を前提にした予算設計が求められる。

「年間99万円」という固定予算の枠組み自体が、クラウドAI時代の実態に合っていない。

従量課金を開発会社に押し付けると何が起きるか

もし自治体が「年間99万円でAI APIの利用料も含めて全部やれ」と発注したらどうなるか。開発会社は使われるほど赤字になる。すると合理的な行動は「なるべく使われないシステムを作る」ことになる。

わざと使いにくいUIにする。回答の質を落として再質問を減らす。利用制限を厳しくする。市民に使われないことが、開発会社にとっての「成功」になる。こんなおかしな構造を生むのが、従量課金サービスを固定予算で丸投げする調達方式だ。

APIの利用料は自治体が直接負担し、開発会社は構築と保守に専念する。この役割分担が健全な構造である。

本番運用では、安定性と信頼性のために**国内VPS(月額約2,000円)**での運用を推奨する。自前サーバーでコストを削るのが目的ではなく、適切なインフラに適切な投資をしつつ、AIの力で全体コストを最適化するのが正しいアプローチだ。

年間運用コスト(人口20%×月3回利用の試算)

約17万円

Gemini API約14.3万円 + VPS約2.4万円 + ドメイン。従量課金だから利用が少なければもっと安く、多ければ増える。

磐田市の要件をどこまで満たせたか

「コストが安い」だけでは意味がありません。磐田市の仕様書が求めていた要件を、このチャットボットがどこまで満たせているのかを検証しました。

詳細は磐田市要件比較レポートにまとめていますが、主要な項目についてはほぼ対応できています。

対応できている主な要件

生成AIによる自然言語回答、公式サイトの情報に基づいたRAG検索、多言語対応、個人情報保護、管理画面での利用状況確認、レスポンシブ対応(スマホ・PC)

仕様書と異なる点

外部API利用(仕様書はデータ外部送信不可)、24/365の有人監視体制なし(自動監視のみ)、第三者機関による脆弱性診断は未実施

「外部APIを使わない」という制約を緩和することで、機能面ではほぼ同等のものを1/10以下のコストで実現できました。逆に言えば、この制約がいかにコストを押し上げていたかがわかります。

関連資料リンク集

本プロジェクトの関連資料をすべてまとめました。

このプロジェクトで最も伝えたいこと

「安く作れた」という話がしたいのではない。伝えたいのは、要件定義の段階から、AIの専門知識を持った第三者の関与が不可欠であるということだ。

磐田市の仕様書は、従来型のシステム調達の発想で書かれていた。「サーバーを国内に置け」「データを外部に出すな」「年間固定予算で収めろ」。これらは従来のシステム開発なら合理的だが、AI時代の現実とは大きくズレている。

AIを活用する世の中だからこそ、何ができて何ができないか、どこにコストがかかるのかを理解した専門家が、企画の初期段階から参画する必要がある。そうでなければ、非現実的な仕様書ができあがり、誰も応札できないか、低品質な成果物が納品される結果になる。

本プロジェクトは、その「ズレ」を可視化するための実証実験です。技術的に何が可能で、どこに限界があるのか。実際に動くものを作ることで、具体的な議論のベースを提供したいと考えています。

ご質問や感想がありましたら、お気軽にお問い合わせください。