ANTIGRAVITY LABEN
記事一覧/Tips & 活用術
Tips & 活用術/2026-05-12中級

Gemma 4 生成コードで出るランタイムエラー4パターンと修正手順 — Antigravity 実践

AntigravityでGemma 4が生成したコードにランタイムエラーが出るとき、パターン別の原因診断と修正手順を解説します。TypeError・AttributeError・asyncio・import衝突の4パターンを実例付きで整理しています。

gemma412antigravity435troubleshooting88python26runtime-error

個人でアプリを開発していると、Gemma 4 に頼んだコードが「見た目は完璧」なのに実行するとエラーで止まる、という経験を繰り返すことがあります。構文チェックは通るのにランタイムで落ちる。それがいちばん時間を溶かすパターンです。

2014年からひとりでアプリを作り続けてきた中で、累計5,000万ダウンロードを超えるまでに何度もこの壁にぶつかりました。Gemma 4 という強力なモデルが登場してからは状況が変わりましたが、ランタイムエラーに悩む構造は変わっていません。

Antigravity の IDE 上で Gemma 4 を使っていて、生成されたコードが実行時に落ちる場合、原因はほぼ4つのパターンに絞られます。それぞれの見分け方と修正手順をまとめます。

パターン1: TypeError — 型の不一致

症状: TypeError: unsupported operand type(s) for +: 'int' and 'str' のようなエラー。

Gemma 4 は変数の型を静的に推論しながらコードを生成しますが、Python の動的型付けに起因する不一致が生じやすいです。特に関数の戻り値が str | int のような Union 型になっている場合、Gemma 4 は片方の型のみで処理を組み立てることがあります。

例: よく起きるパターン

# Gemma 4 が生成したコード(問題あり)
def fetch_user_age(user_id: str) -> int:
    result = db.query(f"SELECT age FROM users WHERE id = '{user_id}'")
    return result[0]  # db によっては文字列で返ることがある
 
# 呼び出し側
total = fetch_user_age("u001") + 5  # TypeError が発生しうる

修正手順:

  1. エラーメッセージの変数名を特定する
  2. その変数の生成元(関数・APIレスポンス)を追う
  3. type() または print() でデバッグ出力を挟む
  4. 明示的なキャスト(int(), str())を追加する
# 修正後
def fetch_user_age(user_id: str) -> int:
    result = db.query(f"SELECT age FROM users WHERE id = '{user_id}'")
    return int(result[0])  # 明示的にキャスト

Antigravity では Cmd+K(インライン編集)で「この関数の戻り値に型キャストを追加して」と伝えると、Gemma 4 が修正案を出してくれます。

パターン2: AttributeError — None アクセス

症状: AttributeError: 'NoneType' object has no attribute 'xxx'

Gemma 4 が生成するコードは「データが必ず存在する前提」で書かれることが多いです。API レスポンスや DB クエリが None を返すケースを考慮していないため、None チェックが漏れます。

# Gemma 4 生成コード(問題あり)
user = db.find_user(email=email)
print(user.name)  # user が None のとき AttributeError

修正手順:

  1. エラーが出た行のオブジェクトを特定する
  2. そのオブジェクトを返す処理を追う(None になる条件を把握)
  3. ガード節を追加する
# 修正後
user = db.find_user(email=email)
if user is None:
    raise ValueError(f"User not found: {email}")
print(user.name)

Antigravity の Chat パネルで「find_user の返り値が None のケースを考慮したガード節を追加して」と依頼すると、コンテキストを把握した上で適切な修正を提案してくれます。

パターン3: asyncio エラー — await 漏れ・ループ衝突

症状: RuntimeWarning: coroutine 'xxx' was never awaited または RuntimeError: This event loop is already running

Gemma 4 は非同期コードの生成が得意ですが、既存の同期コードに async def を混ぜ込む際に await が漏れることがあります。また、Jupyter Notebook 環境やフレームワーク内で使うとイベントループの二重起動エラーが出ます。

# Gemma 4 生成コード(問題あり)
import asyncio
 
async def fetch_data(url: str) -> dict:
    async with aiohttp.ClientSession() as session:
        response = await session.get(url)
        return await response.json()
 
# 呼び出し側(同期関数内で誤って呼び出し)
def process():
    data = fetch_data("https://api.example.com/data")  # await が漏れている
    print(data)

