◉ANTIGRAVITY LABEN
記事一覧/アプリ開発
▣ アプリ開発/2026-08-25上級

無視された設定キーが CI を通り抜ける経路と、その塞ぎ方

設定ファイルに書いたキーが無警告で無視されることがあります。tsc・ESLint・wrangler・npm・vitest の実測で挙動を3層に分け、効いているかを挙動で確かめるプローブと、警告を失敗へ昇格させるゲートの作り方をまとめました。

antigravity461ci5configvitest3cloudflare-workers9

✦ プレミアム記事

Cloudflare Workers へのデプロイが、ある日突然「エントリポイントが見つからない」で止まりました。wrangler.toml を開くと main は確かに書いてあります。スペルも合っています。パスも存在します。それでも通りません。

原因は書き方ではなく、書いた場所でした。[build] セクションを追記したあとに main を足していたため、TOML の規則どおり main は build テーブルの中の項目として読まれていたのです。ファイルの上では正しく、パーサから見ると別物でした。

このときエラーメッセージは「main を書き足してください」と案内してきます。すでに書いてあるものを書けと言われる状況ほど、原因から遠ざかる指示はありません。

個人開発では、こうした一件が半日を持っていきます。そして厄介なのは、同じ種類の食い違いが、もっと静かな形で日常に紛れ込んでいることです。

書いた場所で意味が変わる、という失敗の再現

先ほどの構成を最小化して再現しました。wrangler 4.125.0 で確認しています。

name = "probe-order"
compatibility_date = "2025-05-05"
 
[build]
command = "node scripts/stamp.mjs"
 
main = "index.js"
compatibility_flags = ["nodejs_compat"]

これを dry-run に通すと、次の2つが同時に出ます。

▲ [WARNING] Processing wrangler.order.toml configuration:
    - Unexpected fields found in build field: "main","compatibility_flags"
✘ [ERROR] Missing entry-point to Worker script or to assets directory

警告のほうが真犯人を名指ししています。ところが視線は赤い ERROR に吸い寄せられ、main を疑わない方向へ進みます。私自身、このとき最初に見たのはエントリポイントのパスでした。

対処そのものは単純で、トップレベルの項目を [build] より前へ移すだけです。復旧してから残ったのは、「設定ファイルは、書いた内容と読まれた内容がずれても教えてくれないことがある」という感触でした。

誤った設定キーは、3つの層に分かれる

その感触を確かめるため、手元でよく使うツールに同じ種類の誤りを入れて、反応を並べました。実行環境は Node 22.23.2 の Linux、2026年8月25日時点の各最新系です。

ツール入れた誤り反応終了コード
TypeScript 5.9.3strictNullCheck(正: strictNullChecks)TS5025 で停止。正しい候補まで提示2
TypeScript 5.9.3include を compilerOptions の中へTS5023 で停止2
ESLint 9.39.5(flat config)未知のキーを2つ追加ConfigError で即中断2
Wrangler 4.125.0compatability_flags(綴り違い)WARNING を出すが処理は続行0
npm 10.9.8depedencies(綴り違い)無警告。「up to date」と表示して0パッケージ0
Vitest 3.2.7無効キーを3つ同時に追加無警告。全テスト通過0

同じ「1文字の綴り違い」でも、止まるものと、素通りするものへ綺麗に割れました。試した6件のうち、終了コード 0 で通過したものが3件、ちょうど 50% あります。半分は、CI から見れば成功として記録される誤りだったということです。

npm の例が個人的にはいちばん堪えました。dependencies を depedencies と打ち間違えた package.json に対して npm install は 327ms で完了し、「up to date」と表示し、終了コード 0 を返し、node_modules を作りませんでした。依存が1つも入っていない状態が、成功として記録されます。

同じファイルで scripts を scripst と間違えた場合は違いました。npm run build が「Missing script: build」で即座に落ちます。呼び出す側があるキーは声を上げ、宣言するだけのキーは黙る、という分かれ方です。

✦

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

この記事の続きを読む

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

この記事で得られること
✦エージェントが書き換えた設定が本当に効いているかを、ファイルを読み比べるのではなく挙動で確かめられるようになる
✦無警告で無視される設定変更が本番へ流れる前に止める、数行のゲートを自分のリポジトリへ置けるようになる
✦手元のツールが「落ちる・警告する・黙る」のどれに属するかを見分け、プローブを置く場所を数か所に絞り込めるようになる
Stripe による安全な決済 · いつでもキャンセル可能
✦

この記事を購入する

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

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

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

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

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

関連記事

▣ アプリ開発2026-10-08
agy CLI をコンテナで動かす前に、擬似 agy で確かめておく 3 つの安全網
Antigravity CLI(agy)を Docker や Cloud Run のジョブから呼ぶ前に、インストーラーの取りこぼし・承認待ちの固まり・終了コード 0 の空振りを、擬似 agy で再現して潰します。公式 docs の記述と、手元で実行した結果だけを根拠に組み立てた手順です。
▣ アプリ開発2026-09-10
iOS 27 の配信日が決まってから、私が最初に grep したのは AGENTS.md でした
iOS 27 と iPadOS 27 の配信は9月14日です。版数の文字列はソースだけでなく、エージェントが読む設定ファイルにも残ります。両方を数えるスクリプトと、keyword 検索では拾えない一行の話を書き残します。
▣ アプリ開発2026-09-08
年齢レーティングの質問票に、記憶ではなくリポジトリの宣言で答える
2026年9月から必須になった App Store の年齢レーティング質問票を、リポジトリ側の宣言ファイルと標準ライブラリだけの照合スクリプトで毎回同じ答えにする手順を、実際の出力とともにお伝えします。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます