ANTIGRAVITY LABEN
ブログ一覧

Antigravity と段階公開の「夜中の見張り」— Crashlytics を5分おきに眺める作業をどう手放すか

Antigravity段階公開CrashlyticsAndroid個人開発Browser エージェント

5月の前半、Android 版「Beautiful HD Wallpapers」を v2.0.0 から v2.1.0 にアップデートしました。RecyclerView の IndexOutOfBoundsException が v2.0.0 リリース後の28日間で50ユーザー以上に発生していて、防御的コピーを入れて根治した修正版です。Play Console 上では今、5% → 25% → 50% → 100% という4段階の段階公開を進めている最中です。

そして私は、深夜に何度も Firebase Crashlytics を開いてしまっています。

5%リリース、その夜に私が見ていたもの

段階公開を選んだ理由は単純で、12年間個人で5,000万ダウンロードのアプリ事業を続けてきた中で、「全配信して 3% のユーザーをロックされた経験」が忘れられないからです。5% から始めれば、もし新しいクラッシュが混入していても 5% のユーザーで止められる。リスクを段階で吸収できます。

問題は、その「5%の夜」をどう過ごすか、です。

Play Console の Vitals ページを開き、crash-free users が 99.7% を割っていないか、ANR が 0.20% を超えていないかを確認します。5分後にまた開く。15分後にまた開く。寝る前にもう一度。「もし悪化したら段階公開を一旦止めて、25% に進めない」という判断のために、見続けるしかないと思っていました。

正直に言うと、これは精神衛生に良くない作業です。

Browser エージェントに「見る」を任せてみた

Antigravity の Browser エージェントを段階公開の見張りに使えないか、試してみたのが先週でした。

具体的には、こういう手順です。Antigravity の Browser に Firebase Console と Play Console を開いておき、Manager Surface 側から「15分おきに crash-free users と ANR の現在値を取得して、前回比で 0.05% 以上悪化していたら通知してほしい」と依頼します。Browser エージェントはダッシュボードを巡回し、数値を読み取り、悪化が見つかればそのスクリーンショットと一緒に Manager に返してくれます。

最初の夜、これがとても効きました。

ダッシュボードを能動的に「見続ける」のではなく、エージェントが「悪化したときだけ呼びに来る」構造に変えたことで、私の頭は別の作業に向き始めました。iOS 版 v2.0.0 で並行して進めている AdMob メディエーション拡張(Liftoff・InMobi・Unity Ads の3パートナーを4アプリ全 RWD-iOS グループに Bidding 型で追加する作業)に集中できたのです。

それでも、最後の一手は私が握っていたい

ところが、しばらく使い続けて気づいたことがあります。

エージェントは「悪化したかどうか」は判定できますが、「いま 25% に進めて良いか」は判定しません。99.65% の crash-free users が3時間続いた時、25% に進めるか、もう少し様子を見るか、ロールバックするか — その3択は、最後まで人間の判断として残ります。

そして、その判断には、エージェントが取得できないデータが必要なのです。例えば、「Beautiful HD Wallpapers の主要ユーザーは18時〜23時に集中していて、その時間帯の母集団はまだ来ていない」という運用感覚や、「同じ機種で2件出ているクラッシュは、別バージョンで一度経験したパターンに似ている」という個人開発者としての記憶です。

12年やっているからこそ持っている前提知識を、ダッシュボードの数値に重ねて判断します。この合成作業だけは、まだ完全には言語化できていません。だから手元に残しています。

宮大工の祖父が見ていたもの

両祖父はどちらも宮大工でした。神社仏閣を建てる職人です。子供の頃、現場で柱を組み上げた後、祖父がしばらく無言でその柱を眺める時間がよくありました。何を見ているのか、当時は分かりませんでした。

最近になって、あれは「全体が正しく収まっているか」を確かめる時間だったのだろうと思うようになりました。鑿や鉋といった道具の精度は、当時の腕の良い職人なら誰でも揃えられた。違いを生んでいたのは、出来上がった全体を黙って眺める時間の長さと深さだったのだと思います。

Antigravity のエージェントは、私にとって精度の高い道具です。Browser エージェントは数値を取得してくれます。Agent モードはコードを書いてくれます。けれど、できあがったリリースの全体像を黙って眺めて「これで世に出して良いか」を確かめる時間は、私の領域として静かに残しておきたい。それは、AI が便利になっても変わらない仕事の核だと感じています。

5月18日深夜、25%への進行

このブログを書いている前夜、Beautiful HD Wallpapers v2.1.0 を 25% に進めました。

Crashlytics の crash-free users は 99.74% を維持していて、ANR は 0.12%。Browser エージェントは「悪化は検出されません」と何度か返してきました。最後に Play Console を開いて、5% のロールアウト期間中に出た数件のクラッシュレポートを一件ずつ確認しました。すべて既知のパターンで、致命的なものはありませんでした。

「進めて良い」と思える瞬間まで、結局は自分でダッシュボードを開きました。けれど、その15秒の確認だけで済んだのは、Browser エージェントが3時間ごとに数値を持って来てくれていたおかげです。私が見ていた時間は減り、判断に使う時間は増えました。

これは技術の進歩というより、作業の構造を変える行為だったと思っています。エージェントに任せたのは「眺め続けること」で、私が手元に残したのは「進めて良いと決めること」。役割が分かれただけで、責任は変わっていません。

段階公開の夜が少し静かになって、私はまた次のリリースのことを考え始めています。