スマホだけでアプリ開発する方法|家族の横でこっそりOTAデプロイ

開発

一緒にいる時間は大事にしたい。でも開発もしたい。パートナーの横でPCを開くと「一人の世界」に入ってしまって、会話もなくなる。だからうちではPC禁止。でもスマホなら、隣にいる感覚を保てる。

この「PC開けない問題」を解決するために、スマホだけでアプリ開発からOTAデプロイまで完結するワークフローを作りました。

Claude Codeが地味に快適になる細かいTips集開発

なぜスマホだけで開発したいのか

理由はシンプルで、パートナーと同じ空間にいたいからです。

PCを開くと、どうしても「仕事モード」に見えるんですよね。画面に集中している姿が、相手からすると壁を作られている感覚になるみたいで。実際、話しかけても反応が遅くなるし、気持ちはわかります。

でもスマホなら話は別です。スマホをいじっている程度なら、会話もできるし、一緒にいる感じが保てる。パートナーの横で開発するという、ちょっと変わった動機からこのワークフローは生まれました。

ベッドの中で横になりながら開発するのが日課になってる。

筆者

全体のアーキテクチャ

スマホから指示を出して、あとはCIが全部やってくれる。仕組みはシンプル。

スマホ (Happy Coder)
  → Claude Code (自宅Mac)
    → コード変更 & git push
      → GitHub Actions
        → iOS JSバンドルをビルド
          → Revopush OTA デプロイ
            → ユーザーの端末に即反映

ポイントはOTA(Over-the-Air)更新です。React NativeやExpoのJSバンドルだけの変更なら、App Storeの審査を通さずにアプリを更新できます。つまり、スマホからコードをpushするだけで、ユーザーの手元のアプリが変わる。

ネイティブコード(Swift/Kotlin)の変更が伴わない限り、このフローでストア審査なしにデプロイできます。

Happy Coder:スマホからClaude Codeを操作する

Happy Coder は、Claude Codeをスマホから操作できるモバイルクライアント。OSSで無料。

セットアップ

自宅のMacで以下を実行するだけです。

npm install -g happy-coder
happy  # claudeの代わりにhappyコマンドで起動

ターミナルにQRコードが表示されるので、スマホのHappy Coderアプリでスキャンしてペアリング完了。以降はスマホからClaude Codeのセッションをそのまま操作できます。

なぜClaude Code単体ではなくHappy Coderなのか

Claude CodeにはiOS/Web版がありますが、Happy Coderを使っている理由は2つ。

  1. プッシュ通知: タスク完了、エラー発生、パーミッション要求のタイミングで通知が来る。スマホを置いて他のことをしていても、進捗がわかる
  2. 自宅Macのリソースを使える: Claude Code公式のWeb版はAnthropicのマネージドインスタンス上で動くため、ローカルのプロジェクト設定やMCPサーバーがそのまま使えない。Happy Coderなら自分のMac上のClaude Codeをそのまま操作できる

OTA更新:なぜRevopushを選んだか

スマホだけで開発するなら、コードをpushした後のデプロイも自動化しないと意味がありません。なのでOTAの自動化も必要です。

expo-updatesは断念した

最初はExpo公式の expo-updates(EAS Update)を使おうとしました。でも、iOSでOTA更新後にクラッシュするバグに遭遇して断念しました。このバグはSDK 53, 55で複数報告されていて、OTA適用後のアプリ再起動でクラッシュしたり、ダウンロード時に落ちたりと症状もさまざまです。安定性に不安が残ったので、別の選択肢を探すことにしました。

CodePush終了後の選択肢

Microsoft App Centerが2025年3月に完全終了し、CodePushも使えなくなりました。2026年現在の主な選択肢はこんな感じです。

Revopush おすすめ Stallion Capgo EAS Update
対象 React Native React Native Capacitor Expo
CodePush互換 × × ×
セルフホスト × × ×
GitHub Actions対応
差分更新
無料プラン
料金(有料) $25~/月 $64~/月 $12~/月 従量課金

Revopushを選んだ理由

いくつか比較した結果、Revopushに落ち着きました。決め手はCodePush互換のAPI + 無料プランの存在 + GitHub Actions公式サポートのバランスです。StallionやCapgoも検討しましたが、React Nativeとの相性やCI連携のしやすさでRevopushが一番しっくりきました。

導入は @revopush/react-native-code-push をインストールして、Revopushのダッシュボードでアプリを登録するだけ。CLIもシンプルで、CIに組み込みやすいのが助かります。

