Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【ITニュース解説】Germany Has No america.gov. So I Built an Unofficial One.

2026年10月15日に「Dev.to」が公開したITニュース「Germany Has No america.gov. So I Built an Unofficial One.」について初心者にもわかりやすく解説しています。

作成日: 更新日:

ITニュース概要

ドイツの複雑な行政手続き情報を集約し、AIで「Ask Germany」を開発。4万超の公式ページから多言語で信頼できる回答を提供し、各個人に合った手続きを案内する。ユーザーのプライバシー保護を最優先している点が特徴だ。

ITニュース解説

ドイツでの生活を始める際、行政手続きの複雑さに戸惑う人は多い。転居に伴う住所登録一つをとっても、開くウェブサイトは増え、複数のPDFを読み比べ、時には数年前のフォーラムの投稿に矛盾した情報を見つけることさえある。この問題は外国人だけでなく、ドイツ人自身も感じている。アメリカには「america.gov」のような国の統一ウェブサイトが存在するが、ドイツにはそれがなく、連邦政府、16の州、400の地区や都市がそれぞれ独自のポータル、規則、担当部署を持っているため、必要な情報が広範囲に散らばっているのが現状だ。

このような課題を解決するために開発されたのが「Ask Germany」というシステムである。このシステムは、ユーザーが自分の言語で質問すると、公式情報源のみから回答を生成し、そのすべての文に出典ページへのリンクを付与する。さらに、ユーザーの居住地に基づいて、担当する行政機関がどこかも教えてくれるのが大きな特徴だ。

「Ask Germany」の背後には、膨大な量の公式データがある。約46,641の公式ページから、約161,000の検索可能なテキスト断片が生成されている。これに加えて、すべての地区と都市を網羅する連邦サービスディレクトリや、約370の市や地区のウェブサイトの情報も利用している。回答はドイツ語、英語、トルコ語、アラビア語、ウクライナ語に対応しており、一つの回答にかかるAIコストは非常に低い。インフラ費用も月額約90ドルに抑えられ、すべてEU内で運用されている。

このシステムの最も重要な原則は、「AIは決して記憶から回答しない」という点である。一般的なチャットボットは、住所登録の方法について自信満々に答えるかもしれないが、州の情報を混同したり、信頼性の低いブログを引用したり、架空の期限を伝えたりする可能性がある。在留許可や手当に関する情報において、誤った回答は、何も答えないよりも深刻な問題を引き起こす。そのため、「Ask Germany」のAIモデルは、自身の学習データから知っていることを直接答えるようには設計されていない。代わりに、公式テキストから取得された情報断片のみを受け取り、それに基づいて回答を生成する。この仕組みにより、すべての回答文には必ず情報源を示す番号が付与され、有効な情報源を持たない文は生成後に削除される。もし質問に対して十分に近い公式テキストが見つからない場合は、推測することなく「該当なし」と回答し、適切な公式ポータルへのリンクを提示する。つまり、「知らない」と正直に伝えることも、このシステムの重要な機能なのだ。

公式知識はどのように集められているのだろうか。システムの根幹をなすのは、連邦サービスディレクトリ(Servicesuche Bund、PVOGとも呼ばれる)である。これはドイツの各地区における行政サービスを説明する公開検索APIを提供しており、担当部署の住所、電話番号、開庁時間といった詳細情報も含まれる。これにより、地域に特化した回答が可能になる。この上に、クローラーと呼ばれるプログラムが、連邦や州のポータルサイト、そして約370の市や地区のウェブサイトを定期的に巡回し、テキスト情報を収集している。このクローラーは、ウェブサイトのルール(robots.txt)やドイツの著作権法におけるテキスト・データマイニングのオプトアウト規定を遵守し、各サイトへのリクエスト頻度も秒間1回に制限されている。一部の州ポータルはJavaScriptアプリケーションであったり、ボット対策が施されていたりするため、それらの情報は連邦ディレクトリから補完される。収集されたテキストデータは、まずS3というストレージサービスにアーカイブされ、これが「真の情報源」として機能する。例えば、AIのテキストを数値に変換するモデル(エンベディングモデル)を切り替える際には、このアーカイブからインデックス全体を再構築することで、再度ウェブサイトをクロールする手間を省くことができた。

ドイツ語特有の課題にも対応している。ドイツ語は単語を結合して新しい単語を作る特性がある。「Wohnungsgeberbestätigung」(住所登録に必要な大家の確認書)のように長い複合語が頻繁に登場するため、ユーザーが「Bestätigung vom Vermieter」(大家からの確認書)のように言い換えて検索した場合、通常のキーワード検索では共通点を見つけにくい。そこで、「Ask Germany」では、インデックスを作成する際と、ユーザーの検索クエリを処理する際の両方で、複合語を分割して検索できるように工夫している。この改善により、複合語に依存する質問に対する検索精度が大幅に向上したという。

