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にプロジェクト単位の費用上限が導入され、支出を安全側に抑えられるようになりました
記事一覧/高度な活用
高度な活用/2026-06-16上級

ユーザー投稿のメディアを Gemini に渡す前段を固める — 安全弁としての検証パイプライン実装メモ

ユーザーがアップロードした画像や動画をそのまま Gemini に流すと、MIME 偽装・EXIF 漏洩・展開爆弾・動画の処理待ちといった落とし穴に次々はまります。先頭バイト判定から Files API の状態ポーリング、後始末までを動くコードで段階的に組み立てます。

gemini102multimodal24security8files-api4advanced12

プレミアム記事

受け口を一つ作った瞬間に増える攻撃面

個人開発でアプリに「写真をアップロードして AI に説明させる」機能をひとつ足すだけで、扱う対象が一気に「自分で用意したデータ」から「他人が送ってくる未知のデータ」へ変わります。私自身、最初に画像分類を組み込んだとき、テスト用に通した1枚の写真の付帯情報に撮影地点の座標が残っていて肝を冷やしました。テキスト入力ならまだ目で追えますが、バイナリのメディアは中身が見えません。拡張子は付け替えられますし、見た目はただの風景写真でも、付帯メタデータに撮影地点の緯度経度が残っていることがあります。

ここで組み立てるのは、ユーザー由来のメディアが Gemini に届く前に必ず通る「安全弁」です。題材は google-genai SDK 単体で、外部の重いフレームワークは持ち込みません。処理の流れは、安いチェックから順に並べてゲートを段階化していきます。重い読み込みや API 呼び出しに進む前に、軽い判定で弾けるものを弾くのが基本方針です。

ゲートの並び順を最初に決める

検証は「コストの低い順」に並べると無駄が出ません。私が運用で落ち着いた順序は次の通りです。

  1. サイズの事前確認 — バイトを1つも読まずに os.path.getsize だけで上限超過を弾く。
  2. 先頭バイトによる形式判定 — 拡張子ではなくマジックナンバーで実体を確認する。
  3. 画像の構造的サニタイズ — 展開爆弾の検知と EXIF の除去をまとめて行う。
  4. 送信方式の分岐 — 小さい画像はインライン、大きいメディアと動画は Files API。
  5. 出力のマスキングと後始末 — 戻り値の機密除去と、アップロードしたファイルの削除。

この順に並べておくと、新しい形式や制約が増えたときも「どのゲートを直すか」が迷わず決まります。

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

この記事の続きを読む

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

この記事で得られること
拡張子を信用せず先頭バイトで形式を判定し、判定不能を既定で拒否する検証層
展開爆弾と EXIF 位置情報を Pillow で構造的に無害化する手順
Files API の状態ポーリングと使用後削除まで含めた動画処理の実装パターン
Stripe による安全な決済 · いつでもキャンセル可能

この記事を購入する

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

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

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

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

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

関連記事

高度な活用2026-04-23
Gemini API の Prompt Injection 対策:本番運用で必要なマルチレイヤー防御アーキテクチャ
Gemini API を本番運用するなら避けて通れない Prompt Injection 攻撃に対し、入力サニタイズ・指示強化・構造化出力・モデレーター LLM の4層防御を動くコードで設計する実戦ガイドです。
高度な活用2026-03-28
Gemini API の長期記憶とセッション永続化 — 大規模チャットボットを支える設計パターン
Gemini API で大規模チャットボットを構築する際に不可欠な、長期記憶管理・セッション永続化・トークン予算制御の設計パターンを本番環境の実装例とともに解説します。
高度な活用2026-07-12
待ち時間を守りながら難問だけ深く考えさせる — Gemini の thinking_level をリクエストごとに振り分ける
アプリの AI 機能を全リクエスト high で回すと待ち時間と料金が膨らみ、全部 low にすると難問で精度が落ちます。Gemini 3.x の thinking_level をリクエストの難易度で振り分け、モバイルの待ち時間予算を守りながら深い推論を必要な場面だけに回すルーターを、実測値と動くコードで設計します。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます
もっと見る →