SwiftUI

SwiftUI macOS アプリの公開手順と公証完全ガイド

ⓘ本ページはプロモーションが含まれています

スポンサードリンク

前提条件と開発環境の整備

このセクションでは、SwiftUI macOS アプリをビルド・公証・配布するために最低限必要なツールチェーンと OS の要件を確認します。正しい環境が揃っていないと、署名エラーや Gatekeeper によるブロックが頻発し、リリース作業が大幅に遅延します。

Xcode のインストールと Command Line Tools の設定

Xcode と同梱されているコマンドラインツールは、Swift コンパイラ・codesignnotarytool などの実行基盤です。以下の手順で最新版を取得し、使用するバージョンを明示的に指定します。

  1. 入手方法
  2. App Store → 「Xcode」検索 → ダウンロード(最新の安定版)
  3. または Apple Developer のダウンロードページからベータ版や過去バージョンも取得可能です。

  4. Command Line Tools の選択

bash
# Xcode がインストールされたら、CLI ツールを確認・設定
sudo xcode-select -s /Applications/Xcode.app/Contents/Developer
xcode-select --install # 必要に応じて再インストール

  1. バージョン確認

bash
xcodebuild -version # 例: Xcode 15.2 (15C502)
swiftc --version # Swift コンパイラのバージョンも同時に表示

ポイントxcode-select が指すディレクトリは、ビルドや notarization の際に使用される唯一の基準になります。複数台で作業する場合は必ず統一してください。

macOS SDK と Deployment Target の設定

SwiftUI は macOS 11.0 (Big Sur) 以降で利用可能ですが、最新 Xcode がデフォルトで提供する SDK(例:macOS 14 Sonoma)は新機能の検証に必須です。実際に配布したい最小バージョンは「Deployment Target」で明示します。

  • 開発マシン:macOS 13.5 以上が推奨(Xcode が正常に動作する最低要件)。
  • 対象 OSProject > Info > Deployment Target11.0 に設定すれば、Big Sur 以降の全ユーザーが利用可能です。

注意:Deployment Target はビルド時に埋め込まれるため、後から変更できません。プロジェクト開始時点で最小サポートバージョンを確定しましょう。

SwiftUI の基礎構文とプレビュー活用

SwiftUI では宣言的に UI を記述し、Xcode のライブプレビューで即座に結果を確認できます。以下は 2 カラムレイアウトの最小サンプルです。

  • ポイント@State@ObservedObject を使うとデータ駆動の UI がシンプルに実装できます。
  • プレビュー起動:エディタ左上の「Resume」ボタンで即座に macOS のウィンドウが表示され、コード変更をリアルタイムで確認可能です。

Apple Developer アカウント取得と署名設定

App Store への公開・公証には有料の Apple Developer Program が必須です。以下ではアカウント取得から Xcode での自動署名設定まで、実務で必要な手順を網羅します。

Developer Program への加入手順と公式情報

  1. 公式サイト https://developer.apple.com/programs/ にアクセスし、「Enroll」ボタンをクリック。
  2. 個人または法人のいずれかを選択し、Apple ID と支払い情報(年額 99 USD)を入力。
  3. メールで送られる承認リンクを開き、手続き完了まで待ちます。(通常数日以内)

公式ドキュメントhttps://developer.apple.com/support/enrollment/

Developer ID と Development 証明書の作成

macOS アプリの公証・配布には次の 2 種類が必要です。

証明書種別 用途 発行先
Developer ID Application App Store 以外での配布(Gatekeeper 判定を通過) Apple Developer → Certificates > Production
Mac Development 開発・テストビルド用 Apple Developer → Certificates > Development

証明書作成手順

  1. キーチェーンアクセスで「証明書アシスタント」→「認証局へ証明書要求」を選択し、メールアドレスと Common Name(例:Your Name (TeamID))を入力。CSR ファイルを保存します。
  2. Apple Developer ポータルの Certificates, Identifiers & Profiles+ → 対象証明書を選び、先ほど作成した CSR をアップロード。
  3. 発行された証明書が自動的にキーチェーンへインストールされることを確認(login キーホルダー内の Certificates カテゴリ)。

ポイント:期限切れや名前変更がある場合は、必ず新しい証明書を再発行し、古いものは削除してください。

Xcode での自動署名とチーム設定

  1. プロジェクト → ターゲット → Signing & Capabilities を開く。
  2. 「Automatically manage signing」を ON にし、取得した Apple ID のチームを選択。
  3. Provisioning Profile は Xcode が自動生成したものが表示されます(手動で管理する必要はありません)。

