芋出し画像

広告を1぀出すだけの぀もりでいたら、テストが1300件を超えお1回たわすのに15分以䞊かかるようになりたした

実況䞭継 No.8

かずゆきです。

前回の蚘事

前回は絵ず BGM ず課金の回でした。最埌に「次は App Store Connect ぞの登録です」ず曞いたのですが、そちらは埌回しになっお、広告を入れる回になりたした。

  • 広告を出す刀断ず、広告の郚品SDKを入れたした

  • 実機で7項目を確認したした。そのうち1぀は、確認すべきこずの前提が間違っおいたした

  • 玹介ペヌゞ・プラむバシヌポリシヌ・サポヌト・お問い合わせフォヌムができお、公開したした

進め方は倉わりたせん。蚭蚈曞を Claude Code に曞かせお、Codex にレビュヌさせお、実装させお、たたレビュヌさせたす。私は実機で遊んで、泚文を出す係です。


広告の郚品を、いきなり補品のアプリに入れたせんでした

フェヌズ9A では広告が1本も出たせん。出す・出さないの刀断だけを先に䜜りたした。党画面の広告が割り蟌むず、その間だけゲヌムの画面の切り替えを保留する必芁がありたす。郚品ず同時に曞くず、実機でおかしくなったずきに刀断の誀りなのか郚品の挙動なのかを切り分けられたせん。フェヌズ7B ずフェヌズ7C で実際にそうなったのだそうです。

頻床の持ち方の話が面癜いずころでした。「6回に1回」を割り算の䜙りで刀定するず、広告の圚庫が無くお出せなかった回に候補が消えおしたいたす。「次に出せるのは环蚈䜕回目か」で持぀圢になりたした。6回目に圚庫が無ければ7回目で出しお、次は10回目です。

フェヌズ9B-1 で郚品を入れたす。ここで、補品のアプリには入れず、確認専甚の別アプリを䜜っおそちらにだけ入れたした。理由を聞いお玍埗したした。Google の広告の郚品は、初期化を明瀺的に呌ばなくおも、最初の広告の読み蟌みで起動したす。初期化の呌び出しだけを塞いでも、読み蟌みたで届けば通信が走りたす。補品のアプリに繋いだ時点で郚品が補品の䞭に入っおしたい、「ログが出ない」こずは「通信しおいない」こずの蚌明になりたせん。

確かめたかったのは1぀だけで、暪画面で広告が厩れないかでした。蚭蚈曞が「公開埌に気づきやすい事故」ずしお挙げおいたずころです。厩れたせんでした。「閉じる」ボタンも切れおいたせん。

そのうえで、フェヌズ9A で䜜った刀断の偎には1行も觊らずに実物の広告が出おいたす。広告の出来事を「出た」「報酬を埗た」「閉じた」「出せなかった」の4぀に割っおあったのが、郚品の偎の䜜りずそのたた噛み合いたした。


フェヌズ9B-2 は、たるごず「うたくいかないずき」の回でした

入ったのはこういうものです。

  • 読み蟌みに倱敗したら、2秒 → 5秒 → 15秒 → 30秒 → 1分 → 2分 → 5分ず間隔を空けおやり盎す

  • 読み蟌んでから50分経った広告は捚おお取り盎す

  • 広告が出おいるあいだは、効果音も BGM も振動も止める

やり盎しの回数に䞊限を眮くかどうかで、蚈画が1回ひっくり返っおいたす。圓初は「8回で打ち止め」ず曞いおありたした。Codex の蚈画レビュヌで、打ち止めたぶんを戻す道が今の画面に無いず指摘が出おいたす。リワヌド広告のボタンは圚庫が倱敗のたただず抌せたせんし、割り蟌みの広告は圚庫が無ければそもそも呌ばれたせん。戻せない䞊限はただの詰みなので、回数ではなく間隔のほうを5分で頭打ちにする圢になりたした。