検索自体は、ハイブリッド方式を採用している。これは、AIによる意味ベースの検索(Titan Text Embeddings v2というモデルで生成された数値ベクトルをpgvectorというPostgreSQLの拡張機能に保存)と、Postgresのドイツ語全文検索を組み合わせるものだ。これにより、検索結果をユーザーの居住地の町、地区、州、連邦レベルで絞り込み、より関連性の高い情報を提供できる。5つの言語で165の質問を使った評価では、91%の確率で適切な公式情報源が上位8件の検索結果に含まれていた。

ユーザーが質問を送信してから回答が返ってくるまでの道のりも緻密に設計されている。まず、ブラウザ側で税ID、IBAN、ID番号、電話番号、メールアドレスといった個人情報を自動的に削除し、ユーザーに何が削除されたかを表示する。また、CAPTCHAの代わりに、ブラウザが小さな計算パズルを解く「プルーフ・オブ・ワーク」を行い、一時的な匿名のセッションを取得する。アカウント登録は不要だ。サーバー側では、さらに名前などの個人情報が削除され、安全モデル(Qwen3 235B)が質問内容をスクリーニングする。次に、DeepSeek V3.2というAIモデルが質問の言語を検出し、所在地を抽出し、質問を公式なドイツ語の検索クエリに書き換える。抽出された所在地は、連邦ディレクトリを通じて公式の地域キーに変換される。そして、前述のハイブリッド検索が実行され、その結果に基づいて「関連性ゲート」と呼ばれる仕組みが、回答を生成するか、「対象外」と判断するかを決定する。DeepSeekは、抽出された情報断片のみを使って、ユーザーの言語で短い回答を作成し、公式のドイツ語用語を括弧書きで添える。最後に、出典のないステートメントは削除され、情報源と担当部署の情報とともに回答がユーザーにストリーミングされる。

このシステムでは、質問も回答も、一切保存されない。これは「Ask Germany」の開発における揺るぎないプライバシー原則であり、コストを伴う決断でもあった。通常であれば、アプリは過去の回答をキャッシュしてコストを削減したり、ユーザーの質問を分析して人気のあるトピックを特定したりするだろう。しかし、これらはすべてデータを保存することになるため、「Ask Germany」では行われていない。匿名で集計されるのは、使用されたAIモデル、処理されたトークン数、時間あたりのコストといった情報のみで、質問や回答のテキスト自体は記録されない。この徹底したプライバシー保護は、特に在留許可などのデリケートな問題を抱える利用者にとって、大きな安心材料となる。システムが「何も保存しない」という約束は、利用者自身が確認できる信頼の証となるのだ。

技術スタックとしては、ウェブサイトはNext.jsとVercelで構築され、APIはPythonとFastAPIを使用し、AWS ECS Fargateで稼働している。データベースには、PostgreSQL 17とpgvectorをAWS RDSのプライベートネットワーク内で利用し、インターネットからは直接アクセスできないようになっている。AIモデルには、DeepSeek V3.2、Qwen3 235B、Titan Embeddings v2がAmazon Bedrock上で稼働しており、クローラーやその他のバックグラウンド処理はPython、httpx、trafilaturaを使ってFargateタスクとして実行される。これら全体のインフラは、CloudFormationというツールを使って一元的に管理されている。

開発の過程では、いくつかの困難に直面した。無料のデータベースサービスでは容量が足りなくなり、AWSへの移行を余儀なくされた。また、AIモデルのサービスであるBedrockが当初想定していたフランクフルトでは利用できず、ストックホルムで運用することになった。これはEU内ではあるが、計画変更が必要となった。特に、エンベディングの再インデックスにかかるコストを大幅に過小評価していた。当初は1ドル以下で1時間程度と見積もっていた作業が、実際には約180CPU時間もかかることが判明し、見積もり前の測定の重要性を痛感した。さらに、クローラーがウェブサイトをどのように見るかという問題もあった。ウェブサイトのトップページに表示される公式ウェブサイトの数は、サーバー側でレンダリングされたHTMLでは古い情報(70サイト)が記載されていたが、ブラウザでJavaScriptが実行されると最新の数字(495サイト)に更新された。検索エンジンやリンクプレビューはJavaScriptを実行しないため、常に古い情報を見てしまうという問題だ。AI検索エンジンが自分のサイトをどう認識するかを気にするなら、JavaScriptが実行される前のHTMLの内容を確認することが重要だという教訓を得た。

「Ask Germany」は今後、最もよくある質問に対するガイドページを作成し、検索エンジンやAIアシスタントが引用できる具体的な情報を提供していく予定だ。また、ドイツ語と英語の適切なURL分割や、ユーザーから報告される誤った回答への対応など、継続的な改善が計画されている。

このプロジェクトは、複雑な行政情報を誰もがアクセスしやすい形に整理するという、技術と公共サービスが交差する興味深い試みである。技術的な課題を乗り越え、ユーザーのプライバシーを最優先しながら、信頼性の高い情報提供を目指す姿勢は、システム開発において学ぶべき点が非常に多い。

関連コンテンツ

関連IT用語

関連ITニュース