◉GEMINI LABEN
●ARGON — gemini-4-argon が 10/13 に GA。複雑なコーディング・エージェント・数学・科学向けです●DEEP RES — deep-research-pro-preview-12-2025 は 10/23 に停止、残り6日。移行先は deep-research-preview-04-2026●NANO — gemini-nano-banana-2.1 が GA(10/06)。gemini-3.1-flash-image は非推奨で停止日は未発表です●MCP — ツール結果が 8.5万トークンに膨らんだ事例を、ADK で 310 トークンに包んで抑えた報告が出ています●FLASH — gemini-3.7-flash と 3.5-flash は新しい Flash モデルに自動で回されます(10/08)●NEW — クラッシュ報告を毎回ゼロから読ませない — 既知バグ早見表を先に grep し…●ARGON — gemini-4-argon が 10/13 に GA。複雑なコーディング・エージェント・数学・科学向けです●DEEP RES — deep-research-pro-preview-12-2025 は 10/23 に停止、残り6日。移行先は deep-research-preview-04-2026●NANO — gemini-nano-banana-2.1 が GA(10/06)。gemini-3.1-flash-image は非推奨で停止日は未発表です●MCP — ツール結果が 8.5万トークンに膨らんだ事例を、ADK で 310 トークンに包んで抑えた報告が出ています●FLASH — gemini-3.7-flash と 3.5-flash は新しい Flash モデルに自動で回されます(10/08)●NEW — クラッシュ報告を毎回ゼロから読ませない — 既知バグ早見表を先に grep し…
記事一覧/API / SDK
◈ API / SDK/2026-06-19中級

Gemini API の Google Maps グラウンディングで位置情報AIを作る — 料金とソース表示の義務を踏まえた実装メモ

Gemini API の Google Maps グラウンディングで「近くのおすすめ」を提案する機能を実装した運用メモです。緯度経度を渡す最小実装、義務である出典表示への対応、$25/1K の課金を踏まえ地理的な意図のときだけツールを有効化する設計を解説します。

gemini119gemini-api287grounding8google-mapslocation

✦ プレミアム記事

癒し系アプリに「いま開いている場所の近くで、気分転換に立ち寄れる静かなカフェ」を提案する機能を足せないか、と考えたことがあります。個人開発で続けているアプリの多くは位置情報を扱ってこなかったので、最初に頭をよぎったのは「世界中の店舗データをどうやって自前で持つのか」という現実的な壁でした。Places の有料 API を叩いてランキングを自作するのは、ひとりで運用するには重すぎます。

その壁を回避できるのが、Gemini API の Google Maps グラウンディングです。モデルに「場所の文脈」を渡し、回答を Google Maps の実データ(店舗・レビュー・営業時間など)に裏づけてもらう仕組みで、2026年6月時点では Gemini 3.5 Flash を含む複数モデルで使えます。ただ、動かすだけなら数行で終わる一方、課金の構造と出典表示のルールを知らずに本番へ出すと、後で痛い目を見ます。私が実装しながら整理した勘所を、順を追って残しておきます。

グラウンディングは「場所の文脈」をモデルに渡す道具

このツールの実体は、テキスト検索です。ユーザーの問いに地理的な文脈(「近くの」「San Francisco の」など)が含まれていると、モデルが Google Maps へ問い合わせて、その結果を踏まえた回答を生成します。緯度・経度を渡せば「near me(近く)」系の問いはその座標を基準に解釈され、固有名や非ローカルな問いでは座標の影響はほとんど受けません。

処理の流れは次のとおりです。ユーザーが地理的な意図を含む問いを送る、モデルがツールを呼ぶ、Maps サービスが店舗やレビューを引く、その実データで回答が組み立てられ、最後に出典つきのテキストが返ってきます。RAG を自前で組むときの「検索 → 文脈注入 → 生成」を、Google 側が場所データに特化して肩代わりしてくれる、と捉えると腑に落ちます。

注意したいのは、このツールが既定では無効だという点です。明示的に有効化したリクエストでしか動きません。これは設計ミスではなく、後述する課金とレイテンシを考えると、むしろありがたい既定値です。

最小実装 — ツールを有効化して緯度経度を渡す

まずは素直に動かします。tools に Google Maps を入れ、必要なら toolConfig で座標を渡すだけです。Python の公式 SDK(google-genai)ではこう書きます。

from google import genai
from google.genai import types
 
client = genai.Client()  # GEMINI_API_KEY を環境変数から読む
 
