GEMINI LABEN
CLI — Gemini CLIとGemini Code Assist IDE拡張は6/18でリクエスト受付を終了しました。移行先はAntigravity、ターミナル派にはGo製のAntigravity CLIですFLASH — Gemini 3.5 Flashが一般提供(GA)に。エージェントとコーディング用途で持続的にフロンティア性能を出す最も賢いモデルと位置づけられていますIMAGE — gemini-3.1-flash-image-previewとgemini-3-pro-image-previewが非推奨となり、6/25にシャットダウン予定です。参照コードは後継へ切替をAGENTS — Managed Agentsが公開プレビューに。Googleがホストする隔離Linuxサンドボックスでステートフルな自律エージェントを動かせますSEARCH — File Searchがgemini-embedding-2による画像のマルチモーダル検索に対応しましたMIGRATE — 期限つきの非推奨や停止が続くため、CLIや旧モデルを組み込んだ自動化は移行状況の記録が欠かせませんCLI — Gemini CLIとGemini Code Assist IDE拡張は6/18でリクエスト受付を終了しました。移行先はAntigravity、ターミナル派にはGo製のAntigravity CLIですFLASH — Gemini 3.5 Flashが一般提供(GA)に。エージェントとコーディング用途で持続的にフロンティア性能を出す最も賢いモデルと位置づけられていますIMAGE — gemini-3.1-flash-image-previewとgemini-3-pro-image-previewが非推奨となり、6/25にシャットダウン予定です。参照コードは後継へ切替をAGENTS — Managed Agentsが公開プレビューに。Googleがホストする隔離Linuxサンドボックスでステートフルな自律エージェントを動かせますSEARCH — File Searchがgemini-embedding-2による画像のマルチモーダル検索に対応しましたMIGRATE — 期限つきの非推奨や停止が続くため、CLIや旧モデルを組み込んだ自動化は移行状況の記録が欠かせません
記事一覧/API / SDK
API / SDK/2026-06-19中級

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

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

gemini84gemini-api243grounding3google-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-06-17
Gemini CLI 終了前に、自動化スクリプトを API へ載せ替えた記録
6/18 に Gemini CLI のホスト応答が停止します。シェルから gemini を呼んでいた自動化スクリプトを、google-genai SDK へ安全に載せ替える手順を、構造化出力・リトライ・コスト計測まで含めて実装ベースでまとめました。
API / SDK2026-06-17
Flash と Pro のルーティングしきい値を、シャドウ再評価で較正し続ける
Flash で生成し、自信のないものだけ Pro に回すルーターは、しきい値を手で決めた瞬間から少しずつ古くなります。サンプリングしたシャドウ再評価で不一致率を測り、しきい値を品質予算から逆算して較正し続ける仕組みを、動くコードで組み立てます。
API / SDK2026-06-16
既定モデルが上がっても折れない — Gemini 呼び出しに起動時の能力検出レイヤーを挟む設計
モデル名のピン留めも既定への依存も、どちらも静かに折れます。いま実際に届いているモデルが何をできるのかを起動時に確かめ、その結果でリクエストを組み立て直す能力検出レイヤーの設計と、コピペで動く Python を残します。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます
もっと見る →