修正パターン:

# ① asyncio.run() を使う(スクリプト実行の場合)
def process():
    data = asyncio.run(fetch_data("https://api.example.com/data"))
    print(data)
 
# ② Jupyter 環境では nest_asyncio を使う
import nest_asyncio
nest_asyncio.apply()
loop = asyncio.get_event_loop()
data = loop.run_until_complete(fetch_data("https://api.example.com/data"))

Antigravity では生成されたコードに await が漏れているとき、エディタが薄い下線で警告することがあります。気づいたら @ 参照でファイルを指定して「非同期コードの await 漏れをチェックして修正して」と依頼するのが最速です。

パターン4: ImportError — バージョン・API の不一致

症状: ImportError: cannot import name 'xxx' from 'yyy' または AttributeError: module 'xxx' has no attribute 'yyy'

Gemma 4 はトレーニングデータの時点のライブラリ API を参照するため、最新バージョンで変更・廃止された API を呼び出すコードを生成することがあります。

# Gemma 4 生成コード(問題あり — 旧 API を使用)
from langchain.chat_models import ChatOpenAI  # v0.1以降は廃止
 
# 最新版の正しいインポート
from langchain_openai import ChatOpenAI  # v0.1以降はこちら

確認手順:

  1. エラーメッセージのモジュール名とクラス名を把握する
  2. pip show [パッケージ名] でインストール済みバージョンを確認する
  3. 公式ドキュメントやリリースノートで移行先の API を確認する
  4. Antigravity Chat に「langchain v0.3 の最新のインポートパスを教えて」と聞く

Antigravity に Context7 MCP を組み込んでいると、ライブラリの最新ドキュメントを参照しながら正しい API を提案してくれます。これが一番早い解決策です。

Antigravity での系統的なデバッグ手順

4つのパターンを踏まえた上で、Antigravity 上で効率よく診断するフローを整理します。

ステップ1: エラーメッセージをそのまま Antigravity の Chat にペーストします。Gemma 4 は traceback を読むのが得意なので、貼るだけで原因の仮説を出してくれます。

ステップ2: 「なぜこのエラーが起きているか、考えられる原因を3つ列挙して」と続けて聞く。複数候補を出させることで見落としを減らせます。

ステップ3: 候補を絞ったら「このファイルの該当箇所を修正して」と依頼します。@ファイル名 でコンテキストを指定するとより正確に修正されます。

詳細なデバッグ手法については AI時代のデバッグ思考法Antigravity AI デバッグガイド も参考にしてみてください。Python SDK 固有のエラーについては Python SDK エラー診断と修正 に整理してあります。

全体を振り返って

Gemma 4 が生成するコードは、構文の正しさという点では非常に高い精度を持っています。ランタイムエラーの大半は型・None チェック・await・旧 API の4パターンに集約されます。エラーメッセージを見て「どのパターンか」を判断できれば、修正にかかる時間は大幅に短くなります。

次のステップとして、まず手元で出ているエラーのメッセージをコピーして Antigravity の Chat に投げてみてください。それだけで解決への道筋が見えることがほとんどです。

同じ課題に取り組んでいる方の参考になれば嬉しいです。

シェア

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

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

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

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

関連記事

Tips & 活用術2026-05-08
Antigravity で Gemma 4 が Out of Memory エラーになる問題の解決法
Antigravity で Gemma 4 を使うと Out of Memory エラーが発生する問題を解説します。メモリ要件の確認から量子化モデルの活用・Ollama 設定の調整まで、実際に試して効果があった対処法を紹介します。
Tips & 活用術2026-04-17
google-genai SDK が動かないとき最初に確認すべきこと — Antigravity での Python API エラー診断と解決
google-genai SDK を Antigravity で使うときに発生する認証エラー・ImportError・モデル名エラー・レート制限エラーを、実際のエラーメッセージと修正コードで解説します。Python API 開発のつまずきを素早く解消できます。
Tips & 活用術2026-05-29
Antigravity でオートセーブが原因でエージェントの差分が消える問題と対処
Antigravity でエージェントが提案した差分が、オートセーブ動作と競合して一部だけ適用される・気づかぬうちに巻き戻る問題の原因と、確実に再現を止めるための設定手順をまとめます。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます
もっと見る →