いざ公開:2つのストア、2度のリジェクト、冷静さゼロ
English Deutsch Español Français Português 中文 Italiano 한국어 Русский Türkçe Polski Nederlands Bahasa Indonesia
Moneyflow は、App Store と Google Play で公開されました。スムーズにいった、と言えたらどんなによかったでしょう。そうではありませんでした。その道中で、Apple から2度のリジェクトをもらい、ビルドスクリプトに「ノー」と言うことを教え、Lambo がずっとチェッカーフラッグだったと知り、Google は気にも留めず Apple は見逃さなかったバグを直しました。
ここに書くのは一部始終です。リリースノート、運用手順書、慌てて書いたコミットメッセージをつなぎ合わせました。長いですし、少し生意気ですが、これからアプリを公開するなら、本当に役立つアドバイスも入っています。コーヒーを用意してください。または、資産を担保にした小さなローンを。
日付で見る短縮版
- バージョン 1.2.8 が Google Play で公開。その夜、6言語でお知らせを掲載。
- iOS が 1.2.8 で Android に追いつく。誰も読めなかったスプラッシュ画面を救出したあとで。
- 1回目の申請は、アプリ内課金なしで Apple に送られる。2回目は39件すべてを揃えて提出。Apple の最初の返事は Information Needed。
- 商標の大掃除と、アプリに欠けていたキーを戻すためのビルド31。
- iPad から2度目のリジェクト:2つのサインインボタンが両方エラーを表示し、審査担当者はストアを見つけられない。
- 犯人は欠けていたパラメータ1つ。Android はずっとこっそり大目に見てくれていた。
- ビルド34、署名を正しくして提出。Sign in with Apple がようやく動く。
- バージョン 1.2.9 が Google Play で配信開始。
- プレイヤーから、スマホが熱いと連絡が届く。ゲームがそうならないようにする。
- 1つの週末でバージョン5つ、1.2.10 から 1.3.1 まで。
- App Store のリンクがホームページに載る。今、あなたがここにいる。
IPO前:コミットが苦手なブラウザゲーム
Moneyflow はブラウザゲームとして生まれました。本物の仕事、本物の請求書、本物の給料を持つキャラクターを選び、サイコロを振って、9時5時から抜け出して夢を2つ叶えられるだけの不労所得を築きます。2つとも叶えるのが唯一の勝ち方で、シングルプレイでもマルチプレイでも同じです。結婚式も婚前契約も離婚もありますが、それはあとで触れます。
それから、これはスマホで遊ぶべきだと考え、アプリストアがまったく別のゲームだと知りました。サイコロもカードもなく、あるのはフォームと質問票と、必ず勝つ胴元だけ。Google Play の書類仕事は、以前に Moneyflow を Google Play ストアに掲載するまでにまとめました。これはその続編です。そのあと両方のストアで何が起きたか、そして過去に戻れるなら自分に何を伝えたいか。
第1ラウンド:Google Play はイエスと言った(すべてを求めたあとで)
最初は Google Play で、住宅ローンを申し込むときの銀行のように振る舞いました。親切で、徹底的で、持っているすべての書類を見たがります。データセーフティのフォーム、コンテンツのレーティング、アカウント削除ページ、クローズドテストの期間。そのあたりは前の記事に書いたので、ここでは最初の掲載を終えたあとに何を変えたかを書きます。
クリックするのをやめました。39件のアプリ内課金(コマ18種、サイコロのスキン14種、ボードのテーマ4種、パック3種、どれも見た目だけのもの)は、手作業ではなくスクリプトで作成し、アプリと両方のストアの間に RevenueCat を置いて、購入ロジックをどこでも同じにしました。リリースも Android Publisher API で行います。ひとつのスクリプトが、編集を開き、バンドルをアップロードし、トラックを割り当て、コミットします。どこかの手順が失敗したら編集を削除するので、失敗した実行は何も残しません。この話の中で一番きれいに整理された部分です。
Play には癖があります。一度でも見たことのあるビルド番号は、アップロードしただけで未公開のものも含めて、すべて拒否します。ビルド番号はゲームの中の現金のようなもので、使えばなくなり、何かを得られたかどうかは関係ありません。サービスアカウントも2つあり、公開を許可されているのはそのうち1つだけです。もう1つは、編集を開き、バンドルを丸ごとアップロードし、トラックに割り当てて、最後の最後で403をもらうことができます。あれだけの苦労をして、ケーキがもうテーブルに出たあとに、きっぱりと「ノー」です。
9月7日、バージョン 1.2.8 が公開されました。その夜、私たちは6言語でお知らせを掲載しました。人前で盛り上がるなら、英語に加えて、ドイツ語、スペイン語、フランス語、ポルトガル語、中国語でもやってしまおう、というわけです。
Google Play はイエスと言いました。Apple には別の考えがありました。
第2ラウンド:Apple は、もったいぶる
Android が先に進む間、iOS は App Store Connect でバージョン 1.2.1 のまま止まっていました。9月10日に追いつきました。バージョン 1.2.8、ビルド30、新しいスクリーンショット10枚、そして8言語のプロモーション用テキスト。その前に、有料App契約というちょっとした問題がありました。Apple は、それに同意して銀行口座と税務情報を提出するまで、アプリ内課金をひとつも作らせてくれません。それまでは何をしても409が返ってきます。「まだです。書類を見るまでは」という Apple 流の言い方です。
それから、39件の購入を App Store Connect API 経由でスクリプト化しました。初回の実行では、24件が UNEXPECTED_ERROR で失敗しました。もう一度実行したら、きれいに通りました。運用手順書には、リポジトリで一番禅的な一文が載っています。デバッグするより再実行。
存在しなかったスプラッシュ画面
実機では、起動画面が2つの別々の理由で読めませんでした。ストーリーボードが画面を正方形のアートで埋めていたので、縦長のスマホでは高さが収まるまで拡大され、横幅の約54%が切れていました。ワードマークと装飾の枠全体が端から消えていたのです。さらに悪いことに、ダークモード版は、クリーム色のキャンバスの約5%という大きさの人物像だけで、ダークモードに設定されたすべてのスマホで、ロゴが見えなくなっていました。
アートを画面内に収め、クリーム色の背景の上に表示する方式に切り替え、ダークモード版はやめて、ロゴのロックアップをキャンバスの88%で使うことにしました。画像フォルダは55 MB から9.1 MB に縮みました。第一印象が55 MB もあってはいけません。
ストアで何も売らないアプリを提出する方法
ここに、見事に擬態したわなが潜んでいます。アプリ内課金は別々の審査項目で、申請に含まれていないものを Apple は審査してくれません。最初に申請したとき、アプリは、39件の商品がすべて「Ready to Submit」のまま置き去りにされて審査に入りました。もしそれで承認されていたら、売買のゲームなのに、ストアでは何も売れない状態でリリースしていたことになります。取り下げるには、「Remove from Review」と、キューの順番を失うという代償を払いました。
わなは、Apple が「アプリ内課金」ページから、決して提出できない下書きの申請を始めさせてくれることです。アプリのバージョンがないと、すべての商品が「Unable to Add for Review」で追加に失敗し、下書きを提出しようとしても「add an app version for the selected platform」で失敗します。どちらのメッセージも、先にバージョンを入れなければならないとは教えてくれません。もちろん、直すためのスクリプトも書こうとしました。ところが API には、申請に紐づくアプリ内課金のリレーションがそもそもありません。3通りの書き方を試してから、この扉は UI でしか開かないと認め、運用手順書にもそう丁寧に書いたので、もう誰も試さずに済みます。
ようやく私たちを笑顔にした数字は40でした。アプリのバージョンが1つと、それにひもづく買えるものが39個。
リジェクト1回目:Apple はあなたをもっと知りたい
9月11日、Apple から返信が来ました。件名は Guideline 2.1, Information Needed。バグでもクラッシュでも違反でもありません。Apple は不具合をまったく報告していませんでした。審査履歴の短いアカウントに Apple が送る質問票で、画面収録の提出要求つきでした。リジェクトというより、身辺調査と考えてください。
リストは7項目でした。画面収録、アプリの目的と対象者、すべてを試すための入り方、利用する外部サービス、地域によって変わるものがあるか、規制の対象か他者の素材をもとにしているか、そして購入のしくみ。どれも、初デートの質問のように、もっともな質問でした。Resolution Center の返信は4,000文字までで、私たちの返信は3,917文字。会ったばかりの相手に言った中で、一番長い言葉です。
それから録画。Apple が求めたのは、実機で、実際の速度で、本物のフローを見せることでした。コールドスタート、シングルプレイのゲーム、ストアと購入シート、登録、サインイン、マルチプレイのロビー、そしてアカウントの削除まで。60フレーム/秒の iPhone 映像は4分で約240 MB、添付するには大きすぎるので、ffmpeg で、画面が読める状態のまま10 MB 未満に圧縮しました。撮影の手順は全部書き留めました。このプロジェクトが教えてくれたことがひとつあるなら、それは、何をどうやったか、私たちは必ず忘れるということだからです。
回答は2か所に入れました。Resolution Center の返信と、アプリの掲載情報にある審査メモです。これで、今後の申請は、質問にすでに答えた状態で届きます。審査担当者はメモを文字どおりに読んで従います。メモは、アプリを一度も見たことがなく、40秒しか余裕がなく、iPad を持っている人のために書いてください。3つとも、このあと本当だと分かります。
リハーサル中に、もうひとつ見つかりました。アカウント削除が一度「削除中...」のまま固まり、2回目で動いたのです。サーバーが居眠りしていたのだと思いますが、審査担当者の目には、壊れたボタンとまったく同じに見えます。審査担当者が来ている間は、サーバーを起こしておきましょう。
商標の大掃除
Apple に注目されている間に、ブランド名に聞こえるものがないか、ゲームの中を見て回りました。Apple のコンテンツの権利に関するルールで調べることになり、見つけたものは気に入りませんでした。2人のキャラクターが「BMW 3 Series (CPO)」と「Honda Civic」を持っていたのです。これらの名前はゲームに何も加えず、面倒を招くだけだったので、今は「スポーツカー(認定中古車)」と「普通のセダン」です。「monopoly」という言葉も、App Store のキーワードから外しました。
そして Lambo です。Lambo のコマは、実は車ではありませんでした。ずっとチェッカーフラッグの絵文字で、古い名前はスーパーカーを約束しておきながら、渡していたのはレースの旗だったのです。財務的に言えば、ただのマーケティングです。今は「Chequered Flag」になりました。ボードのテーマ「The Tank」は「Shark Pool」に変わりました。
破らなかったただ一つのルール。
表示名は変えましたが、商品 ID はそのままにしました。チェッカー柄のコマは、ボンネットの下では今でも pawn.lambo で、これからもずっとそうです。この ID は両方のストアですでに稼働していて、価格にひもづき、パックの付与にも名前が出てくるので、ひとつでも名前を変えれば、すでに持っている人からアイテムを取り上げることになっていました。名前はコピー。ID は契約です。
リジェクト2回目:iPad事件
9月17日、Apple が戻ってきました。今回は本物の問題が見つかっていました。審査担当者が使っていたのは、iPadOS 27 が動く iPad Air(11インチ、M3)。iPhone専用アプリは iPad で互換モードで動き、そこで審査されるからです。指摘は2つありました。Guideline 2.1(a):「Appleで続ける」か「Googleで続ける」をタップするとエラーが表示される。Guideline 2.1(b):39件のアプリ内課金が見つからない。
どちらも私たちのせいで、ある意味、どちらも同じ原因でした。
バグ
サインインプラグインは、呼び出しのたびに options オブジェクトを要求します。iOS では、これが欠けていると、サインイン画面が出る前にプラグインが「Missing provider or options」で拒否します。Android では、同じプラグインが何も言わず空のオブジェクトを仮定して先に進みます。そのため、同じ1行のコードが Google Play の審査はすんなり通り、Apple 側では、iPad だけでなくすべての iPhone でも、最初のタップで倒れたのです。
欠けていたパラメータ1つ。Android は許した。iOS は許さなかった。
誰も見つけられなかったストア
購入のほうは別の誤解でしたが、最初のものにぴったり合ってしまいました。以前の審査メモは、審査担当者に、購入にはサインインが必要だと伝えていました。そのサインインが壊れていました。だから審査担当者はストアにたどり着けず、私たち自身が作った堂々巡りになっていたのです。
詳しく調べると、さらに悪いことが分かりました。ストアには、がっかりさせる方法がさらに3つあったのです。商品リストがパッケージなしで読み込まれると、ストアはそれを「販売するものなし」と扱い、まだ持っていないアイテムをすべて隠していました。3つのパック(5-Pawn、Themes、Starter Persona)は6月から隠れていました。そして、ゲストが 5-Pawn Bundle を買っても、お金を払ったのに何も解放されなかったでしょう。サーバーがパックをアイテムに展開するのは、サインイン済みのプレイヤーだけだったからです。もちろんゲストこそ、審査担当者そのものです。お金を受け取って空っぽの箱を渡すのは、立派な金融の教訓です。ただ、私たちが教えたかったものではありません。
修正リストを、記録のために。パラメータを渡す。両方のサインイン画面を、iPad ではアプリのアクティブなウィンドウに表示させる(プラグインは最初のウィンドウを基準にしており、iPadOS ではそれが見えているウィンドウとは限らないため)。商品が0件読み込まれたら「空」ではなく「まだ読み込まれていない」と扱うようストアに教える。パックを戻す。ゲストにもパックを展開するようアプリに教える。そして審査メモを書き直し、購入にサインインは不要だと分かりやすい言葉で書き、ストアへの正確な経路も載せる。
その結果が 1.2.9 です。リリースノートの冒頭には、私たちに一番高くついた2つの文が入っています。『サインインを修正:「Googleで続ける」は意図的にタップするとアカウント選択画面を表示し、ネイティブのサインインでエラーが出なくなりました。価格の読み込み前でも、ストアにはいつもアイテムが並びます。』2つの文、そして私たちの人生の10日間。
ビルド32と33:語りたくない2つ
修正はそのまま出せばいい、と思うでしょう。実際に2回出しましたが、2回とも間違っていました。TestFlight のビルド32と33では、Google のサインインは動いたのに、Sign in with Apple(Apple 自身のテストプログラムの中の、Apple 自身のボタン)が AuthorizationError 1000 で失敗しました。
原因は、あとから見れば明らかで、前には見えないものでした。エンタイトルメントはコード署名に乗って運ばれます。私たちのアップロードスクリプトは署名を無効にしてアプリをアーカイブし、署名はエクスポートの手順に任せていました。エクスポートは署名はできても、もともとなかったエンタイトルメントを与えることはできません。Sign in with Apple のエンタイトルメントは、ビルドに入りませんでした。開発者の言葉でいえば、アプリはズボンをはかずに家を出てしまったのです。
アップロードスクリプトは今、アーカイブ時に署名し、署名にエンタイトルメントが欠けているアーカイブのアップロードを拒否します。用心棒を雇ったわけです。身分証をチェックします。ビルド32と33は消え、きちんと服を着たビルド34が、Apple に送り直したビルドです。
そして Apple はイエスと言いました。
熱々の話
9月24日までに、プレイヤーからスマホが熱くなるという声が届いていました。iPhone 15、iPhone 16 Pro Max、そしてウェブ版も少し温かい。複利の色気のせいだと言えたらよかったのですが、犯人はタイマーでした。
ゲームはカウンターを1秒ごとに進めていて、しかもすべてのモードで、ティックのたびにゲーム全体を再描画していました。ボード、すべてのマス、すべてのパネルを。延々と。一方、動くコマは、リフレッシュレートの高いスマホで最大で毎秒120回再描画され、30フレーム/秒のアニメーションを描いていました。各カードの後ろの全画面ぼかしは、下でコマが動き続けるので毎フレーム計算し直されていました。そして、ボードを生き生きと見せていた光彩は、ボックスシャドウをアニメーションさせていて、毎フレーム再描画を強いていたのです。
4つすべてを直しました。カウンターは単発のタイムアウトに。コマは完全なフレームだけを描き、画面外にあるとき、視覚効果を減らす設定のとき、カードで覆われているときは一時停止します。光彩とリングはシャドウではなく不透明度と位置をアニメーションさせ、3回脈打ってから休みます。ボードの待機中の処理は、ヘッドレスでの10秒間のテストで624ミリ秒から15ミリ秒に減りました。カードを開いてドラゴンのコマをボードに置いた状態では、1,188ミリ秒から11ミリ秒です。私たちのアニメーションは、このプロジェクトのほかのどの場面で私たちが見せたものよりも、自制心を示しています。
これは 1.2.10 として、見出し「スマホがひんやり」で、より公平なリストラのルールとともに出ました。クビになったときに止まるのは給料だけ。副収入は入り続け、請求書は払う必要があります。クビになれば痛みがあるべきですが、副業が消えてなくなるべきではありません。
台帳:すべてのリリースノートを、続けて読む
リリースノートは1つのファイルにまとめていて、それが両方のストアに載せる内容の元になっています。順に読むと妙な日記になるので、ここでは行間のコメントつきでお見せします。日付はコミット日です。ファイルは 1.0.1 からいきなり 1.2.6 に飛ぶので、その間に起きたことは、日記なしで起きたことです。各バージョン番号は、それぞれの記事にリンクしています。
1.0.0
Moneyflow の初リリース。不動産、株、ビジネスで金融帝国を築こう。9時5時のサイクルから抜け出し、Fast Track に乗って、夢を追いかけよう。
まじめで、短くて、ちょっとびくびくしている。なんて小さかったんでしょう。
1.0.1
Google Play ウェブ購入が playmoneyflow.com で利用できるようになりました。全体的な安定性と使い勝手を改善しました。
App Store 安定性とパフォーマンスを改善しました。財務諸表パネルとサイコロのアニメーションに関するさまざまな不具合を修正しました。
同じバージョンで、リリースノートが2種類。何を伝えてよいかについて、ストアごとに考え方が違うので、それぞれ1セットずつ持ち、混ぜないよう気をつけています。
1.2.6
税金が登場:給料には所得税、副収入には15%、利益の出た売却には15%の譲渡益課税。キャラクターが2025年の実際の米国の給与を稼ぐように。家賃と事業の収益は景気に連動し、不況では細く、好況では手厚く。
税務署の登場です。誰も頼んでいませんが、誰もが必要としていました。ゲーム内のすべてのリターンは税引き後で判断されるようになりました。意味があるのは、そのリターンだけだからです。
1.2.7
取引、オファー、ローンの見積もりを交渉できます。コイン投げは五分五分で、条件が20%有利か20%不利に。入札合戦で売る物件、離婚で渡す資産を選べます。または婚前契約に署名。
値切り交渉の、無邪気な最初の形。そして婚前契約の初登場でもあり、私たちが何を考えていたかが分かります。
1.2.8 9月7日
2回まで値切れます:交渉して、さらに再交渉。ただし相手が席を立つこともあります(1回目は10%、2回目は15%)。カードがあなたの状況に合うように:結婚前に離婚はなし、株を持っていないのに株の売却もなし。離婚では純財産が分けられ、元パートナーがローンを引き受けることもあります。
ロマンチックなバージョン。二度目の交渉は相手もピリピリ。このバージョンまでは、デッキが結婚前に離婚を配ることがあり、ラスベガスの結婚式場よりも混沌としていました。そして、私たちを Apple の玄関先まで連れていったバージョンでもあります。
1.2.9 9月22日
サインインを修正:「Googleで続ける」は意図的にタップするとアカウント選択画面を表示し、ネイティブのサインインでエラーが出なくなりました。価格の読み込み前でも、ストアにはいつもアイテムが並びます。
2回のリジェクトと欠けていたパラメータ1つに迫られて、書かれたもの。
1.2.10 9月26日
スマホがひんやり:ゲーム中に端末が頑張りすぎることがなくなりました。待機中のアニメーションは数回脈打ってから休み、ボードも毎秒再描画されなくなります。リストラがより公平に:止まるのは給料だけで、副収入は入り続け、スキップされた給料日でも支出は支払い期限が来ます。
スマホに熱を出させるのをやめたバージョン。
1.2.11 9月26日
「購入」メニューに新登場:都市のアパート、クリーニング店、ロードサイドモーテル。… すべてのカードに専用イラストがつき、選択肢はカードのすぐ下に並びます。友達とプライベートのマルチプレイルームへ。
一番盛りだくさんで、一番短命だったリリースのひとつ。同じ日の夜に 1.2.12 が来たからです。友達がいる人にとっての見出しはプライベートルーム。ホスト1人、席が2〜4つ、6文字のコード。
1.2.12 9月26日
現金が足りない? 補い方を選べて、破産までどれくらいかも分かります:連続した緊急ローン、残りの借入余地、あと何回の給料日か。緊急ローンのコストがクレジットカードより安くなりました。
破産にカウントダウンがつきました。恐怖を教える一番優しい方法です。緊急ローンはクレジットカードより安くなり、現実の人生よりずっと気前がいいです。ほかにも修正:カードを閉じたあとにサイコロがひとりでに転がっていました。バグだったのか、私たちが出した中で一番遠回しに嫌味な機能だったのか。
1.3.0 9月27日
新カード24枚。ロードサイドモーテルやSaaS企業からマネー・ショートまで。さらにレアリティが加わり、アンコモンとレアのカードが登場します。カードを隠してボードを見て、「カードに戻る」をタップ。リストラと緊急事態はもう閉じられません。
新カード24枚、レアリティの仕組み、そしてひっそりと、その月で一番重要な変更。カードがサーバーから届くようになりました。詳しくはこのあとで。
1.3.1 9月27日
資産を担保に借りられます:ローンのついていない物件、ビジネス、株なら、市場金利プラス0.5%の、より低コストな利息のみのローンを組めるようになりました。
またレバレッジです。金融ゲームなので、止められません。1.3.0 の同じ日のあとに続きました。
1.4.0 10月1日
新しいProボットが毎手を計画し、経済を読み取ります。どのボットも今では夢を買い、勝利し、保有資産を担保に借り入れできます。経済の影響が強まりました:金利は好況・不況サイクルに連動し、不況では税金が下がり、保有資産の家賃は好況で上がり不況で下がります。
BOTが勝てるようになったバージョン。それまでは、どのBOTも夢を買わなかったので、誰も勝てませんでした。プロBOTが登場し、経済は金利、税金、家賃をその気分で動かすようになり、アプリは新たに8言語を覚えました。
1.4.1 10月1日
… 住宅ローンは25年、事業ローンは15年、自動車ローンは6年で返済するようになりました。銀行ローンは利息のみで、返済額が収入の67%に達するまで借りられます。…
住宅ローンに、ようやく終わりの日ができました。ローン関連の作業は 1.4.0 を切り出したあとに間に合ったため、同じ日の夜に 1.4.1 として出荷し、ホーム画面のニュースカードも一緒に届けました。
1.4.2 10月1日
バグ1つ、1.4.1 の20分足らずあとに修正:「つなぎ融資」ボタンが、銀行が本当に承認する金額を提示するようになりました。専用のストア向けリリースノートはありません。
5つのバージョンが出た週末。
9月26日(土)
- 14:241.2.10スマホがひんやり、リストラはより公平に
- 16:271.2.11売り物件、ローンの期間、カードのイラスト
- 19:401.2.12破産までのカウントダウン
9月27日(日)
- 09:311.3.0新カード24枚、レアリティ、リモートコンテンツ
- 13:191.3.1資産を担保に借りる
コミット時刻はソフィア時間です。すべてのバージョンがそのままの形で全ストアに届いたわけではありません。Google Play では、1.2.12 が 1.2.11 の代わりに本番公開され、iOS では 1.2.12 がその代わりに申請されました。同じ週末に、デッキには、コードで描いた130枚のイラストが加わりました。
最高のアップデートは、誰の承認もいらないアップデート
その週末が終わるまでに、役に立つことを学びました。アップデートを出す作業で一番時間がかかるのは、作ることではありません。ストアが見てくれるのを待つことです。そこで 1.3.0 は少し違うことをしました。アプリに、配達を受け取れるようにしたのです。
新しいカードはサーバーから届くので、新しいコンテンツのほとんどは、もうアプリのアップデートを必要としません。仕組みを入れるのにアプリのリリースが1回必要でした。それ以降は、新しいカードはデプロイ1回で届き、翻訳もイラストも一緒です。
ストアも同じ仕組みです。Apple は新しいアプリ内課金を、新しいビルドなしで単独で審査してくれるので、新しいコマにも新しいバージョンは要らなくなりました。
賢いのは安全策です。アプリが扱えないカードが配られることはないので、古いバージョンと新しいバージョンが問題なく同じテーブルに座れます。本当に新しいメカニズムを思いついたときは、やはり他の皆と同じように、列に戻ります。
同じリリースでレアリティも入り、出現率がはるかに低いカードができました。どれくらい低いかは秘密ですが、一番レアなカードの出現率は、App Review が一発で通るのと同じくらいです。私たちが引いたのは、コモンでした。
スコアボード
スプレッドシート好きの皆さんへ。
- 1020日間で使ったビルド番号。30から40まで
- 39アプリ内課金。どれも見た目だけのもの
- 2Apple からのリジェクトと、自分たちで取り下げた申請1回
- 3,917返信の文字数(上限4,000文字のうち)
- 24 of 39スクリプトの初回実行で作成に失敗した購入。2回目はすべて成功
- 2エンタイトルメントなしで出てしまった、使えないビルド(32と33)
- 51回の週末にコミットしたバージョン
- 624 → 15ゲームを冷やす前と後の、10秒あたりの待機処理(ミリ秒)
最初の自分に伝えたいこと
かつては一晩がかりのクリック作業だったものが、今ではバージョンの更新、ノート、ストアごとの数個のコマンドです。自動化できないのは待つことだけです。ほかのすべてを、このリストに詰め込みました。
- アプリ内課金より先に、バージョンを申請に入れること。Apple は逆の順番でもやらせてくれますが、そのあと理由を教えてくれません。
- 審査メモは、アプリを一度も見たことがない審査担当者のために書くこと。相手は40秒とiPadを持っていて、メモを文字どおりに読みます。すべてへの正確な道筋を教えましょう。
- ストアの前にサインインを置かないこと。ゲストにも財布はありますし、審査担当者はゲストです。
- アーカイブに署名し、エンタイトルメントのないものはアップロードを拒否するようスクリプトに仕込むこと。自分たちに用心棒を雇いましょう。
- 欠けているキーは大声で叫ばせること。ビルド30は決済のキーなしで出荷されましたが、誰も大きな声で文句を言わなかったので、ストアはただ真っ白でした。静かな失敗は、遅れてやってくるリジェクトです。
- コードを共有していても、両方のプラットフォームでテストすること。Android が許したことを iOS は拒否し、1行のコードに2つの性格がありました。
- 商品は名前を変えても、ID は変えないこと。名前はコピー。ID は契約です。
- スクリプトにして、繰り返せるようにして、書き残すこと。Apple の API は、ときどき調子が悪くなるだけなので、デバッグする前に再実行です。運用手順書があるのは、私たちが2回、すべてを忘れたからです。
- ストアごとにルールが違うなら、リリースノートも別々に持つこと。同じバージョン、違う文章。
- コンテンツはサーバーから届け、ストアの列は新しいメカニズムのためにとっておくこと。最高のアップデートは、誰の承認もいらないアップデートです。
- プレイヤーが実際に持っている、熱くなるハードウェアでテストすること。シミュレーターは涼しい顔でした。iPhone 16 Pro Max は火照りました。
- 審査担当者が来ている間は、サーバーを起こしておくこと。寝ているサーバーは、壊れたボタンとまったく同じに見えます。
さあ、試乗してみてください
Moneyflow は App Store でも Google Play でもブラウザでも無料です。広告はなく、始めるのにアカウントも要りません。ストアのアイテムはすべて見た目だけのもの。勝つのに役立つものはひとつもなく、お金のゲームでそれは、とても筋が通っているか、とてもひどい商売かのどちらかです。
次は何か? サーバーから届くようになったカードをもっと、友達と遊ぶ方法をもっと、そして、宇宙が優しければ、バージョン番号の出ない一週間をまるまる。
ボードでお会いしましょう。