備考Developer ID Application を使用して直接配布する場合は「Manual signing」に切り替え、Export Options.plistmethod = developer-id を明示します。


ビルド構成・App Store Connect 登録

この章では Bundle ID の作成から Release ビルドの最適化、App Store Connect への事前登録手順までを解説します。正しい設定がないとアップロード時に「Invalid bundle identifier」や「Missing signing certificate」エラーが頻発します。

Bundle Identifier と SKU の決め方

  • Bundle ID は逆ドメイン形式(例:com.example.MyApp)で、App Store では唯一無二です。
  • SKU は内部管理用の文字列で、重複しないように日付やバージョンを組み合わせます(例:MYAPP2026A01)。

手順

  1. App Store Connect にサインイン → My Apps+New App
  2. 「Platform」欄で macOS を選択し、上記の Bundle ID と SKU を入力。
  3. 必要情報(App 名、プライマリ言語、価格帯)を設定し「Create」ボタンでアプリレコードを作成。

公式ガイドhttps://developer.apple.com/app-store-connect/

Release ビルドの構成と自動 Notarization 設定

  1. Xcode のメニューバー → Product > Scheme > Edit Scheme…
  2. ArchiveRun の両方で Build ConfigurationRelease に設定。
  3. Signing & Capabilities タブで「Automatically manage signing」を ON、かつ Notarize(Xcode 15 以降の UI)を有効化します。

注意Notarize のチェックは Xcode が内部的に xcrun notarytool を呼び出すだけでなく、ビルド完了後に自動で Staple(ステープリング)も実行します。ただし手動プロセスが必要なケース(DMG/PKG 生成後の再公証など)では別途コマンドを使用してください。

手動 Notarization の完全フロー

  • notarytoolaltool の後継で高速かつ詳細なログが取得可能です。
  • --wait オプションで非同期処理の完了まで待機し、成功・失敗を即座に判定できます。

公式コマンドリファレンスhttps://developer.apple.com/documentation/xcode/notarytool


公証(Notarization)とベータテスト/審査の流れ

macOS アプリは Gatekeeper によって未署名・未公証アプリがブロックされます。ここでは Notarization の実行方法、エラー対処、TestFlight ベータ配布、App Store 審査時のチェックポイントをまとめます。

Notarization 実行と結果確認

  • 自動:Xcode → ArchiveDistribute AppApp Store Connect を選択すると、ビルド完了後に自動で公証が走ります。
  • 手動(CI/CD 向け):

bash
# altool (旧方式) の例
xcrun altool --notarize-app \
-f MyApp.pkg \
-u your@email.com \
-p @keychain:APP_SPECIFIC_PASSWORD \
--output-format json

  • 結果取得altool は JSON を返し、notarytool は標準出力に成功/失敗を示すメッセージを出します。さらに xcrun stapler staple <path> でステープリング済みか確認できます。

ログの取得方法

  • 失敗時はエラーメッセージに Invalid signatureMissing entitlement が含まれます。公式ドキュメントの「Common Notarization Errors」ページ(リンクあり)で原因と対策を確認してください。

参考https://developer.apple.com/documentation/security/notarizing_macos_software_before_distribution#2979231

よくあるエラーと具体的な対処例

エラーメッセージ 主な原因 解決策
Invalid signature 証明書が期限切れ、またはバンドルに未署名ファイルが混在 キーチェーンで Developer ID の有効期限を確認し、codesign --deep --force -s "Developer ID Application: …" で全ファイルを再署名
Missing entitlement 必要な権限(例:com.apple.security.cs.allow-jit)がプロビジョニングに未設定 Signing & Capabilities に該当 Entitlement を追加、または --entitlements オプションで明示的に付与
File not found / Invalid bundle structure DMG/PKG にシンボリックリンクや隠しファイルが残存 ditto -c -k --sequesterRsrc --keepParent MyApp.app MyApp.zip でクリーンなアーカイブを作成、または productbuild--component オプションで正しいパス指定

TestFlight ベータテストの実施手順

macOS 向けでも TestFlight が利用可能です。ベータ版を配布して Gatekeeper 環境下での動作確認ができます。

  1. App Store Connect → 該当アプリ → TestFlight タブへ移動。
  2. 「+ New Build」→ アップロード済みの notarized ビルド(.pkg または .app)を選択。
  3. テスターメールまたは公開リンクを共有し、テスト開始。

  4. ベータビルド番号CFBundleVersion をインクリメントしておくと、TestFlight が自動で差分検知します。

  5. フィードバック取得:TestFlight アプリ内の「Send Feedback」機能を有効にし、スクリーンショットやクラッシュレポートが自動送信されるよう設定。

