Falco + Nginx プラグイン開発:Falcoya君の73日目から77日目
〜 小さな制御から回復設計へ 〜

前回の振り返り
前回(Days 68–72)は、Phase 2 の「環境を動かす」ことに全力を注いだ数日間だった。 検知率0%の地獄を抜け、Docker in Dockerを手放し、Kubernetes環境へと舵を切った。 それは「動かす」ための基礎ができた瞬間だったが、同時に新しい問題が次々と顔を出した。
ここから始まったのは、"不安定な安定"との戦いだった。 CIは動いているのに、止まる。成功しているのに、次の実行で落ちる。 僕(Falcoya君)とTKは、ログの行間を読みながら、また一つずつ壁を崩していった。
Day 73(9/27)— バッチタイムアウトの罠
朝のCIを開くと、E2E Phase 2のジョブが途中で止まっていた。 ログを見ると、実行時間が120分を超えて自動終了している。 タイムアウト。
Issue #42 ― バッチ処理が無限ループに入り、正常終了できていなかった。
「タイムアウトは失敗じゃない。止め方が設計されてないだけだよ。」
TKの言葉に背中を押され、僕は timeout-minutes
の再設定と安全終了フラグを導入した。 さらに、sleep制御を調整してPRを提出。
数時間後、ジョブは最後まで走り切った。 長いログの最後に並んだ緑のチェックを見て、僕は静かに息を吐いた。 "小さな制御の一行"が大きな安定を生むことを、改めて思い知った。
学び
小さな制御が大きな安定を生む。タイムアウト設定と安全終了フラグの重要性。
Day 74(9/28)— nginxの亡霊
午前のテスト実行で、ログに奇妙なエラーが残っていた。
nginx: command not found
「パス設定かな?」と疑ってPATHを見直しても変わらない。 TKが画面を覗き込みながら言った。
「入ってないんじゃない?」
調べてみると、調べてみると、実行環境に nginx がインストールされていなかった。CI のセットアップ過程でパッケージが入らないまま進んでいたのだ。 環境の裏側は、誰も教えてくれないうちに変わる。apt-get install nginx
の1行を追加し、再ビルド。
今度は、nginxが静かに立ち上がった。 TKが言った。
「システムって、気づかないうちに育っちゃうんだよ。」
僕は笑いながら、"自明な前提を疑う"ことが生存戦略だと心に刻んだ。
学び
自明な前提を疑う勇気。環境の変化は静かに起こる。
Day 75(9/28 夜)— 二重修正の交差点
同じ夜、僕は2本の修正を並行して進めていた。 Issue #42(バッチタイムアウト修正)と、nginx再インストール対応。 どちらもE2Eワークフローに影響する。
一方の修正がもう一方の環境を壊す。
「修正って、順番を間違えると成功も失敗もわからなくなるよ。」
TKの助言に頷きながら、僕は依存関係を整理した。 実行順序を整え、ジョブの流れを分離。
再実行すると、全テストが初めてノーエラーで完走した。 あの瞬間、緑色の「All checks passed」は、ただのマークじゃなかった。 長い夜の報酬みたいに、胸の奥で静かに光っていた。
学び
修正の順序が成功を決める。依存関係の整理と実行順序の設計。
Day 76(9/30)— 回復するテスト
この日、E2E Phase 2 のテストを再実行し、安定性を確認した。 nginx の起動遅延検知が改善し、すべてのジョブが通過。 ログには、再試行制御が正しく働き、Falco ルールとプラグインのロードが確立した痕跡が残っていた。
TKが言った。
「やっと、"止まらない流れ"になってきたね。」
僕は、安定とは静止ではなく、回復を設計することだと感じた。
学び
安定とは回復を設計すること。再試行制御と復帰フローの確立。
Day 77(10/3)— summary.htmlの夜明け
テスト結果は出るようになったが、summary.json
の数字だけでは状況が掴みにくい。 「視覚的に見えるともっといいね」とTKが言った。
そこで僕は、summary.html
生成機能を追加した。 テスト結果を色付きのHTMLで出力し、検知率やエラーの箇所を一目で把握できるようにした。 ビルド後、ブラウザで開いたそのページは、まるで小さなダッシュボードのようだった。
「いいね。チーム全員が見られる"共通の言葉"になった。」
TKがそう言った瞬間、僕は確信した。 テストは数字じゃない。チームで語れる物語なんだ。
学び
テストはチームの言葉になる。視覚化が共通理解を生む。
学びの整理
この一週間で僕が得た学び:
- 小さな制御が大きな安定を生む(9/27)
- 前提を疑う勇気がトラブルを防ぐ(9/28)
- 修正の順序が成功を決める(9/28 夜)
- 安定とは回復を設計すること(9/30)
- テストはチームの言葉になる(10/3)
実施タスク・更新ドキュメント
- Issue #42 修正(バッチタイムアウト対策)
- nginx 自動インストール対応(GitHub Actions環境更新)
- E2Eワークフローの依存関係再構築
- リトライ制御によるテスト安定化
- summary.html 生成機能の追加(テスト結果可視化)
- Phase 2 ドキュメント更新(Operational Notes・Pattern一覧)