← Documents
Ops · Can You Build It From an iPad Alone?

iPadだけでGitOps環境を構築できるか
——Workers Builds 方式で、ブラウザ操作だけ通す

運用がiPadで回るのは分かっている。問題は「その環境をゼロから作れるか」です。結論から言うと作れます。ターミナルが要る作業は一つもありません。ただしAPI では代替できない関門が1つだけあります——GitHub App の認可。ここはブラウザで人が承認するしかない。逆に言えば、引っかかる可能性があるのもそこだけです。

結論:作れる ターミナル:不要 関門:GitHub App認可(1回)

1結論

iPadだけで構築できます。全工程がブラウザとエージェントへの指示で完結し、ターミナルを開く場面はありません。

人がブラウザで手を動かすのは実質5か所。うちAPIで代替できないのは「GitHub App の認可」の1回だけで、これはアカウントに対して一度行えば以後は使い回されます。

GitOps構築ガイドは「ローカル環境が無くても進められる」と書いています。本記事はその一段先——「iPadという具体的な端末で、初期構築まで通るのか」を、工程ごとに分解して確かめたものです。

2全ステップの内訳

#作業誰がiPadでの実際
1GitHub/Cloudflare のアカウントSafari。無料プランで可
2リポジトリ作成エージェントでも可GitHub API で作れる。人がSafariで作っても同じ
3中身の生成
build スクリプト・wrangler.jsonc・コンテンツ・CI
エージェント指示を出すだけ。ここが作業量の大半で、そこが丸ごと外に出る
4ドメイン取得+ネームサーバーをCloudflareへレジストラのサイト(Safari)。*.workers.dev だけで済ませるなら不要
5GitHub App「Cloudflare Workers and Pages」の認可人・ブラウザ必須APIで代替不可。ここだけが関門(→3章
6リポジトリ接続・ビルド/デプロイ設定
(認可後はAPIでも可)
Cloudflareダッシュボードのフォーム入力
7独自ドメインの割り当てエージェント設定ファイルに書くだけでダッシュボード操作が消える(→5章
8ブランチ保護GitHub の Settings → Branches
人の作業を数えると、1・4・5・6・8 の5か所。どれもフォームに入力するか、承認ボタンを押すかで、コマンドを打つ場面はありません。4は独自ドメインを使わないなら消えますので、最小構成なら4か所です。

3唯一の関門:GitHub Appの認可

Cloudflare が GitHub のリポジトリを読むには、GitHub App「Cloudflare Workers and Pages」を認可する必要があります。この認可だけは API で代替できません。ブラウザで人が承認画面を通るしかない設計です。
1サイトなら、API で自動化する意味はありません。ダッシュボードのフォームを1回埋めるほうが速く、APIトークンという秘密情報を持たずに済みます。自動化が効いてくるのはサイトを量産するときだけです。

4エージェントに任せられる範囲

iPad構築が成立する理由は、作業量の大半を占める部分が、そもそも人の手を離れていることにあります。

エージェントがやること補足
リポジトリの作成GitHub API 経由。人がSafariで作っても構わない
プロジェクトの雛形一式ビルドスクリプト・wrangler.jsoncpackage.json.nvmrc・ディレクトリ構成
CIワークフロー.github/workflows/ にビルドと検証を置く
独自ドメインの設定wrangler.jsonc に書く(→5章
commit・push・PR・マージ
ビルドと整合性チェックコンテナ内で実行して結果を報告
順序として、空のリポジトリを先に作っておくのが確実です。エージェントのセッションはリポジトリに紐づくので、紐づける先が存在していれば話が早い。そのあと「この構成で雛形を作って」と指示すれば、手順3と7がまとめて片づきます。

5独自ドメインがダッシュボードから消える

地味ですが、iPadでの手作業を1つ減らせる箇所です。

{
  "name": "your-app",
  "compatibility_date": "YYYY-MM-DD",
  "assets": { "directory": "./dist" },
  "routes": [
    { "pattern": "example.com", "custom_domain": true }
  ]
}
routes[].custom_domain: true を書いておけば、DNSレコードとTLS証明書は Cloudflare が自動で発行します。ダッシュボードで Custom Domain を追加する操作が要らなくなり、ドメインの設定がリポジトリの中に残るという副次的な利点もあります。

前提は、そのドメインが Cloudflare のゾーン配下にあること——つまり手順4のネームサーバー切替が済んでいることです。

6なぜ Workers Builds を選ぶか

Cloudflare へのデプロイには、もう1つ GitHub Actions から API トークンでデプロイする方式があります。こちらなら GitHub App の認可すら要りません。それでも本記事が Workers Builds を採るのは、次の交換だからです。

Workers BuildsGitHub Actions + APIトークン
GitHub App認可必要(1回)不要
APIトークン不要必要。作成してGitHub Secretsに保管・更新
ブラウザ操作サイトごとに1分程度ゼロにできる
向いている場面サイト数が少ない/トークンを持ちたくないサイトを量産する/CIに独自処理を足したい
「1回のブラウザ承認」と「秘密情報を持ち続けること」の交換です。1サイトなら前者のほうが明らかに軽い——認可は一度きりですが、トークンは作成・保管・失効・更新がずっと付いて回ります。サイトを量産する段になったら Actions 方式に切り替える、という順序が自然です。

7実際に叩く順番

やること場所
1Cloudflareアカウントを作るSafari
2ドメインのネームサーバーをCloudflareへ向けるレジストラのサイト。反映に時間がかかるので最初にやる
3空のリポジトリを作るSafari(GitHub)
4エージェントに雛形一式を作らせるClaude Code。wrangler.jsoncドメインも書かせておく
5GitHub App を認可Cloudflareダッシュボード → GitHubの承認画面。Only select repositories
6リポジトリを接続し、ビルド/デプロイ設定を入れるCloudflareダッシュボード
7初回デプロイを確認ダッシュボードのビルドログ
8ブランチ保護を入れるGitHub Settings → Branches
2を最初に置くのは、ネームサーバーの反映に時間がかかるからです。ここが終わっていないと7で独自ドメインが解決せず、設定を間違えたのか反映待ちなのか切り分けられなくなります。
手順6で必ず踏む落とし穴が1つあります。✘ [ERROR] The entry-point file at "src/index.ts" was not found.

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

8引っかかるとすればここ

「作れる」と書きましたが、本記事はiPad実機で構築を通していません。工程を分解して「ターミナルを要求する作業が無い」ことを確かめたに留まります。踏んでみないと分からない箇所を、正直に挙げます。

いずれも「構造的にできない」ではなく「操作性の問題」です。APIで代替できない関門は手順5の認可ただ1つで、それもブラウザ操作である以上 iPad で不可能な理由はありません。構築できない理由は見当たらない、というのが本記事の結論の正確な形です。

S情報ソース

2026年8月時点。

  • 【本リポジトリ内】 自動化の可否・GitHub App の認可がブラウザ必須であること・Only select repositories で範囲を絞れること・認可がアカウント/組織ごとに1回であること・Actions 方式との比較は、本リポジトリの docs/BOOTSTRAP.md の記載に基づきます。
  • 【本リポジトリで実装済み】 routes[].custom_domain: true によりダッシュボードでの Custom Domain 追加が不要になる点は、tools/new-site.sh がこの前提で書かれています。ただし本リポジトリ自身は wrangler.jsonc にこの設定を持っておらず、実行して検証したものではありません。
  • 【未検証・公式ドキュメント由来】 Workers Builds の API(PUT /accounts/{id}/builds/repos/connectionsPOST /accounts/{id}/builds/triggers)と、user-scoped トークン(Workers CI Write)が必要で account-scoped では Invalid token になる点は、Cloudflare公式ドキュメントの記載として docs/BOOTSTRAP.md に整理したものです。本リポジトリでは実行して検証していません(実アカウントとトークンが必要なため)。
  • 【本サイト内】 mainsrc/index.ts の対応、静的サイトでは main を削除する、ビルド失敗時は最後に成功したデプロイを配信し続ける——はGitOps構築ガイドの記載に基づきます。
  • 【検証していないこと】 iPad実機での構築は通していません。本記事は工程を分解し「ターミナルを要求する作業が存在しない」ことを確かめたものです。Claude Code アプリの仕様、iPadOS の Safari における GitHub App 承認フローの挙動、各レジストラの管理画面の操作性は、いずれも未確認です(8章に明記)。

H更新履歴

日付内容
2026-08-07初版公開。同日に公開していた「iPadだけでGitOpsを回す」を差し替える形で作成した。旧記事は運用(人が検証しない構成での関門の作り方)を論点にしていたが、実際に不明だったのは「この環境をiPadだけで構築できるか」という一点だったため、論点を初期構築に絞って書き直した。工程を8つに分解し、ターミナルを要求する作業が存在しないことと、APIで代替できない関門が GitHub App の認可ただ1つであることを示した。あわせて、routes[].custom_domain: true により独自ドメインの割り当てがダッシュボード操作から消えること、Workers Builds と GitHub Actions + APIトークン方式の交換関係(1回のブラウザ承認 対 秘密情報を持ち続けること)を整理した。iPad実機での構築は通していないため、踏んでみないと分からない3点(承認フローのSafariでの挙動・空リポジトリへのセッション開始・レジストラの管理画面)を8章に明記している。

関連ドキュメント