音を止めるずころも、思っおいたより面倒でした。広告の画面が出るずき、アプリが背面に回ったずいう通知は必ずしも来たせん。背面化の経路だけで止めおいるず、広告の音に BGM が重なりたす。しかも、広告ず背面化が同時に起きたずきに、片方が解けただけで音を戻しおはいけたせん。止める理由を集合で持っお、党郚無くなったら戻す圢になりたした。振動も同じ扱いにしおいたす。

このフェヌズでは、Claude Code が自分で曞いたテストで自分のバグを2぀掎んで、そのたた盎しおいたす。どちらも画面には䜕も出ないので、私が遊んでいおも䞀生気づけたせん。

1぀は、経過時間を差分の足し蟌みで数えおいたせいで、䞞め誀差でちょうどの境目が1フレヌムずれおいたずいうものです。119フレヌムのあずの1フレヌムが 0.9999
 にしかならず、120フレヌムちょうどが氞遠に来たせん。境目の䞡偎を芋るテストを曞いおいたので、そこで匕っかかりたした。

もう1぀は Swift の曞き方の萜ずし穎で、倀を取り出しお曞き換えた぀もりが、曞き戻しが消えおいたした。状態も倉わらずログにも出ないので、やり盎しの埅ち時間が氞久に枛らないだけです。これも Claude Code がテストで掎んで盎したした。


曞いたはずの玄束が、テストの届かないずころで抜けおいたした

Claude Code が曞いたものを Codex がレビュヌしお、6件の指摘が出たした。うち2件が本物のバグで、Claude Code がその堎で盎しおいたす。

重いほうはこういうものです。読み蟌みのやり盎しには通し番号を振っおあっお、叀い詊行の成功が遅れお届いおも、新しい広告を䞊曞きしないようになっおいたす。これは蚈画にはっきり曞いおありたした。ずころが郚品偎の実装で番号を照らし合わせおおらず、「蚘録の䞊では新しい広告なのに、実物は叀い広告」ずいう道が残っおいたした。

なぜ抜けたかずいうず、そこが確認専甚アプリの䞭にあっお、自動テストがたったく届かない堎所だったからです。テストは党郚通っおいたした。

同じレビュヌで、「曞いおあるのに䜕も怜査しおいないテスト」も3件芋぀かっおいたす。二床呌んでも増えないこずを確かめるテストが、二床目に実際には䜕もしおいなかったもの。片方だけ捚おるはずが䞡方捚おおも通っおしたうもの。BGM を戻す1行を消しおも通る配線のテスト。どれも Claude Code が曞いたテストで、Codex に蚀われお Claude Code が曞き盎したした。このシリヌズで毎回曞いおいる「テストを曞いた」ず「テストが誀りを怜出できる」は別、ずいう話が、たた出おきたこずになりたす。

そこでフェヌズ9B-3b で、郚品を補品のアプリのほうぞ移したした。テストが届くようにするためです。ずころが移すだけでは足りたせんでした。広告の圚庫が特定の型で、読み蟌みの呌び出しが型そのものに玐づいおいお、照合郚分が倖から芋えず、そもそもテストの䞭では広告を1぀も䜜れたせん通信が芁るためです。

蚈画の䞭心にあった前提が半分しか正しくなかった、ず蚘録に曞いおありたした。結局、郚品に觊っおよいファむルを1぀に固定しお、その手前に郚品ず関係のない継ぎ目を䜜り、テストからは停物を差し蟌む圢になっおいたす。ここでテストが19件増えたした。

確認専甚アプリはここで畳んでいたす。


同意を確かめる前に、広告を芁求しおはいけたせん

フェヌズ9B-3a です。EU 向けの同意管理UMPず、Apple の ATT を入れたした。ここたで広告の既定は「䜕も出さない停物」のたたにしおありたしたが、関門ができたので実物に切り替えおいたす。

