Contents
環境準備と Xcode のインストール
macOS で SwiftUI を用いたデスクトップアプリを作成する第一歩は、開発環境となる Xcode を正しく導入することです。ここでは App Store からの取得手順と、Apple ID を使って開発者チームを有効化する流れを解説します。Xcode のバージョンは執筆時点(2024 年)で最新が Xcode 15 ですが、将来的にリリースされる新バージョンでも同様の手順が適用できます。
App Store から Xcode をダウンロードする手順
App Store に掲載されている公式ビルドを利用すれば、署名やアップデート管理の心配は不要です。以下の手順でインストールしてください。
- App Store アプリを起動し、検索バーに「Xcode」と入力する。
- 表示された Xcode のページで 入手 → インストール をクリックするとダウンロードが開始される。
- ダウンロードとインストールが完了したら、Launchpad から Xcode を起動し、初回セットアップを行う。
参考: 【SwiftUI】Mac 向けアプリを作ろう - チグサウェブ(リンク)
Apple ID でサインインし開発者チームを有効化
Xcode の各機能は、Apple ID に紐付いた Apple Developer Program のメンバーシップが必要です。以下の手順でアカウントを設定しましょう。
- Xcode を起動し、メニューバーの Xcode > Settings(Preferences) → Accounts タブを開く。
- 左下の「+」ボタンから Apple ID を選択し、既存の Apple ID とパスワードでサインインする。
- サインイン後に表示されるチーム一覧に自分が加入している Apple Developer Program があるか確認する。未加入の場合は、Apple Developer の公式サイト から登録してください。
SwiftUI macOS アプリの新規プロジェクト作成
SwiftUI は macOS 10.15(Catalina)以降を対象に提供されており、Xcode がサポートする最新バージョンであれば自動的に対応可能です。このセクションでは、最低 OS バージョンの確認方法とテンプレートからプロジェクトを作成する手順をご紹介します。
対応 macOS バージョンと SwiftUI の概要
SwiftUI は macOS 10.15 以降で利用でき、macOS 11(Big Sur)以上では新しいコンポーネントや API が拡張されます。Xcode の「SwiftUI」テンプレートを選択すると、対象 OS バージョンが @available(macOS 10.15, *) と自動で付与されるため、ビルドエラーの心配は少なくなります。
テンプレート選択とプロジェクト設定
以下の手順で最小構成の macOS アプリを生成できます。途中で入力した情報は後続の署名や App Store Connect の登録に必ず使用します。
- Xcode のメイン画面で Create a new Xcode project をクリックする。
- 左側パネルの macOS タブ → App(SwiftUI) を選び、Next を押す。
- 「Product Name」「Organization Identifier」などを入力し、Interface が SwiftUI であることを確認して Next → 保存先を指定する。
作成後はプロジェクトの General > Identity セクションに Bundle Identifier(例: com.example.MyApp)が自動生成されます。この ID は App Store Connect と Notarization の両方で必須です。
コード署名とプロビジョニングの基本設定
コード署名は macOS アプリを配布する際の根幹となります。ここでは「自動管理」と「手動管理」の違いを整理し、冗長になりがちな説明を一本化してまとめます。
自動管理による署名設定(推奨)
Xcode の Signing & Capabilities タブで Automatically manage signing を有効にすると、次の作業が自動で行われます。
- Apple Development 証明書と macOS App Distribution プロビジョニングプロファイルの生成
- 選択したチーム(Apple Developer Program)に Bundle Identifier を紐付ける
- ビルド時に必要な証明書の有効期限やプロファイルの更新を自動チェック
この方式はほとんどの開発フローで問題なく機能し、手作業によるミスが大幅に減少します。ビルド警告が出た場合は Preferences > Accounts で証明書の状態を確認してください。
手動管理が必要なケースと設定手順
社内限定配布や特定の権限設定が必要な場合は、プロビジョニングプロファイルを自分で作成します。以下は最小構成の手順です。
- Apple Developer ポータルの Certificates, Identifiers & Profiles にアクセスし、Identifiers で対象 Bundle ID を作成する。
- Profiles → macOS App Distribution を選び、先ほど作った App ID とチームを指定してプロファイルを生成し、
.mobileprovisionファイルをダウンロードする。 - Xcode の Signing & Capabilities で自動管理のチェックを外し、Provisioning Profile ドロップダウンから先ほど取得したプロファイルを選択する。
手動設定は自動管理に比べて更新忘れが起きやすいため、変更時には必ず有効期限と Bundle ID の一致を確認してください。
App Store Connect への事前登録とアップロード手順
App Store に公開するには、メタデータの入力からバイナリの提出まで一連の作業が必要です。ここでは UI 操作中心に流れを整理し、各ステップのポイントを解説します。
アプリ情報(名前・カテゴリ・スクリーンショット等)の登録
App Store Connect の My Apps から新規アプリを作成し、以下項目を入力します。
- App Name:ユーザーに表示される正式名称
- Primary Language、Bundle ID(先ほど設定したもの)
- SKU:内部管理用の一意な文字列
- Category:macOS 向けは
Productivity > Desktop Utilitiesなどが一般的
スクリーンショットは macOS 13+ の解像度(例: 1440 × 900)で 5 枚以上用意し、Upload ボタンで添付します。
Xcode Organizer を使った Archive → Validate → Distribute
- Product > Archive を実行するとビルドが完了し、Organizer が自動で開きます。
- アーカイブを選択し Validate App をクリック。Apple の審査用チェックが走り、問題なければ緑のチェックマークが表示されます。
- 次に Distribute App → App Store Connect → Upload を選び、指示に従ってアップロードを完了させます。
アップロード後は App Store Connect の Activity タブで Processing → Waiting for Review のステータスを確認できます。
非 App Store 配布向け Notarization とパッケージ作成
App Store 以外で配布する macOS アプリは、Apple の Notary Service による notarization が必須です。以下の手順で安全に配布用バイナリを作成します。
Notary Service への送信(Xcode 経由)
- Product > Archive で生成した
.xcarchiveを選び、Distribute App → Developer ID → Notarize を実行するだけで Xcode がnotarytoolを呼び出し、Apple に送信します。 - 手動で CLI を使用したい場合は次のコマンドを参考にしてください(App‑Specific Password が必要です)。
|
1 2 3 4 5 6 |
xcrun notarytool submit MyApp.app \ --apple-id <APPLE_ID> \ --password <APP_SPECIFIC_PASSWORD> \ --team-id <TEAM_ID> \ --wait |
notarize 完了後のスタンプ付与と配布パッケージ作成
- stapler ツールで notarization の結果をバイナリに埋め込む。
|
1 2 |
xcrun stapler staple MyApp.app |
- 配布形式は
.pkgか.dmgを選択します。.pkgは次のコマンドで作成可能です。
|
1 2 3 4 |
# パッケージング例 pkgbuild --install-location /Applications --component MyApp.app MyApp.pkg productbuild --sign "Developer ID Installer: <Your Name>" MyApp.pkg MyAppSigned.pkg |
.dmgが必要な場合はcreate-dmg等のサードパーティツールでイメージを作成し、同様にstaplerでスタンプを付与します。
配布時には SHA‑256 ハッシュ値を公式サイトや社内ポータルに掲載し、利用者がダウンロードファイルの改ざん有無を検証できるようにすると安全性が向上します。
リリース後の管理・アップデートとトラブルシューティング
アプリ公開後は審査ステータスやエラー対応、バージョン管理が重要です。ここでは実務で頻出する問題とその対策をまとめます。
審査プロセスのベストプラクティス
- Build に紐付くリリースノートは具体的に記載し、機能追加や既知不具合への対応方針を書き添える。
- ステータスは App Store Connect の Activity タブでリアルタイムに確認でき、遅延が予想される場合は「Contact Us」から問い合わせるとよいです。
よくあるエラー例と対策
| エラー | 主な原因 | 推奨対策 |
|---|---|---|
| コード署名不一致 | 証明書・プロビジョニングプロファイルが Bundle ID と合致していない | Signing & Capabilities の自動管理を再有効化、または手動プロファイルの Bundle ID を再確認 |
| Bundle ID 重複 | 同一 Apple Developer アカウント内に同名 App ID が既に存在 | App Store Connect の My Apps で重複アプリを削除、もしくはユニークな Bundle ID に変更 |
| Notarization 失敗 | .app 内に未署名バイナリや不正ファイルが残っている | xcrun altool --notarize-info のログで詳細を確認し、問題のファイルを除去または再署名 |
App Store Connect API v2 による自動化
CI/CD パイプラインに組み込めば手作業を大幅に削減できます。主な流れは次の通りです。
- API キー を作成し、
Issuer IDとKey IDを取得する。 - Python の
requestsライブラリ等で以下エンドポイントを呼び出す。
|
1 2 3 4 5 6 7 8 9 10 11 12 |
import requests, jwt, time # JWT 作成(省略) → token headers = {"Authorization": f"Bearer {token}"} # 現在のバージョン取得例 resp = requests.get( "https://api.appstoreconnect.apple.com/v1/apps/{app_id}/appStoreVersions", headers=headers, ) print(resp.json()) |
- 新規ビルド登録は
POST /v1/appStoreVersionsに JSON でversionString,releaseType等を送信すれば完了します。Fastlane のapp_store_connect_api_keyと組み合わせると、GitHub Actions や Bitrise からのデプロイがシームレスに行えます。
まとめ
- Xcode を App Store から取得し、Apple ID で開発者チームを有効化すれば環境構築は完了です。
- SwiftUI は macOS 10.15 以降で利用可能であり、テンプレート選択だけで基本的な雛形が生成されます。
- Signing & Capabilities の自動管理を推奨しつつ、必要に応じて手動プロビジョニングも設定できる柔軟性があります。
- App Store Connect へのメタデータ登録 → Xcode Organizer で Archive → Validate → Distribute の流れで審査提出が完了します。
- 非 App Store 配布は Notarization が必須。
notarytoolとstaplerを使って .pkg/.dmg に仕上げ、ハッシュ値を公開すると安全性が高まります。 - リリース後は審査ステータス管理と API v2 を活用した自動バージョン更新で運用コストを削減し、署名エラーや Bundle ID 重複といった典型的なトラブルに備えましょう。
以上の手順を実践すれば、SwiftUI macOS アプリの開発から配布までをスムーズに進められ、安心してリリースできるようになります。