GEMINI LABEN
MEMORY — Memory Bank の Memory Profiles が GA になりました。静的スキーマの構造化プロファイルにより、セッション中の検索を挟まずに情報へ到達できますSCOPE — プロファイルは取り込み時のスコープごとに分離され、スキーマとスコープの組み合わせに対して単一のプロファイルが維持されますINGEST — IngestEvents API が GA になり、イベントのストリーミング・メモリのリビジョン管理・メタデータの付与が扱えるようになりましたAUDIO — gemini-3.1-flash-tts-preview が streamGenerateContent 経由のストリーミングに対応し、読み上げ開始までの待ち時間が縮みましたCLASSROOM — 8月10日から、既にアクセス権を付与されている K-12 と高等教育の全年齢の学生が Gemini in Classroom を利用できるようになりますSUNSET — 停止日が迫っています。8月17日に画像生成モデル、20日に Grok 4.1 ファミリー、31日に gemini-robotics-er-1.6-preview ですMEMORY — Memory Bank の Memory Profiles が GA になりました。静的スキーマの構造化プロファイルにより、セッション中の検索を挟まずに情報へ到達できますSCOPE — プロファイルは取り込み時のスコープごとに分離され、スキーマとスコープの組み合わせに対して単一のプロファイルが維持されますINGEST — IngestEvents API が GA になり、イベントのストリーミング・メモリのリビジョン管理・メタデータの付与が扱えるようになりましたAUDIO — gemini-3.1-flash-tts-preview が streamGenerateContent 経由のストリーミングに対応し、読み上げ開始までの待ち時間が縮みましたCLASSROOM — 8月10日から、既にアクセス権を付与されている K-12 と高等教育の全年齢の学生が Gemini in Classroom を利用できるようになりますSUNSET — 停止日が迫っています。8月17日に画像生成モデル、20日に Grok 4.1 ファミリー、31日に gemini-robotics-er-1.6-preview です
記事一覧/開発ツール
開発ツール/2026-04-29上級

Gemini API を Vitest でテストする — TypeScript プロジェクトのモック設計と Function Calling 検証パターン

TypeScript で Gemini API を組み込んだコードを、Vitest で安全にテストするための実践パターンを紹介します。SDK のモック設計、Function Calling の検証、ストリーミング応答のテストまで、個人開発で運用してきた構成をそのままお見せします。

gemini-api280vitesttypescript15testingmockfunction-calling20

プレミアム記事

プロンプトを一行直したら、本番のレスポンスが別物になっていた

これは私が個人開発のサイドプロジェクトで実際に踏んだ事故です。商品レビューを Gemini で要約する関数のシステム指示を「箇条書きで 3 点」から「重要度順に 3 点」に変えただけで、出力に含まれる「総合評価」の一文が消え、リリース後しばらく気づかないまま静かに品質が落ちていました。Pytest なら回帰テストの記事はたくさんあるのに、TypeScript 側で同じことをやるための実装例が意外と見つからず、結局その場で書き起こすことになりました。

本稿はそのときの構成を整理したものです。Vitest と @google/generative-ai SDK をどう組み合わせれば、Gemini を呼ぶコードを安心して書き直せる土台ができるのか。Function Calling の検証やストリーミングのテストを、私が普段使っているパターンのままお見せします。

対象は TypeScript で Gemini API を触り始めて数週間〜数ヶ月、テストの土台を整えたい個人開発者の方を想定しています。チーム開発でも、最小構成の出発点として読んでいただけると思います。

なぜ Vitest を選ぶのか — Jest と比べた個人開発者目線

最初にここを書いておきます。Jest でも同じことはできます。ただ TypeScript と ESM 中心のプロジェクトでは、私は Vitest のほうを選びます。理由は三つあります。

まず、ESM サポートが素直です。@google/generative-ai を含む最近の SDK は ESM を前提に設計されていることが多く、Jest だと transform 設定で苦戦するケースがありますが、Vitest はほぼ素のまま動きます。次に、Vite ベースのプロジェクト(Astro、SvelteKit、Remix など)と設定を共有できます。最後に、起動が速く、テスト駆動でプロンプトを試行錯誤する作業に向いています。Gemini を呼ぶテストは比較的時間がかかるので、テストランナー側のオーバーヘッドが小さいのは地味に効きます。

逆に Jest を残す理由がある場面もあります。React Native や、既存の Jest 資産が大きいプロジェクトでは無理に乗り換える必要はありません。本稿のパターンはほぼそのまま Jest にも移植できますので、お手元の環境に合わせて読み替えてください。

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

この記事の続きを読む

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

この記事で得られること
429・503 を意図的に発生させてリトライ上限と即時失敗を固定するテスト設計
vi.useFakeTimers で指数バックオフを実時間ゼロで検証する手法
実 API を一切呼ばず 41 本を 0.9 秒で回す構成と、月一万回超の API 節約の実測
Stripe による安全な決済 · いつでもキャンセル可能

この記事を購入する

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

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

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

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

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

関連記事

開発ツール2026-04-03
Next.js 15 App Router × Gemini API フルスタック本番構築
Next.js 15 App RouterとGemini APIを組み合わせたフルスタックAIアプリを本番レベルで構築する完全ガイド。Server Actions、Streaming、RAG、認証・レート制限まで徹底解説します。
開発ツール2026-03-31
Gemini API × MCP サーバー自作 — TypeScript でカスタムツールサーバーを構築しAIエージェントを拡張する
Model Context Protocol (MCP) のカスタムサーバーを TypeScript で自作し、Gemini API と連携する方法を解説。設計パターン、認証、エラーハンドリング、本番デプロイまで網羅する実践ガイドです。
API / SDK2026-05-09
Gemini Live API で画面共有しながら音声で対話する『AI ペアプログラマー』を TypeScript で構築する
Gemini Live API と getDisplayMedia で『画面を見せながら音声で相談できる AI ペア』を TypeScript で構築する手順を、コスト最適化と落とし穴まで含めて実装プレイブックにまとめました。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます
もっと見る →