← Documents
Ops · GitOps from an iPad, via the Claude Code App

iPadだけでGitOpsを回す
——開発をエージェントに任せ、自分では検証しない構成

端末に開発環境は要りません。Claude Code アプリから指示を出せば、クラウド側のコンテナがファイルを書き、ビルドし、検証し、PRを作ってマージまで進めます。iPadは指示と確認の画面になります。
ただし、この形には固有の急所があります。自分で検証しないなら、「エージェントが自分で検証した」という事実は担保になりません。同じ環境で自分の仕事を採点しているだけだからです。だから独立した関門を1つ、外に置く必要があります。

端末に要るもの:ブラウザだけ 人の仕事:3つだけ 急所:独立した検証

1結論:要るのは「戻せること」

この構成で用意すべきものは、開発環境ではありません。間違ったものが本番に出たときに、iPadから戻せることです。人が事前に全部を確認しない以上、事前の完璧さではなく事後の復旧力に投資するのが合理的になります。

用意するもの状態役割
独立したCI
GitHub Actions
導入済みエージェントとは別の環境で node build.mjs を走らせる。この構成でいちばん効く一手(→5章
ビルド失敗時の挙動既定でそうなるCloudflareは最後に成功したデプロイを配信し続ける。壊れたビルドは本番に出ない
ロールバック手段ブラウザで可Cloudflareのデプロイ履歴、GitHubのRevert(→7章
プレビューURL既定で発行ブランチをpushすると本番と同じ設定の実物が見られる
ブランチ保護任意(推奨)mainへの直接pushを禁止し、CI通過を必須にする
逆に、用意しなくていいものがはっきりします。ターミナルアプリ、Gitクライアント、エディタ、ローカルのNode.js——どれも要りません。「iPadで開発できるか」を調べる必要すらなく、開発はiPadで行われていないからです。

2誰が何をやるのか

担い手やることやらないこと
人(iPad) 指示を出す/内容が正しいか判断する/公開を承認する ビルドしない・描画確認しない・コマンドを打たない
エージェント
クラウドのコンテナ
ファイル生成/ビルド/整合性チェック/描画確認/commit/PR作成/マージ 内容が事実かどうかの最終判断。公開してよいかの判断
CI
GitHub Actions
エージェントとは別の環境で、同じ検証をやり直す 内容の良し悪しは見ない
Cloudflare 本番ビルドとデプロイ/プレビューURL発行/デプロイ履歴の保持
この表で目を引くのは、人の欄が「判断」しか残っていないことです。作業はすべて外に出ています。そして判断のうち、エージェントが代われないのは「内容が事実か」と「公開してよいか」の2つだけ——ここが8章につながります。

3人がiPadでやる3つ

  1. 指示を出す。「この記事を追加して」「ここが間違っている」。手順ではなく目的を伝えるほうが結果が良くなります。
  2. 内容を読んで判断する。ビルドが通ったかどうかはエージェントとCIが見ています。人が見るべきは「書いてあることが自分の理解と合っているか」だけです。ここを飛ばすと、この構成には誰も内容を見る人がいなくなります。
  3. 公開を承認する。本番に出してよいか。個人情報や未公開の情報が混ざっていないかは、人にしか判断できません。
2つめが最も手を抜きやすく、最も抜いてはいけない部分です。ビルドが緑になると「確認済み」に見えますが、CIが保証しているのはリンク切れやタグの整合であって、内容の正しさではありません。金額・日付・手順が間違っていても、ビルドは何事もなく通ります。緑は「壊れていない」の意味であって「正しい」の意味ではない——ここを混同すると、この構成はいちばん危ない形になります。

4自分で検証しないときの関門

人が検証しない構成では、関門を何層持っているかがそのまま安全性になります。現状はこうです。

関門独立性止められるもの
1エージェントの自己検証低いビルドエラー・リンク切れ・描画崩れ。ただし自分の仕事を自分で採点している
2CI(GitHub Actions)高い同上を別環境でエージェントが検証を忘れた・環境が汚れていた場合をここで拾う
3Cloudflareのビルド高いここで落ちても本番は前回の成功版のまま。壊れたものは出ない
4人による内容の確認事実誤り・不適切な公開。他の層では絶対に止まらない
5ロールバック出てしまったあと(→7章
層1だけに頼るのが、この構成の典型的な失敗です。エージェントが「ビルドが通りました」と報告しても、それはそのエージェントの環境で通ったという報告です。検証を省略しても、環境に前回の生成物が残っていても、報告の見た目は同じになります。報告と事実を切り離す唯一の方法が、層2を持つことです。

5なぜCIが「なお」必要なのか

「エージェントが検証しているならCIは重複では」と思えます。逆です。人が検証しない構成でこそ、CIの価値が上がります。

前提CIの位置づけ
人が手元でビルドして確認する二重確認。あれば安心だが、無くても人が気づく
人は検証せず、エージェントに任せる唯一の独立した検証。これが無いと、検証したという報告を検証する手段が存在しない
本リポジトリには .github/workflows/build.yml を導入済みです。PR と main への push で node build.mjs が走り、整合性チェックが落ちればマージ前に赤くなります。実測で15秒で完了しました。
name: build

on:
  pull_request:
  push:
    branches: [main]
  workflow_dispatch:

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version-file: .nvmrc
      - name: build + integrity check
        run: node build.mjs
      - name: upload dist
        if: always()
        uses: actions/upload-artifact@v4
        with:
          name: dist
          path: dist/
成立している理由は1点です。build.mjs が問題を見つけたときに process.exitCode = 1 を立てているから、CIがそれを失敗として扱えます。スクリプトが黙って成功を返す作りなら、CIを足しても何も守れません。自作のビルドを持つ構成では、まずここを確認してください。

npm install を挟んでいないのは build.mjs が依存パッケージゼロだからです。依存を持つ構成なら npm ci を入れてください。
ブランチ保護まで入れると完成します。Settings → Branches で mainへの直接pushを禁止し、buildの通過を必須に。エージェントがmainへ直接pushする経路が塞がるので、層2を迂回できなくなります。設定はiPadのSafariから行えます。

6初期構築だけは手で触る

日常運用はエージェントに渡せますが、最初の一度だけ、人がブラウザで操作する部分があります。エージェントにCloudflareのAPIトークンを渡せば自動化できますが、それはシークレットを渡すということなので、本記事では人が触る前提にします。

回数作業場所
1回GitHubリポジトリを作るSafari(GitHub)
1回CloudflareとGitHubを接続Safari(Cloudflareダッシュボード)
1回ビルド/デプロイコマンドの設定同上
1回独自ドメインの割り当て同上。DNSとTLSは自動
1回ブランチ保護の設定Safari(GitHub Settings)
随時シークレットの投入ダッシュボード。エージェントに渡さない
ここで1つだけハマる定番があります。✘ [ERROR] The entry-point file at "src/index.ts" was not found.

静的サイトなら wrangler.jsonc から main の行を削除し、assets だけにします。エントリーポイントを要求されなくなります(このライブラリもこの形)。Workerコードが要る構成なら main を残したうえで src/index.ts を実在させる——片方だけだとこのエラーになります。詳細はGitOps構築ガイドに。

7壊れたときにiPadから戻す

事前に全部を確認しない構成なので、ここが本体です。

症状対処操作
ビルドが失敗した何もしなくてよい Cloudflareは最後に成功したデプロイを配信し続ける。本番は無事。原因を直して再push
本番に出たが内容が間違いGitHubでRevert マージ済みPRの画面に Revert ボタンがある。押すと打ち消しPRができるので、それをマージ。iPadで数タップ
すぐ戻したいCloudflareでロールバック ダッシュボードのデプロイ履歴から前のデプロイに戻す。ビルドを待たずに反映される。ただしリポジトリは直っていないので、あとでRevertも必要
公開前に気づいたPRを閉じるマージしなければ本番には出ない
「push したのに本番が変わらない」は、故障ではなく防御が働いた状態です。ビルドが落ちているので、Cloudflareが前の版を守っている。まずビルドログを見る——iPadのダッシュボードから読めます。CIを入れていれば、そもそもマージ前に赤くなるのでここまで来ません。

8エージェントに任せてはいけないもの

項目理由
内容が事実かどうか この構成の最大の弱点。ビルドもCIも内容を見ません。金額・日付・手順が間違っていても全部緑になります。エージェントに「確認できたことと、できなかったことを区別して書かせる」運用にしておくと、人が読むべき箇所が絞れます
公開してよいかの判断 個人情報・固有名詞・未公開の情報。全面公開のサイトでは取り返しがつきません(検索エンジンとAIのクローラーの双方に読まれる前提)
シークレット APIトークン・パスワード。リポジトリにもエージェントにも渡さず、ダッシュボードで直接投入する
破壊的な操作 大量削除、履歴の書き換え、既存ファイルの意図しない上書き。実行前に人に確認させる約束にしておく
この4つを文章にしてリポジトリに置いておくのが効きます。本リポジトリでは CLAUDE.md誠実さのルール(確認していないことは書かない・URLは実際に取得できたものだけ)公開ポリシーを書いており、エージェントは毎回それを読んでから作業します。指示のたびに言うのではなく、リポジトリ側に固定するのがこの構成の作法になります。

9補足:端末でnodeを動かす必要はない

参考までに書いておくと、iPadで node を動かす道は事実上ありません。

ただし、この構成では関係ありません。ビルドはエージェントのコンテナ・CI・Cloudflareの3か所で走っていて、端末で走らせる理由がそもそも無いからです。「iPadで開発できるか」を調べる前に、「開発をiPadでやる必要があるか」を問うと、この構成では答えが No になります。

S情報ソース

2026年8月時点。

  • 【本リポジトリで実測】 .github/workflows/build.yml は本記事に伴って追加したもので、PRのチェックとして実際に実行し、15秒で success になることを確認済みです。build.mjs が依存パッケージゼロであること、問題検出時に process.exitCode = 1 を立てること、Nodeのバージョンを .nvmrc で管理していることは、いずれもリポジトリの実際の状態です。
  • 【本サイト内】 Cloudflare側の挙動——ビルド失敗時は最後に成功したデプロイを配信し続けるブランチをpushするとプレビューURLが発行される静的サイトでは wrangler.jsoncmain を削除する——は、GitOps構築ガイドおよび CLAUDE.md の記載に基づきます。
  • 【二次情報】 9章の a-Shell が JavaScriptCore のみで Node.js ではないことiSH では apk add nodejs できるが SSE2 未実装により illegal instruction で落ちることは検索結果に現れた記述で、一次確認も実機確認もしていません。本記事の構成はこの事実に依存していないため、補足として扱っています。
  • 【確認していないもの】 Claude Code アプリ自体の仕様・対応バージョン・料金。変わりやすいため本記事では書いていません。またiPad実機での操作検証は行っていません——本記事は構成の設計と分担の整理であって、アプリの操作手順書ではありません。

H更新履歴

日付内容
2026-08-07前提の取り違えにより全面的に書き直した。初版は「iPad上で開発し、自分で検証する」ことを前提に、端末で動く道具(a-Shell・iSH・Working Copy・Codespaces)を比較して4つの型に整理していた。実際の運用は「開発はClaude Codeアプリ(クラウド側のコンテナ)で行い、人は検証しない」であり、端末の道具立ての比較はまるごと不要だった。そこで論点を「人が検証しない構成で、何が安全性を担保するのか」に置き換えた。エージェントの自己検証は、同一環境で自分の仕事を採点しているだけなので独立した担保にならないという点を中心に据え、関門を5層(自己検証/CI/Cloudflareのビルド/人による内容確認/ロールバック)で整理。人が検証しないからこそCIの価値が上がるという関係を明記した。端末でnodeが動かない件は、構成に影響しないため9章の補足へ降格した。
2026-08-07初版公開。あわせて本リポジトリに GitHub Actions のワークフロー(.github/workflows/build.yml)を追加した。それまでCIは存在せず、検証はローカルとCloudflareのビルドにしか無かった。

関連ドキュメント