GEMINI LABEN
NANOLITE — Nano Banana 2 Liteが登場しました。Googleで最も速く、最もコスト効率の高いGemini Imageモデルで、軽量な画像生成を安く回したい用途に向いていますOMNIFLASH — Gemini Omni Flashがpublic previewになりました。ネイティブにマルチモーダルなモデルで、企業や開発者が独自の動的な動画ワークフローを構築できますAGENTS — Managed Agentsが拡張されました。background: trueでサーバー側の非同期実行とポーリング、リモートMCPサーバー連携、対話をまたぐ認証情報のリフレッシュに対応しますMEMORY — Memory BankのIngestEvents APIが一般提供になりました。イベントの取り込みとメモリ生成を分離し、コンテンツを継続的にストリームできますTHROUGHPUT — Provisioned Throughputで、同一モデル・同一リージョンに対して最大7件の保留オーダーを提出できるようになりましたDEPRECATE — 画像生成モデルは8月17日に、Gemini Enterprise Agent PlatformのGrok 4.1系は8月20日に停止される予定ですNANOLITE — Nano Banana 2 Liteが登場しました。Googleで最も速く、最もコスト効率の高いGemini Imageモデルで、軽量な画像生成を安く回したい用途に向いていますOMNIFLASH — Gemini Omni Flashがpublic previewになりました。ネイティブにマルチモーダルなモデルで、企業や開発者が独自の動的な動画ワークフローを構築できますAGENTS — Managed Agentsが拡張されました。background: trueでサーバー側の非同期実行とポーリング、リモートMCPサーバー連携、対話をまたぐ認証情報のリフレッシュに対応しますMEMORY — Memory BankのIngestEvents APIが一般提供になりました。イベントの取り込みとメモリ生成を分離し、コンテンツを継続的にストリームできますTHROUGHPUT — Provisioned Throughputで、同一モデル・同一リージョンに対して最大7件の保留オーダーを提出できるようになりましたDEPRECATE — 画像生成モデルは8月17日に、Gemini Enterprise Agent PlatformのGrok 4.1系は8月20日に停止される予定です
記事一覧/API / SDK
API / SDK/2026-04-13中級

Veo 3.1 Lite APIで低コスト動画生成を始める

Google Veo 3.1 Lite APIを使った低コスト動画生成の実装方法を解説。従来比50%以上のコスト削減を実現しつつ、テキスト・画像から高品質な動画を生成する具体的なコード例と最適化テクニックを紹介します。

gemini-api279veo3video-generation3veo-3-1-litepython103cost-optimization21

「動画生成APIは高すぎる」という思い込みを覆すモデルが登場した

AI動画生成をプロダクトに組み込みたいと考えたとき、多くの開発者が最初にぶつかる壁はコストです。Veo 3やSoraクラスのモデルは1本あたり数十円〜数百円かかり、ユーザーが自由に動画を生成できるサービスを作ろうとすると、あっという間に請求額が膨れ上がる。

2026年3月31日にリリースされたVeo 3.1 Liteは、この課題に正面から取り組んだモデルです。Veo 3.1 Fastと同じ生成速度を維持しながら、コストを50%以上削減しています。720pで1秒あたり約$0.05、つまり8秒の動画1本がおよそ$0.40(約60円)で生成できる計算になります。

個人開発者としてこのモデルを試して最初に驚いたのは、コスト削減の代償として画質が大きく落ちるわけではないという点だった。もちろんVeo 3.1の上位モデルと比べれば差はあるが、SNS向けショート動画やプロトタイプ用途なら十分な品質が出る。ここではVeo 3.1 Lite APIの実装方法と、コストを最小限に抑えながら実用的な動画を生成するテクニックを具体的なコードとともに掘り下げていく。

Veoファミリーの中でLiteを選ぶべき場面

Veo 3.1 Liteを正しく使いこなすには、Veoモデルファミリー全体の中での立ち位置を理解しておく必要があります。

  • Veo 3.1(フルモデル): 最高品質。4K出力対応、リファレンス画像からの生成やFirst-Last-Image制御が使える。コストは最も高い
  • Veo 3.1 Fast: 速度重視。画質を若干落として生成時間を短縮。4K非対応
  • Veo 3.1 Lite: コスト重視。Fastと同等の速度で50%以上安い。720p・1080p対応だが4Kには非対応

