世界を動かす技術を、日本語で。

Xcodeを開かずにMacおよびiOSアプリを構築・配信する方法

2026年7月14日原文(scottwillsey.com)

概要

  • Xcode のGUIを使わずにMac/iOSアプリの開発・リリースを自動化する方法の解説
  • xcodebuildnotarytool などコマンドラインツールの活用
  • 初期設定のみ Xcode GUI が必要、それ以降は全てシェルスクリプトで完結
  • XcodeGen でプロジェクト管理を効率化し、git運用も最適化
  • AI(Claude Code等) を活用した自動化・効率化の推奨

Xcodeを開かずにMac/iOSアプリを開発・リリースするワークフロー

  • Xcode.appのインストール は必須だが、GUIを開く必要はほぼ無し
  • xcodebuild, notarytool, stapler, devicectl は全てXcode内のCLIツール
  • 一度だけ必要な手動作業
    • Apple IDへのサインイン(Xcode)
    • Developer ID証明書の作成(Xcode)
    • ノータリゼーション用パスワードの保存(Terminal)
  • 以降は 完全ヘッドレス でビルド・デプロイが可能

XcodeのCLIツールチェーン設定

  • Xcode.app が正しくコマンドラインツールとして選択されているか確認
    • xcode-select -p/Applications/Xcode.app/Contents/Developer であることを確認
    • 違う場合は sudo xcode-select -s /Applications/Xcode.app/Contents/Developer で修正
  • Command Line Tools (/Library/Developer/CommandLineTools)は不要
    • iOS SDKやnotarytool等はXcode.app内にしか含まれない

XcodeGenによるプロジェクト管理

  • XcodeGen をHomebrew等でインストール(brew install xcodegen
  • プロジェクト設定を project.yml (YAML)で管理
    • .xcodeprojフォルダは毎回自動生成、git管理不要
  • gitには YAMLファイルのみ をコミットし、プロジェクトの一貫性を保つ

初期Xcode設定(GUIで一度だけ必要)

  • ライセンス同意・追加コンポーネントのインストール
    • sudo xcodebuild -license accept
    • sudo xcodebuild -runFirstLaunch
  • Apple Developerアカウントの設定
    • Xcode > 設定 > アカウント > + から追加
    • 有料Apple Developerアカウント が必要
  • Developer ID Application証明書の作成
    • Xcode > 設定 > アカウント > 証明書管理 > + > Developer ID Application
    • 開発用証明書とは別物、配布・ノータリゼーション用
    • 証明書と秘密鍵は loginキーチェーン に保存、バックアップ推奨

ノータリゼーション用クレデンシャルの保存

  • notarytool でアプリごとにプロファイル作成
    • xcrun notarytool store-credentials App-Name --apple-id "[email protected]" --team-id YOUR-TEAM-ID
    • アプリ固有のプロファイル名 を付与、他アプリと兼用しない
    • パスワードは Apple IDのアプリ専用パスワード (appleid.apple.comで生成)
    • パスワードは定期的に更新が必要、401エラー時は再生成
    • 登録確認:xcrun notarytool history --keychain-profile App-Name
  • パスワード管理は 1Password 等のパスワード管理ツール推奨

Local.xconfigファイルの設定

  • チームIDやバンドルプレフィックス等を Local.xconfig に記載し、.gitignoreへ追加
    • 例:BUNDLE_PREFIX = your.real.prefix
    • 例:DEVELOPMENT_TEAM = YOUR-TEAM-ID

デプロイスクリプト(release.sh)の作成

  • release.sh で全工程を自動化

    • プロジェクト生成 → アーカイブ → Developer ID署名 → ノータリゼーション → ステープル → /Applicationsへインストール
  • AI(Claude Code等) に要件を伝えれば、プロジェクト固有のスクリプトを自動生成可能

  • スクリプト例(主要ポイントのみ抜粋)

    • set -euo pipefailで失敗時即停止
    • cd "$(dirname "$0")/.."でリポジトリルートへ移動
    • xcodegen/Notary Profileの事前チェック
    • xcodebuildでアーカイブ・エクスポート
    • notarytoolでノータリゼーション
    • staplerでチケット付与
    • spctlでGatekeeper検証
    • /Applicationsへコピー、lsregisterで再登録
    #!/usr/bin/env bash
    set -euo pipefail
    # ...(変数定義・事前チェックなど)
    xcodegen generate
    xcodebuild -project ... -archivePath ... archive
    xcodebuild -exportArchive ...
    xcrun notarytool submit ... --wait
    xcrun stapler staple ...
    spctl -a -vvv -t exec ...
    cp -R ... /Applications/
    
  • スクリプトの特徴

    • 途中失敗時は即停止、半端な状態を残さない
    • どのディレクトリからも実行可能
    • 事前チェックで無駄なビルドを防止
    • インストール後のバリデーションも自動化

AIによる自動化・効率化の推奨

  • LLM(Claude Code等) に手順や要件を伝えることで、繰り返し作業やスクリプト生成を自動化
  • パスワード管理や初期設定もAIとの連携で効率化
  • 「やりたくない手作業はAIに任せる」 という発想の重要性

まとめ

  • Xcode GUIを極力使わず、CLIとスクリプトでMac/iOSアプリの開発・リリースを自動化可能
  • 初期設定のみGUIが必要だが、それ以降は完全自動化が実現
  • XcodeGennotarytoolAIツール を活用し、開発効率と再現性を最大化
  • git運用 も簡素化、チーム開発でも安定運用が可能
  • AIとの連携 で今後も更なる自動化・効率化が期待できる

Hackerたちの意見

これを読んでるとちょっと面白いね: > 「自分のやつはClaude Codeに作ってもらったんだ。大体こんな感じで言ったよ:アーカイブして、Developer IDで署名して、公証して、ステープルして、Xcodeを開かずにこのアプリを/Applicationsにインストールしたい。全ての工程をやって、どこかで失敗したら大きな音を立てて教えてくれるスクリプトを書いて。」今読んでるテキストは、Claudeが私たちに話しかけてるってことでもあるしね :) それに、ブログ記事のほぼ全ての段階で「LLMに聞いてみて」って言ってるのがちょっと変だった: > 「Claude Codeやあなたの好きなLLMコーディングツールをこのブログ記事に向けて、解決させてみて。」 > 「迷ったら、好きなLLMに聞いて、セットアップを手伝ってもらおう。」結局、Xcodeを使うのはそいつなんだから。 > 「そもそもLLMを使う目的は、やりたくないことを手動でやらないためだよ。」 > 「また、迷ったらClaude Codeや好きなLLMにこれを作ってもらおう。」 > 「だからこそ、LLMに話しかけて、何が欲しいか伝えて、ワークフローを作る手伝いをしてもらうんだ。」