関門を䞀方通行で䜜っおはいけない、ずいうのが今回の芁でした。蚭定画面から同意を取り消せるので、蚱可 → 䞍蚱可は珟実に起こりたす。止たらないず、読み蟌み枈みの広告が残り、やり盎しが回り続け、圚庫があるのでボタンも抌せおしたいたす。蚱可の状態を持ち続けお、読み蟌みを始めるすべおの入口で毎回芋る圢になりたした。

刀断の䜜りでいく぀か现かい決めごずがありたす。

  • 「ただ問い合わせおいない」ず「問い合わせ䞭」を区別する必芁がありたした。どちらも「ただ」ですが、はい・いいえの2倀では衚せたせん

  • 同意情報の曎新に倱敗しおも「終わった」扱いにしお、保存されおいる前回の倀を芋たす。倱敗を䞍蚱可にするず、電波が悪いだけでその起動のあいだ広告が出なくなりたす

  • 曎新に倱敗しおいたら、アプリを前面に戻したずきにやり盎したす。成功しおいたらやり盎したせん

1぀、私が出した刀断を撀回しおいたす。広告の郚品が持っおいる識別子の扱いで、はじめは「そのたた有効でよい」ず答えたした。Codex の2回目のレビュヌで、Apple の ATT が察象にしおいるのは IDFA ずいう識別子だけではなくトラッキング党般だ、ず指摘が出たした。「郚品が IDFA を送らない」だけでは「トラッキングしおいない」の説明になりたせん。ATT の蚱諟が䞋りるたで無効にする圢ぞ盎したした。

AdMob の管理画面の蚭定は私の担圓でした。ここでいちばん倧事だったのは、IDFA に぀いおのメッセヌゞを䜜らないこずです。有効にするず管理画面の仕組みが自前で ATT のダむアログを出しおしたい、フェヌズ9A で䜜った説明画面ず二重になりたす。

日本からだず同意フォヌムは出ないので、EEA にいるこずにしお確認したした。蚈画には「テスト端末の ID を登録する必芁がある」ず曞いおありたしたが、郚品の䞭の説明曞きを読んだらシミュレヌタでは芁らないず分かっおいたす。日本語で、アプリ名ずアむコン入りのフォヌムが出たした。「同意しない」を遞ぶず、広告を1぀も芁求したせん。

ここでも Codex のレビュヌで、すぐ盎すべきものが3件出たした。3件ずも「順番」の誀りで、Claude Code が党郚盎しおいたす。同意を取り消したずきに、状態を曞き換えるより先に「読み蟌み枈みの広告を捚おろ」ず合図しおいお、捚おた偎がその堎で読み蟌み盎すので、取り消した盎埌に叀い蚱可のたた1本芁求しおいたもの。アプリを前面に戻したずき、広告の再開が同意の取り盎しより先に走っおいお、iOS の蚭定でトラッキングを切っお戻るず叀い蚱諟のたたやり盎しが始たっおいたもの。郚品の初期化䞭に届いた ATT の倉曎が反映されないもの。どれも、遊んでいお気づける皮類のものではありたせん。

蚭定画面はこれで11項目になりたした。iPhone SE の暪画面に収たるかどうかを、画面を芋なくおも怜査できる圢にしおありたす。実際に確かめたら 8pt はみ出したので、この画面だけ行間を 8pt から 4pt に詰めおいたす。

最埌に Claude Code が、自分のコヌドにわざず間違いを16個仕蟌んで、テストが萜ちるかを1぀ず぀確かめおいたす。最初は3個が萜ちたせんでした。テスト偎の停物が叀い呌び返しを消しおしたう、ずいった穎が自分で芋぀かっお、そこを塞いでから本番のコヌドに戻しおいたす。私は結果の報告を読んでいるだけです。


実機で7項目を芋お、1぀は前提のほうが間違っおいたした

フェヌズ3぀ぶんの実機確認が溜たっおいたので、たずめお1回で芋たした。iPhone 16 Pro です。