Liteを選ぶべきユースケースは3つに集約されます。「大量に生成する必要がある」「プロトタイピング段階で方向性を探りたい」「SNSやWebで使うため4Kは不要」。この3つのどれかに当てはまるなら、Liteが最も合理的な選択になります。

逆に、映像制作の最終出力や、リファレンス画像による厳密なスタイル制御が求められるケースではフルモデルに軍配が上がる。重要なのは「全部Lite」でも「全部フル」でもなく、工程に応じて使い分ける視点です。

環境構築 — APIキー取得からSpend Capsまで

Veo 3.1 Lite APIはGemini APIの一部として提供されています。まだAPIキーを持っていない場合は、Google AI Studio でプロジェクトを作成し、キーを発行しよう。

# Python SDK のインストール
pip install google-genai
 
# 環境変数にAPIキーを設定(実際のキーに置き換える)
export GEMINI_API_KEY="YOUR_GEMINI_API_KEY"

ここで見落としがちな注意点があります。Veo 3.1 Liteは有料プレビュー(Paid Preview)段階にあり、無料枠では利用できません。Google AI Studioでの課金設定が必須です。さらに2026年4月以降、Spend Capsの設定が新規アカウントでは強制されるようになりました。月額の上限を設定しておかないと、意図しないループ処理で高額請求につながるリスクがあります。開発段階では月$10〜$20程度に設定しておくのが安全です。

テキストから動画を生成する基本実装

最もシンプルなtext-to-video(テキストから動画生成)の実装から始めよう。

import time
from google import genai
from google.genai import types
 
# クライアント初期化(GEMINI_API_KEY環境変数を自動読み込み)
client = genai.Client()
 
# テキストから動画を生成
# generate_videos() はロングランニングオペレーションを返す
operation = client.models.generate_videos(
    model="veo-3.1-lite-generate-preview",
    prompt="木漏れ日が差し込む森の中を、一匹の鹿がゆっくりと歩いている。"
           "朝霧が地面に漂い、光の筋が幻想的な雰囲気を作り出している。"
           "スローモーション、シネマティック、浅い被写界深度。",
    generate_video_config=types.GenerateVideoConfig(
        aspect_ratio="16:9",      # 横長(16:9)または縦長(9:16)
        output_resolution="720p", # 720p が最もコスト効率が良い
        number_of_videos=1,       # 1〜4本まで指定可能
        duration_seconds=8,       # 5〜8秒(Liteの対応範囲)
    ),
)
 
# ポーリングで完了を待つ(720p/8秒なら通常2〜4分)
print("動画生成中...")
while not operation.done:
    time.sleep(30)
    operation = client.operations.get(operation)
    print(f"  ステータス確認: done={operation.done}")
 
# 結果を取得して保存
if operation.response and operation.response.generated_videos:
    video = operation.response.generated_videos[0]
    client.files.download(file=video.video, download_path="output.mp4")
    print("✅ 動画を output.mp4 に保存しました")
else:
    print("❌ 動画生成に失敗しました")
    if operation.error:
        print(f"エラー詳細: {operation.error.message}")

このコードで押さえておくべきポイントが2つあります。

ポイント1: 非同期のロングランニングオペレーションgenerate_videos()は画像生成APIとは違い、即座にレスポンスを返さありません。内部で動画レンダリングが走るため、ポーリングで完了を確認する必要があります。720pで8秒の動画なら通常2〜4分だが、サーバー負荷が高い時間帯は5分を超えることもあります。

ポイント2: output_resolutionがコストに直結する。720pと1080pでは1秒あたりの単価が異なります。用途に応じた使い分けが肝心です。X(旧Twitter)やInstagram Reelsへの投稿なら720pで見た目上の差はほぼありません。

画像から動画へ — Image-to-Videoの実装

静止画を起点にして動きを加えるimage-to-videoも、Veo 3.1 Liteが対応しています。ECサイトの商品画像を回転させたい、イラストに微細なアニメーションを付けたいといった用途で威力を発揮します。

from google import genai
from google.genai import types
import time
import pathlib
 
client = genai.Client()
 
# 入力画像をFiles APIでアップロード
image_path = pathlib.Path("product_photo.jpg")
uploaded_image = client.files.upload(file=image_path)
 