prompt = "ここから徒歩15分以内で、静かに過ごせるカフェはありますか?"
 
response = client.models.generate_content(
    model="gemini-3.5-flash",
    contents=prompt,
    config=types.GenerateContentConfig(
        # Google Maps グラウンディングを有効化
        tools=[types.Tool(google_maps=types.GoogleMaps())],
        # 任意: ユーザーの現在地を文脈として渡す(例は東京駅周辺)
        tool_config=types.ToolConfig(
            retrieval_config=types.RetrievalConfig(
                lat_lng=types.LatLng(latitude=35.681236, longitude=139.767125)
            )
        ),
    ),
)
 
print(response.text)

JavaScript(@google/genai)でも構造は同じで、googleMaps: {} を tools に入れ、toolConfig.retrievalConfig.latLng に座標を渡します。

import { GoogleGenAI } from "@google/genai";
 
const ai = new GoogleGenAI({}); // GEMINI_API_KEY を環境変数から
 
const response = await ai.models.generateContent({
  model: "gemini-3.5-flash",
  contents: "ここから徒歩15分以内で、静かに過ごせるカフェはありますか?",
  config: {
    tools: [{ googleMaps: {} }],
    toolConfig: {
      retrievalConfig: {
        latLng: { latitude: 35.681236, longitude: 139.767125 },
      },
    },
  },
});
 
console.log(response.text);

ここまでで「近くのカフェ」を聞けば、それらしい回答は返ってきます。けれど、この状態のまま画面に出すと規約違反になります。返ってきた出典を、ルールに沿って必ず表示しなければならないからです。

✦

ここまでお読みいただきありがとうございます。

この記事の続きを読む

この先には、実装コードやベンチマーク結果など、実務でお役に立てる内容をご用意しています。このサイトは広告を掲載しておらず、サーバーや開発にかかる費用はメンバーの皆様のご支援で成り立っています。もしお役に立てていましたら、ご支援いただけますと大変ありがたいです。

この記事で得られること
✦自前の場所データベースを持たずに「近くのおすすめ」機能を Gemini 3.5 Flash で動かす最小実装を、Python と JavaScript の両方で手に入れられる
✦$25 / 1K という別枠課金で「常時ON」が破綻する理由を理解し、地理的な意図があるときだけツールを有効化するコスト設計に切り替えられる
✦groundingChunks の出典表示の義務(Google Maps の表記ルール)を満たし、規約面でアプリが止まるリスクを避けられる
Stripe による安全な決済 · いつでもキャンセル可能
✦

この記事を購入する

この先の内容をすべてお読みいただけます。一度のご購入で、いつでも何度でもアクセスできます。このサイトは広告を掲載しておらず、皆さまのご支援がサーバー費用などの運営を支えています。

または
メンバーシップなら全記事が読み放題 →
シェア

お読みいただきありがとうございます

Gemini Lab は広告なしで運営しており、サーバー費用などの運営コストはメンバーシップのご支援で賄っています。実装コード・ベンチマーク・本番設計パターンなど、実務でお役立ていただける記事を毎日更新しています。もし読んでよかったと感じていただけましたら、ぜひご覧ください。

  • ✦コピー&ペーストで使える実装コード付き
  • ✦毎日新しい上級ガイドを追加
  • ✦¥580/月 または ¥1,480 の永久アクセス
メンバーシップを見る →

関連記事

◈ API / SDK2026-09-04
ループ音源のプチノイズは、Gemini に聴かせる前に波形の端で切り分けられます
環境音のループ再生で折り返しだけがプチッと鳴る。音声理解に丸ごと投げる前に、波形の端の段差を内部の変化量で正規化してふるい分ける手順と、配布形式への変換で継ぎ目が作り直される落とし穴をまとめました。
◈ API / SDK2026-08-23
アプリに載せる AI 機能を、実行時呼び出しから配布前の一括処理に寄せました
アプリに Gemini を組み込むとき、実行時に呼ぶか配布前に呼び終えるかで呼び出し回数の増え方が変わります。素材数に比例させる設計へ切り替えた判断基準と、冪等な一括処理の実装をまとめました。
◈ API / SDK2026-08-22
メディエーショングループが20を超えたとき、設定の抜けをどう見つけるか
広告メディエーションのグループが増えると、設定の抜けや型のずれが静かに溜まります。設定を1枚の表に正規化して機械でずれを確定させ、判断が必要なセルだけを Gemini に渡す分担にした手順をまとめました。