GitHub ActionsでOTAデプロイを自動化する

main ブランチにpushするだけでOTAデプロイが走る仕組みを GitHub Actions で作りました。

自動デプロイの流れ

name: Deploy Production

on:
  push:
    branches: [main]
    paths:
      - 'apps/mobile/**'
      - 'packages/**'

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: pnpm/action-setup@v4
      - uses: actions/setup-node@v4
        with:
          node-version: '20'
          cache: 'pnpm'

      - run: pnpm install --frozen-lockfile

      # Revopush CLIのセットアップ
      - uses: revopush/revopush-github-action@v1
        with:
          version: latest
          accessKey: ${{ secrets.REVOPUSH_ACCESS_KEY }}

      # iOSバンドルのビルド
      - run: |
          npx expo export:embed \
            --platform ios \
            --dev false \
            --reset-cache \
            --bundle-output ./build-ios/main.jsbundle \
            --assets-dest ./build-ios

      # Revopushにデプロイ
      - run: |
          VERSION=$(node -p "require('./app.config.js').expo.version")
          revopush release my-app ./build-ios "$VERSION" \
            -d Production \
            --description "${{ github.event.head_commit.message }}"

デプロイが完了するとSlackに通知が飛ぶようにもしています。スマホでSlack通知を受け取れば、OTAデプロイの成功を確認できます。

手動デプロイも用意

workflow_dispatch で手動トリガーも作っておくと便利です。StagingとProductionを選べるようにしておけば、検証環境への配布もスマホからGitHubのActions画面でポチるだけ。

実際の開発フロー

ベッドの中での1セッションはこんな感じです。

Happy Coderを開いて、Claude Codeに「○○画面のバグを修正して」と指示を出す。あとはスマホを置いて、パートナーと会話したりYouTubeを見たり。基本はYOLOモード(自動承認)で動かしているので、パーミッションの承認待ちもありません。完了通知が来るまで放置するだけ。

通知が来たら差分を確認して、問題なければ「commitしてpushして」と指示。main にpushされた時点でGitHub Actionsが自動で走り、数分後にSlack通知が来てデプロイ完了。自分の端末でアプリを再起動すれば、変更が反映されています。

ソファでパートナーと喋りながら、気づいたら機能追加やバグ修正が終わってる。

筆者

Webサイトの場合はもっと簡単

モバイルアプリよりWebの方がさらにシンプルです。

VercelやNetlify、Cloudflare Pagesを使っていれば、git pushするだけでプレビュー環境が自動生成されます。PRを作れば、プレビューURLがコメントに貼られる。スマホのブラウザでそのURLを開けば、デプロイ結果をすぐに確認できます。

OTA更新サービスのセットアップも不要だし、CI/CDもGit連携を有効にするだけ。実際、このブログもVercelなので、この記事自体スマホからデプロイしてます。

限界と注意点

もちろん万能ではありません。

ネイティブコードの変更はOTAでは無理です。新しいネイティブモジュールを追加したり、ios/ 配下のSwiftコードを変更する場合は、EAS Buildでバイナリを再ビルドしてストア審査に出すしかない。PCがないと厳しい。

大規模なリファクタリングもPCが欲しくなります。ファイルを大量に移動したり、アーキテクチャを大きく変えるような作業は、PCの大画面で差分を確認しながら進めたい。スマホの画面では全体像が見えにくいです。

通信環境への依存もあります。Happy CoderもGitHub Actionsも、当然ネットワーク接続が必要です。ただ、モバイル回線があれば基本的には問題ありません。

えっ、まだデスクに座って開発してるの?

筆者

まとめ

Happy Coder + Claude Code + Revopush + GitHub Actions。この4つを組み合わせれば、スマホだけでアプリ開発からOTAデプロイまで完結します。

正直、最初は「パートナーの横でPCを開けない」という消極的な理由から始めました。でも実際にやってみると、スマホで指示を出して通知を待つだけの非同期ワークフローは、想像以上に快適です。

開発の生産性を上げることより、大事な人との時間を削らないこと。そっちの方が、長く続けられる気がしています。パートナーは、僕がスマホでデプロイしていることにまだ気づいていません。こっそりデプロイ、意外と楽しいですよ。

Claude Code Hooksを遊び倒す|海外勢のネタ設定が面白すぎた開発 Claude CodeでMacがスリープして困る?4つの解決策を比較してみた開発
Thanks for reading!
Claude CodeHappy CoderRevopushOTAモバイル開発GitHub Actions