# 画像を起点に動画を生成
operation = client.models.generate_videos(
    model="veo-3.1-lite-generate-preview",
    prompt="商品がゆっくりと360度回転し、異なる角度から質感が見える。"
           "白い背景、スタジオ照明、プロフェッショナルな商品撮影風。",
    image=uploaded_image,  # アップロード済み画像を入力として指定
    generate_video_config=types.GenerateVideoConfig(
        aspect_ratio="16:9",
        output_resolution="720p",
        number_of_videos=1,
        duration_seconds=5,  # 商品回転なら5秒で十分
    ),
)
 
print("画像→動画 変換中...")
while not operation.done:
    time.sleep(30)
    operation = client.operations.get(operation)
 
if operation.response and operation.response.generated_videos:
    video = operation.response.generated_videos[0]
    client.files.download(file=video.video, download_path="product_video.mp4")
    print("✅ 商品動画を product_video.mp4 に保存しました")
else:
    print("❌ 変換に失敗しました")
    if operation.error:
        print(f"エラー詳細: {operation.error.message}")

image-to-videoで陥りがちなミスは、入力画像の品質を軽視することです。解像度の低い画像やノイズが乗った画像を入力すると、生成される動画にもそのアーティファクトが引き継がれます。最低でも1280×720以上の解像度で、ピントの合った明瞭な画像を使うのが鉄則です。

コストを半分以下にする5つの実践テクニック

Veo 3.1 Liteは元々安価だが、1日に数百本生成するようなサービスではさらなる最適化が必要になります。実際に試して効果が確認できたテクニックを紹介します。

720pをデフォルトに固定する

前述の通り、解像度はコストに直結します。プレビュー生成、A/Bテスト用の候補作成、社内レビュー用素材など、最終出力以外の用途では必ず720pを指定します。1080pが必要になるのは、YouTube本編やプレゼン資料の最終書き出しくらいです。

尺を必要最小限に絞る

課金は秒単位で計算されます。8秒の動画が不要なら5秒に抑えるだけで37.5%のコスト削減になります。ループ再生を前提としたSNS向け動画なら、5秒で十分なケースが大半です。

まず1本生成してから本番に進む

number_of_videosを2〜4に設定すると複数候補が同時に生成されるが、コストも比例して増える。まず1本生成してプロンプトの方向性を検証し、OKなら本番用に複数本を回す2段階ワークフローが無駄を減らす。

プロンプトにカメラワークを明示する

「スローズーム」「トラッキングショット」「固定ワイドアングル」「ドリーフォワード」のようなカメラ指示を含めると、モデルが意図を正確に汲み取りやすくなります。曖昧なプロンプトは「思ったのと違う」再生成の原因になり、結果的にコストが跳ね上がる。

Spend Capsで安全弁を確保する

Google AI Studioのプロジェクト設定でSpend Capsを必ず有効にしておく。開発中に無限ループが走った場合の保険になります。私は開発環境では月$10、本番では想定利用量の120%を上限に設定しています。

本番で使うためのエラーハンドリング

プロダクションで動画生成APIを使う場合、適切なエラーハンドリングは省略できません。Veo 3.1 Liteで遭遇しやすい3種類のエラーを区別して対処する実装を示す。

import time
from google import genai
from google.genai import types
 
client = genai.Client()
 