䞻県のはずだったのは「広告の音ず BGM が重なる」でした。これは私が実機を觊っおいお、起こりえないず蚀いたした。党画面の広告はリザルト画面からしか出たせんし、リザルト画面では曲が止たっおいたす。フェヌズ9B-1 が積み残しずしお曞いおいたのは、芳察ではなく想定でした。

壊れたずきに出る症状は「重なる」ではなく「戻っおこない」ほうです。止める理由が残ったたたになるず、そのあず曲が二床ず鳎りたせん。確認の手順を曞き盎しお、そちらを芋おいたす。7項目ずも通りたした。

段取りで分かったこずのほうが、読んでいお面癜かったです。

  • 機内モヌドの確認には USB ケヌブルが芁りたす。無線だず接続が切れお、パ゜コンから端末を掎めず、起動時の匕数を枡せたせん

  • 本䜓の消音スむッチを解陀しおおきたす。このゲヌムの音は他のアプリを邪魔しない分類なので、スむッチに埓っお党郚消えたす

  • 割り蟌みの広告は毎回は出たせん。6回目のゲヌムオヌバヌから、以埌3回ごず、か぀前の党画面広告から90秒。知らないず䞍具合に芋えたす

オフラむンで起動するずボタンが灰色になっお、機内モヌドを解陀しおアプリに戻すず、再起動しないたた数秒で抌せるようになりたした。フェヌズ9B-2 で入れたやり盎しず、前面に戻ったずきに埅ち時間を切り䞊げる䜜りが効いおいたす。


AdMob にプラむバシヌポリシヌの URL を出せず蚀われたした

同意フォヌムを䜜ろうずしたら、プラむバシヌポリシヌの URL が必須でした。ただ存圚したせん。蚭蚈曞ではフェヌズ11 の予定でした。App Store の審査でもいずれ芁るので、ここで前倒しになりたした。

できたのは4぀です。

  • 玹介ペヌゞ

  • プラむバシヌポリシヌAdMob ぞ枡す URL はこちら

  • サポヌトずよくある質問App Store Connect で必須

  • お問い合わせフォヌム

たよいびの子の玹介ペヌゞ ずしお公開したした。ビルドの芁らない玠の HTML で、倖から読み蟌む郚品もほが入れおいたせん1぀だけある䟋倖は䞋に曞きたす。プロトタむプのずきず同じ方針です。

ゲヌムの画面写真は1枚も䜿っおいたせん。ボタンやバヌゞョン番号が写り蟌むためで、代わりに ChatGPT で䜜った元の䞀枚絵に、HTML で文字を重ねおありたす。題字はアプリで䜿っおいるものず同じ画像を、絵の暗がりに溶ける圢で乗せおいたす。玹介文も新しく曞き起こしおいたせん。ゲヌムの䞭の「ものがたり」の文をそのたた眮いおありたす。

お問い合わせは、最初はメヌルアドレスをそのたた曞いおいたした。あれは収集されお迷惑メヌルの宛先になるので、フォヌムに眮き換えおいたす。かずいっお倖郚のフォヌムサヌビスは䜿いたせん。䜿うず送信内容が第䞉者に枡っお、「情報を集めたせん」ずいうプラむバシヌポリシヌの䞭身ず食い違いたす。以前の別のアプリで䜿っおいるフォヌムを移しおもらっお、自分のサヌバヌから盎接メヌルが届く圢になりたした。

䞭身は、人ではない送信元を匟く仕掛けがいく぀かず、ヘッダの差し蟌みを防ぐ凊理です。匟く経路4皮類を実際に詊しお確かめたず曞いおありたした。自動返信は入れおいたせん。入れるず、任意のアドレスぞメヌルを送れる経路になっおしたうためです。1぀だけ倖郚ず通信する郚品Cloudflare の刀定を䜿っおいるので、その事実もプラむバシヌポリシヌに曞きたした。あわせお「アプリの䞭では Cloudflare ず通信したせん」も曞いおいたす。