Claudeが自分のウェブサイトを指し示すように言って、それを使ってClaudeでビルド環境を作るって…なんか面白いね。

テキストのミスを見て、これがAIだとは思えなくなったけど、もしかしたら今はわざとそうしてるのかもね。

自分のオープンソースプロジェクト、Axiom¹について言ってもいいかな?これがApple OS開発において、コーディングハーネスが効果的にこれを行うのを助けてくれるんだ。豊富なスキルとエージェントのリストに加えて、AxiomにはいくつかのLLM用ツール²も含まれてる。xclog、xcprof、xcsym、xcuiはLLMが使うために設計されていて、トークン効率の良い方法で機能を公開してる。これらのツールは、非Axiomのスキルやエージェントにも同じくらい役立つよ。¹ Axiom: https://charleswiltgen.github.io/Axiom/ ² Axiom CLIツール: https://charleswiltgen.github.io/Axiom/tools/

Axiomは素晴らしいね、作ってくれてありがとう!

Flutterと一緒に使えるのかな?

ちょっと変な質問だけど、Kotlinのマルチプラットフォームコードベースでちゃんと動くと思う?Swiftのネイティブコードはあるけど、ロジックを共有した場合のパフォーマンスがどうなるかはわからないな。

いつもaxiom使ってる、ありがとう!iOSアプリのツールの次のフロンティアは、自己ホスティング可能なLinuxベースのビルドサーバーだと思うんだけど、どう思う?

自分はLinuxだけでiOSアプリを作ってテストしてるんだけど、意外と簡単だよ。これがすごくうまくいく: https://github.com/xtool-org/xtool TestFlightやApp Storeにアップロードする必要もなくて、USB経由でiPhoneにローカルにインストールできるんだ -- Linuxからでも!迷ったら、好きなコーディングエージェントに「Hello World」のiOSアプリを作ってアップロードする手伝いを頼んでみて。ほんとに簡単だよ。

自分も同じことをやってるけど、LinuxのインストールはWindowsのWSL経由だよ。sideloadlyを使ってIPAを電話に移してる。すごくうまくいってるよ。

USB経由で転送した場合、iPhoneはずっと接続しておかなきゃダメなの?

コーディングエージェントたちはこのツールについて知ってるのかな?

Hacker Newsで議論の続きを見る