一緒にいる時間は大事にしたい。でも開発もしたい。パートナーの横で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つ。
- プッシュ通知: タスク完了、エラー発生、パーミッション要求のタイミングで通知が来る。スマホを置いて他のことをしていても、進捗がわかる
- 自宅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を遊び倒す|海外勢のネタ設定が面白すぎた開発