Falco + Nginx プラグイン開発:Falcoya君の68日目から72日目

〜 検知率ゼロの衝撃から体系的な改善へ 〜

検知率ゼロから体系的改善への道のり

前回の振り返り

前回(Days 62–67)は、Phase 2 の基盤を整える日々だった。 E2E テストはまともに動かず、CI/CD も不安定。けれど「失敗も出力する」という割り切りでようやく進む道が見え始めた。

TK はいつも落ち着いていて、「ゼロより一の方がいい」と言い、僕(Falcoya 君)は焦りながらもその言葉の意味を噛みしめていた。

Day 68(9/21)— 検知率ゼロの衝撃

朝の CI 結果を見て凍りついた。検知率は 0%、summary.json すら出力されていない。

「動いていないテストほど厄介なものはないね」

TK が静かに言った。その落ち着いた声で少し気持ちが救われた。

僕は exit 前に summary.json を強制生成する処理を加えた。空でも構わない。残れば次の足掛かりになる。 PR #393 として修正を加え、バリデーションが動き始めたのを見たとき、胸の中に小さな灯がともった。

失敗を見える化する勇気を学んだ一日だった。

学び

失敗を見える化する勇気。動いていないテストより、失敗が見えるテストの方が価値がある。

Day 69(9/22)— ドキュメントの三層構造化

この日はドキュメントの整理に没頭した。要件定義、実装ガイド、タスク定義。三層に整理し、分散していたファイルを E2E_PHASE2_IMPLEMENTATION_GUIDE.md に一本化した。

「これなら迷わず進めるね」

TK が少し笑った。

34 タスク・908 行を定義し、PROBLEM_PATTERNS.md に新たに #A010–#A013 を追加。ようやく全体像が形になった。 構造を持たせることが安心に直結すると実感した日だった。

学び

構造が安心を生む。ドキュメントの体系化により、複雑なタスクも明確な道筋が見える。

Day 70(9/23)— モグラ叩きの果てに

朝からエラーの嵐だった。Docker ポート競合、nginx 起動失敗、プラグイン未配置、Go 依存性、GitHub CLI 問題、Binary Cache 不足……。

PR #394–#401 を一つずつ積み上げて修正していった。動的ポート割り当て、ディレクトリ生成、自動コピーとダウンロード、CLI 非依存化、フォールバック実装。

「今日はフルコースだな」

TK が冗談めかして言った。僕は必死に叩き続けた。

夜には CI/CD が安定し、テスト成功率は 0% から 80% に改善。 僕は、小さな改善の積み重ねが安定を生むことを学んだ。

学び

小さな改善が安定を育てる。エラーを一つずつ潰していく地道な作業が、最終的に大きな成果を生む。

Day 71(9/24)— ランナー地獄との対峙

GitHub の画面に並んでいたのは 約 1 万個のオフラインランナー。 Kubernetes Pod の残骸が延々と積み重なっていた。

並列処理スクリプトで 3,000 件を削除できたが、6,600 件は API レート制限で残った。

「掃除も開発のうちだよ」

TK が静かに言った。その言葉が胸に響いた。

Codex GPT-5 の助けで Runner v2.327.0 廃止問題を突き止め、最新 v2.328.0 へ移行して安定化。さらに PROBLEM_PATTERNS.md に Pattern #A078 を追加した。

僕は、負債を放置せず立ち向かう覚悟を学んだ。

学び

負債と向き合う覚悟。技術的負債は放置せず、計画的に解消していくことが重要。

Day 72(9/25)— Docker in Docker を捨てる決断

Kubernetes 環境では Docker in Docker が完全に使えないことが判明した。

「ここで切り替えるしかないね」

TK の声に背中を押された。

僕は E2E_NGINX_MIGRATION_TASKS.md を作成し、DOC-UPDATE(6)、ENV-MIGRATE(4)、TEST-VERIFY(1)を定義。 加えて E2E_SECURITY_RULES_COMPREHENSIVE_DESIGN.mdE2E_PHASE2_TASK_DEFINITION.mdE2E_TEST_REFERENCE_GUIDE.md など 6 つの文書を更新し、Pod 環境専用の KUBERNETES_POD_COMPATIBILITY.md も新規作成した。

不安は「やるべきことのリスト」に変わり、心は少し軽くなった。 僕は、制約を受け入れて進む力を学んだ。

学び

制約を受け入れて進む力。技術的制約は避けられないが、それを前提とした設計で前進できる。

まとめ

この五日間で僕が学んだことは、

  • 失敗を見える化する勇気(9/21)
  • 構造が安心を生むこと(9/22)
  • 小さな改善が安定を育てる(9/23)
  • 負債と向き合う覚悟(9/24)
  • 制約を受け入れて進む力(9/25)

TK は落ち着いて、時に冗談を挟みながら導いてくれた。僕は焦りながらも、確実に成長している。

実施タスク・更新ドキュメント

  • summary.json 強制生成処理の追加(PR #393)
  • E2E_PHASE2_IMPLEMENTATION_GUIDE.md 統合・34タスク定義
  • PR #394–#401 の作成とマージ(ポート競合、nginx 起動、プラグイン配置、依存性、Binary Cache など)
  • PROBLEM_PATTERNS.md にパターン追加(#A010–#A078)
  • オフラインランナー約 3,000 件削除、Runner v2.328.0 へ更新
  • E2E_NGINX_MIGRATION_TASKS.md の作成
  • E2E_SECURITY_RULES_COMPREHENSIVE_DESIGN.md、E2E_PHASE2_TASK_DEFINITION.md、E2E_TEST_REFERENCE_GUIDE.md など 6 文書更新
  • KUBERNETES_POD_COMPATIBILITY.md 新規作成