App Store 提出時の最終チェックリスト

項目 必要性・ポイント
App 名・サブタイトル 文字数制限とキーワードを意識し、検索エンジン最適化(ASO)を行う
スクリーンショット macOS 14 (1440×900) 推奨サイズで最低 3 枚。実際の UI と一致させる
プライバシーポリシー データ収集項目(例:Analytics、位置情報)を正確に記載
ビルド番号 (CFBundleVersion) 1.0.0 (100) の形式で管理し、次回リリース時は必ずインクリメント
App Store Connect の「Prepare for Submission」項目 すべて埋め終わったら「Submit for Review」ボタンをクリック

直接配布とリリース後のメンテナンス

App Store 以外でも macOS アプリは Developer ID 署名で安全に配布できます。また、リリース後のアップデート戦略を設計しておくことでユーザー体験が向上します。

Developer ID 署名によるエクスポート手順

xcodebuild -exportArchiveExportOptions.plist を渡すと、Developer ID 用にサインされた .pkg または .app が生成されます。以下は最小構成の例です。

  • 生成された MyApp.appDeveloper ID が付与されているので、Gatekeeper の警告は出ません。

DMG と PKG パッケージの作成・再公証手順

DMG 作成(create-dmg)

PKG 作成(productbuild)

再公証と Staple の実施

DMG/PKG は内部に署名済みバイナリを含むだけでなく、再度 Notarization する必要があります。手順は次の通りです。

  • stapler が付与するステープル情報は、ユーザーがオフラインでも公証済みであることを確認できる鍵です。
  • 必ず Staple を実行しないと、配布後に Gatekeeper が「未署名」エラーを返すケースがあります。

エンドユーザー向けインストールガイド

手順 内容
1. ダウンロード MyApp.dmg(または .pkg) を公式サイトから取得
2. DMG のマウント ダブルクリックでマウントし、表示されたウィンドウを開く
3. アプリの配置 MyApp.app アイコンを /Applications フォルダーへドラッグ
4. 初回起動時の例外設定 「開発元が未確認です」と出たら、アプリアイコンを Control キー+クリック → 「開く」
  • ステップ3で Gatekeeper が自動的にステープル情報を参照 し、警告が表示されないことを明記すると安心感が得られます。

アップデート戦略とバージョン管理

バージョニング規則

  • 形式MAJOR.MINOR.PATCH (BUILD)(例:1.2.3 (102)
  • CFBundleShortVersionStringMAJOR.MINOR.PATCH
  • CFBundleVersion → ビルド番号(整数)

Git タグと連携させる例:

自動更新フレームワークの選択

フレームワーク 特徴
Sparkle (オープンソース) macOS 向けに実績があり、XML フィードでバージョン管理。署名済みバイナリを自動ダウンロード・インストール
App Store の自動更新 App Store Connect が提供する標準機能。ユーザーは手動操作不要

CI/CD パイプライン例(GitHub Actions)

  • 上記はタグプッシュ時に自動ビルド・公証・ステープリングまで行い、完成した .pkg を GitHub のアーティファクトとして保存する例です。
  • notarytoolstapler が組み込まれているため、手作業でのミスが減ります。

まとめ

  1. 環境整備:最新 Xcode と macOS SDK をインストールし、xcode-select で CLI ツールを固定。
  2. 署名資材:Developer ID Application/Mac Development 証明書を作成し、Xcode の自動署名に紐付ける。
  3. ビルド構成:Release ビルド+自動 Notarization を有効化し、手動 notarytool/stapler フローも備えておく。
  4. 公証notarytool submit … --wait で非同期処理を待ち、必ず Staple を付与して配布パッケージを完成させる。
  5. 配布:App Store Connect(TestFlight・審査)または Developer ID 署名+DMG/PKG の直接配布のいずれかを選択し、ユーザー向けインストール手順を明示する。
  6. メンテナンス:Git タグでバージョン管理し、Sparkle や App Store 自動更新で継続的にアップデートできる体制を構築。

これらの手順とベストプラクティスを守れば、SwiftUI で作成した macOS アプリは 安全かつスムーズに公証・配布 が可能です。開発からリリースまで一貫したフローを自動化すれば、将来的なバージョンアップや新しい Xcode/macOS が登場しても、同様のプロセスで対応できる柔軟性が得られます。

スポンサードリンク

-SwiftUI