メインコンテンツへスキップ
見出し画像

個人開発の運用をAIに任せるために整備した、8つの配管

    プロダクトエンジニアをしているすずきゆーだい(@szkyudi)です。仕事の傍ら、「みらいぼ」という家計アプリを個人開発しています。

    前回、アプリ運営を支えているフレームワーク(リーンキャンバスやAARRRなど)の話を書きました。今回はその土台の話です。

    前編はこちら:

    というのも、うちの運用——週次の分析、ストア順位の定点観測、リリース提出、広告の判定と設定変更、課金商品の設定——は、ほとんどAI(コーディングエージェント)が実行しています。人間側の仕事は「今週の調子どう?」と聞くことと、最終判断にハンコを押すことくらいです。

    これが成立しているのは、AIが賢いからというより、AIが手足を動かせる配管を先に通してあるからだと思っています。配管がなければ、どんなに賢いAIも「ダッシュボードを見てください」としか言えません。整備した順に8つ紹介します。

    大原則:GUIでやっていることを、APIとCLIに置き換える

    AIはブラウザの管理画面をポチポチするのが苦手です(できる環境もありますが、遅いし不安定でした)。なので方針はシンプルで、人間がGUIでやっている操作を、ひとつずつAPIとコマンドラインに置き換えていく。置き換えた瞬間、その仕事はAIに渡せるようになります。

    1. App Store Connect APIキー(最重要)

    Apple開発者なら、まずこれだと思います。.p8形式のAPIキーを1枚作るだけで、AIにこれだけの仕事を渡せるようになりました。

    • TestFlight配信・審査提出(fastlane経由)

    • リリースノートやキーワードなどメタデータの更新

    • 売上・サブスクリプションレポートの取得

    • 課金商品の設定(175地域ぶんの価格設定と無料トライアルの追加をAPIで一括投入しました。手作業だったら日が暮れていたはずです)

    • アプリ内A/Bテスト(プロダクトページの最適化)の作成と監視

    ハマりどころを2つ。まずロールはAdminが必要です(App Managerだと売上レポートなどに届きません)。それから、自前でAPIを叩く場合、認証トークンの有効期限はAppleの上限が20分です。これを知らずに長めの有効期限を設定して、全リクエストが無言で失敗し続ける時間を過ごしました。

    2. fastlane を「唯一の実行契約」にする

    テストは `fastlane test`、配信は `fastlane deploy env:prod`。ローカルで叩いてもCIで叩いても同じレーンが動く、という状態にしておきます。

    これがAI駆動とすごく相性がよくて、AIへの指示が「ビルドして提出して」の一言で済むようになります。署名は自動署名に寄せて、証明書やプロファイルの手動管理は捨てました。人間ですら嫌な作業は、AIにとっても事故のもとだと思います。

    3. Firebase Analytics → BigQuery エクスポート

    分析基盤の本体です。Firebaseの管理画面で見られるのは集計済みの数字だけですが、BigQueryエクスポートを有効にするとイベントの生データにSQLが撃てるようになります。個人開発の規模なら無料枠で余裕でした。

    「課金してくれた一人ひとりの、購入前後の行動タイムライン」「初週に何件入力した人が、何%戻ってくるか」——管理画面では絶対に出せないこの解像度の分析が、AIに「分析して」と言うだけで返ってきます。

    4. 計測の仕込みは、AIが分析する前提でコード側に

    ただし、BigQueryがあっても、イベント側に情報が刻まれていなければ遡れません。最初から入れておけばよかったと痛感したのは、この3つです。

    • 配布経路のパラメータ(App Store / TestFlight / 開発ビルド)。テスターと市場のユーザーを混ぜた分析は、全部フィクションになります

    • 操作の発生源(手入力なのか、オンボーディングの自動生成なのか、ナッジ経由なのか)

    • 自分の端末の除外。リリース直後、いちばんのヘビーユーザーは自分でした

    イベント設計のレビュー観点は「あとからAIがSQLで切り分けられるか」に尽きると思っています。

    5. Apple Search Ads API

    広告を出すなら、です。レポート取得だけじゃなくて、キーワードの停止・入札変更・予算変更までAPIで完結します。うちでは「判定日に基準未達なら縮小する」と事前に決めたルールを、AIがスクリプトにして実行しました。

    この手のAPIは罠が多いです(レポートには指定必須の排他パラメータがあるとか、予算は停止中キーワードの入札額にも制約されるとか)。踏んだ罠はスクリプトのコメントに書き残すようにしています。理由は7番目に書きます。

    6. 定点観測は cron で回して、git に積む

    ストアの検索順位は毎日変わるのに、公式には履歴が残りません。なので、順位チェックのスクリプトを毎日自動実行して、結果をCSVでリポジトリにコミットしています。gitがそのまま時系列データベースになる——安上がりだし、差分も履歴も検索も全部gitの機能で済みます。

    ひとつ苦い教訓を。自動実行のpush失敗を握りつぶす書き方(`|| true`)をしていたせいで、気づかないうちに数日分の欠測を作ったことがあります。順位データは後から取り直せません。自動化の失敗は、静かに飲み込ませずに必ず表面化させる。これはAI駆動うんぬん以前の鉄則でした。

    7. リポジトリを「AIの記憶」として設計する

    最後がいちばん地味で、いちばん効いていると思います。AIとのセッションは毎回リセットされるので、継続性はぜんぶリポジトリに置くことにしました。

    • 判定基準・撤退ラインは docs/ に文書化する(「〜が4週続いたら差し戻す」の粒度まで書く)

    • 意思決定はコミットメッセージとドキュメントに、理由ごと残す

    • スクリプトの冒頭コメントに、使い方と過去に踏んだ罠を書く

    こうしておくと、次のセッションのAIが「前任者の引き継ぎ書」を読んでから動いてくれます。うちのスクリプト群は、コメントの半分くらいが未来のAIへの申し送りになっています。

    8. Claude Code の Remote Control(スマホがオフィスになる)

    最後は、この記事を書いている今まさに使っている配管です。Claude CodeにはRemote Controlという仕組みがあって、自宅のMacで動いているAIをスマホから操作できます。

    1〜7の配管が揃った状態でこれを繋ぐと、何が起きるか。外出先のスマホから「今週の調子どう?」と聞けば分析が返ってきて、「提出して」と言えば審査提出まで進み、記事はnoteの下書きに入る。実はこの記事の執筆も転記も、スマホからの指示で進めました。

    ここが8番目である理由がいちばん大事なところで、GUIの操作が残っていたら、スマホから何を指示しても最後は机に戻るしかありません。1〜7でAPIとCLIに寄せきってあるからこそ、遠隔の一言が最後まで走りきる。配管の総仕上げというより、配管を揃えた人へのご褒美のような存在だと思っています。

    人間にしか残らなかった仕事

    配管を通し終えてみると、人間の仕事は3つに絞られていました。

    1. 権限の付与(APIキーの発行、課金、アカウント管理)

    2. 外に出るものの最終承認(審査提出のハンコ、リリースノートの確認、記事の公開)

    3. 判定への署名(AIが出してきた分析と選択肢に対して、決める)

    逆に言うと、分析・実装・提出・観測は全部渡せました。ちなみに、この配管の整備そのものもほとんどAIにやってもらっています。最初の数日を投資すると、以後の運用が「今週どう?」の一言になる——個人開発の時間の使い方として、これ以上の投資先を僕はまだ知りません。

     
     
    秋になると柿を200個食べるプロダクトエンジニア。個人開発もやってます。

    あなたへのおすすめ