def generate_video_with_retry(
    prompt: str,
    max_retries: int = 3,
    aspect_ratio: str = "16:9",
    resolution: str = "720p",
    duration: int = 8,
) -> str | None:
    """リトライロジック付きの動画生成関数。
    成功時はファイルパス、失敗時はNoneを返す。
    """
    for attempt in range(1, max_retries + 1):
        try:
            operation = client.models.generate_videos(
                model="veo-3.1-lite-generate-preview",
                prompt=prompt,
                generate_video_config=types.GenerateVideoConfig(
                    aspect_ratio=aspect_ratio,
                    output_resolution=resolution,
                    number_of_videos=1,
                    duration_seconds=duration,
                ),
            )
 
            # タイムアウト付きポーリング(最大10分)
            timeout = 600
            elapsed = 0
            while not operation.done and elapsed < timeout:
                time.sleep(30)
                elapsed += 30
                operation = client.operations.get(operation)
 
            if elapsed >= timeout:
                print(f"[試行 {attempt}/{max_retries}] タイムアウト({timeout}秒経過)")
                continue
 
            if operation.response and operation.response.generated_videos:
                output_path = f"video_{attempt}.mp4"
                video = operation.response.generated_videos[0]
                client.files.download(file=video.video, download_path=output_path)
                print(f"✅ 生成成功: {output_path}")
                return output_path
 
            # セーフティフィルターによるブロック
            if operation.error:
                error_msg = operation.error.message
                print(f"[試行 {attempt}/{max_retries}] エラー: {error_msg}")
                if "safety" in error_msg.lower():
                    print("⚠️ セーフティフィルターでブロックされました。"
                          "プロンプトの表現を見直してください。")
                    return None  # リトライしても同じ結果なので即終了
 
        except Exception as e:
            error_str = str(e)
            print(f"[試行 {attempt}/{max_retries}] 例外発生: {error_str}")
 
            # レートリミット(429)は時間を置けば解決する
            if "429" in error_str or "quota" in error_str.lower():
                wait = 60 * attempt  # 指数的に待機時間を延ばす
                print(f"  → レートリミット検出。{wait}秒待機します...")
                time.sleep(wait)
            else:
                time.sleep(10 * attempt)
 
    print(f"❌ {max_retries}回の試行後も生成に失敗しました")
    return None
 
# --- 使用例 ---
result = generate_video_with_retry(
    prompt="都市の夜景をタイムラプスで撮影。車のヘッドライトが光の線になり、"
           "高層ビルの窓が次々と点灯していく。ドローン空撮風、ゆっくりとした上昇。",
    max_retries=3,
    resolution="720p",
)
 
if result:
    print(f"生成された動画: {result}")

このコードの設計で重要なのは、セーフティフィルターによるブロックとレートリミットを明確に分けている点です。セーフティブロックはプロンプト自体の問題なので、同じ内容でリトライしても無駄になります。即座にNoneを返して呼び出し元にプロンプト修正を促す。レートリミット(429)は一時的な制限なので、指数バックオフで再試行する価値があります。この区別ができていないと、無駄なリトライでAPI呼び出し回数だけが増えていく。

Liteで試してからスケールアップするのが最善の戦略

Veo 3.1 Liteは「まず低コストで検証する」ためのモデルです。プロトタイプ段階ではLiteの品質で十分判断できるケースが多く、品質が足りない工程だけVeo 3.1 Fastやフルモデルにアップグレードする段階的アプローチが、コストと品質を同時に最適化する現実的な方法になります。

Gemini APIの料金体系全般を俯瞰したい場合はGemini APIコスト最適化完全ガイドが役立つ。Veo 3の基本機能や上位モデルとの違いについてはVeo 3動画生成API完全ガイドで詳しくまとめています。動画生成をナレーションや音楽と組み合わせた制作パイプラインに興味があれば、Google FlowとVeo 3を活用したAI動画制作ガイドも参考になるはずです。

シェア

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

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

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

もしこの記事がお役に立ちましたら、チップ(¥150)で応援いただけると大変励みになります。広告なしでの運営を続けるため、皆さまのご支援が大きな力になっています。

関連記事

API / SDK2026-04-14
Veo API で動画生成がうまくいかないとき — エラーと詰まりポイントの完全対処法
Veo API の動画生成でよく起きるエラーを徹底解説。ポーリング実装の落とし穴、セーフティフィルター拒否、クォータ超過、動画ファイル取得失敗など、実際に詰まりやすいポイントと解決策をコード付きで紹介します。
API / SDK2026-07-02
Gemma 4 ローカル推論と Gemini API の使い分けで月額¥32,000を¥9,000台にした — ハイブリッドルーターの本番設計
月額¥32,000のGemini APIコストを¥9,000台まで下げたハイブリッド推論構成の記録です。ルーティング設計・Python実装・本番の落とし穴に加え、2026年7月のGemma 4 API提供開始を踏まえた構成見直しの指針もまとめました。
API / SDK2026-05-09
Gemini API に画像を送る前に Pillow で縮小しておくべき理由
Gemini API のマルチモーダル入力で iPhone の写真をそのまま投げているとレイテンシも料金も静かに膨らみます。Pillow で前処理するだけで結果が変わった実例と、私が普段使っている縮小関数をまとめました。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます
もっと見る →