GEMINI LABEN
FLASH35 — Gemini 3.5 Flashが一般提供となり、gemini-flash-latestが指す実体になりました。日常的な生成を速く安価にこなせますAGENTS — Gemini APIのManaged Agentsがpublic previewに。Google管理の隔離Linuxサンドボックスで自律的なエージェントを構築できますMEDIA — Nano Banana 2 Lite(画像)とGemini Omni Flash(動画・会話的編集)がAI Studio・API・Enterprise Agent Platformで利用可能にTTS — gemini-3.1-flash-tts-previewの音声生成がstreamGenerateContent経由でストリーミング対応になりましたTRANSLATE — 新しい音声モデルが70以上の言語を自動判別し、話者の自然な抑揚を保ったままライブ音声翻訳を行いますSPENDCAP — AI Studioにプロジェクト単位の費用上限が導入され、支出を安全側に抑えられるようになりましたFLASH35 — Gemini 3.5 Flashが一般提供となり、gemini-flash-latestが指す実体になりました。日常的な生成を速く安価にこなせますAGENTS — Gemini APIのManaged Agentsがpublic previewに。Google管理の隔離Linuxサンドボックスで自律的なエージェントを構築できますMEDIA — Nano Banana 2 Lite(画像)とGemini Omni Flash(動画・会話的編集)がAI Studio・API・Enterprise Agent Platformで利用可能にTTS — gemini-3.1-flash-tts-previewの音声生成がstreamGenerateContent経由でストリーミング対応になりましたTRANSLATE — 新しい音声モデルが70以上の言語を自動判別し、話者の自然な抑揚を保ったままライブ音声翻訳を行いますSPENDCAP — AI Studioにプロジェクト単位の費用上限が導入され、支出を安全側に抑えられるようになりました
記事一覧/API / SDK
API / SDK/2026-06-19中級

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

Gemini API の Google Maps グラウンディングで「近くのおすすめ」を実装する手順を、$25/1K の課金設計と出典表示の義務までまとめた、個人開発者向けの運用メモです。

gemini102gemini-api276grounding8google-maps2location

プレミアム記事

癒し系アプリに「いま開いている場所の近くで、気分転換に立ち寄れる静かなカフェ」を提案する機能を足せないか、と考えたことがあります。個人開発で続けているアプリの多くは位置情報を扱ってこなかったので、最初に頭をよぎったのは「世界中の店舗データをどうやって自前で持つのか」という現実的な壁でした。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-06-24
File Searchの回答に「何ページの、どの図か」まで添える ― 視覚引用メタデータで出典を検証可能にする
File Search の grounding metadata に media_id と page_numbers が加わり、回答のどの一文がどのページ・どの図に基づくのかを辿れるようになりました。PDFと画像を混ぜた参照データで、検証可能な引用UIを組み立てるまでを実装で整理します。
API / SDK2026-07-14
Gemini Code Execution の計算結果とモデルの文章がずれる — 実行結果だけを信頼する検証ゲートの実装
Gemini の Code Execution は実際に走らせた計算結果と、それを説明する自然文を別々に返します。文章側の数値を鵜呑みにすると幻覚を掴みます。実行結果だけを真実として抽出し照合する検証ゲートの実装を、動くコードで解説します。
API / SDK2026-07-13
responseSchema で $ref が使えず詰まったら — responseJsonSchema で再帰スキーマを本番で扱う
Gemini の responseSchema は OpenAPI サブセットで $ref/$defs が使えず、共有定義も再帰も表現できません。responseJsonSchema へ移行し、多言語フィールドの再利用とカテゴリ木の再帰を本番で扱う実装をまとめました。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます
もっと見る →