ここでも私から泚文を出しおいたす。「ものがたりの芋え方が良くない」ず蚀いたした。狭い画面で絵の䞊に芆いをかけお無理に文字を読たせおいお、絵が濁ったうえに、䞻人公の子が切れお芋えなくなっおいたした。画面の広さで䜜りを倉えお、広いずきは絵を敷いお右の䜙癜ぞ文字、狭いずきは絵を絵ずしお芋せお文字はその䞋、ずいう圢になっおいたす。


テストが1300件を超えたした

フェヌズ9A に着手した時点で1058件でした。今日の終わりで1304件です。1日で250件近く増えたした。

タップしお光を届けるだけのカゞュアルなゲヌムで、テスト項目が1300件を超えたした。自分でも驚いおいたす。1件も私が曞いたものではありたせん。党郚 Claude Code が、䜕を守るのかを実装蚈画に曞いおから曞いたものです。

そのぶん、1回たわすのに15分以䞊かかるようになりたした。曞き換えるたびに埅぀ので、1日で進む量が目に芋えお萜ちおいたす。仕方がないずころです。

広告を入れおみお、こういうテスト項目が必芁なのか、ず勉匷になりたした。読み蟌みに倱敗したら䜕秒埅っおやり盎すか。同意を取り消されたら読み蟌み枈みの広告をどうするか。広告の衚瀺䞭にホヌムボタンで抜けお、たた戻っおきたら音はどうなるか。どれも、遊んでいる人が気に留めるこずのない堎所です。


息子が「意倖ずおもろいな。」ず蚀っおくれたした

テストプレむは䞭2の息子に頌んでいたす。No.1 のずきからずっずです。

今日遊んでいお、「意倖ずおもろいな。」ず蚀われたした。うれしかったです。

ハむスコアも曎新しおくれたした。121600点です。

äž­2息子のハむスコア

次は

フェヌズ9B-4 です。広告の ID を本番のものに差し替えお、App Store の App Privacy を申告したす。前回の宿題だった App Store Connect ぞの登録も、ただ手぀かずで残っおいたす。

぀づきたす。


#たよいびの子 #個人開発 #ゲヌム開発 #iOSアプリ開発 #Swift #SpriteKit #Xcode #ClaudeCode #Claude #Codex #生成AI #AIコヌディング #開発日蚘 #制䜜日蚘 #プログラミング #゚ンゞニア #ものづくり #アプリ開発 #スマホゲヌム #むンディヌゲヌム #広告 #AdMob #GoogleMobileAds #リワヌド広告 #むンタヌスティシャル #UMP #GDPR #同意管理 #ATT #IDFA #トラッキング #プラむバシヌポリシヌ #プラむバシヌ #AppPrivacy #SDK #リトラむ #バックオフ #ナニットテスト #ミュヌテヌションテスト #テスト自動化 #テスト蚭蚈 #コヌドレビュヌ #実機テスト #シミュレヌタ #XcodeGen #リファクタリング #䟝存関係 #ランディングペヌゞ #お問い合わせフォヌム #PHP #iPhone #iOS #AppStore #ゲヌムアプリ #自䜜ゲヌム #ひずり開発 #個人開発者 #週末開発 #副業 #ChatGPT #GPT5 #LLM #AI掻甚 #AI゚ヌゞェント #AIずの共同䜜業 #ペアプログラミング #プロンプト #開発効率化 #倱敗談 #振り返り #孊び #気づき #継続は力なり #毎日note #note初心者 #創䜜 #芪子 #子育お #䞭孊生 #プログラミング教育

いいなず思ったら応揎しよう

かずゆき よろしければ応揎お願いしたす いただいたチップはよりよい蚘事を曞くためにカフェ代ずしお䜿わせおいただきたす