🛠️ MacosSpmアプリPackaging
Xcodeを使わずに、SwiftPM(Swift Package Manager)
📺 まず動画で見る(YouTube)
▶ 【衝撃】最強のAIエージェント「Claude Code」の最新機能・使い方・プログラミングをAIで効率化する超実践術を解説! ↗
※ jpskill.com 編集部が参考用に選んだ動画です。動画の内容と Skill の挙動は厳密には一致しないことがあります。
📜 元の英語説明(参考)
Scaffold, build, sign, and package SwiftPM macOS apps without Xcode projects.
🇯🇵 日本人クリエイター向け解説
Xcodeを使わずに、SwiftPM(Swift Package Manager)
※ jpskill.com 編集部が日本のビジネス現場向けに補足した解説です。Skill本体の挙動とは独立した参考情報です。
下記のコマンドをコピーしてターミナル(Mac/Linux)または PowerShell(Windows)に貼り付けてください。 ダウンロード → 解凍 → 配置まで全自動。
mkdir -p ~/.claude/skills && cd ~/.claude/skills && curl -L -o macos-spm-app-packaging.zip https://jpskill.com/download/3120.zip && unzip -o macos-spm-app-packaging.zip && rm macos-spm-app-packaging.zip
$d = "$env:USERPROFILE\.claude\skills"; ni -Force -ItemType Directory $d | Out-Null; iwr https://jpskill.com/download/3120.zip -OutFile "$d\macos-spm-app-packaging.zip"; Expand-Archive "$d\macos-spm-app-packaging.zip" -DestinationPath $d -Force; ri "$d\macos-spm-app-packaging.zip"
完了後、Claude Code を再起動 → 普通に「動画プロンプト作って」のように話しかけるだけで自動発動します。
💾 手動でダウンロードしたい(コマンドが難しい人向け)
- 1. 下の青いボタンを押して
macos-spm-app-packaging.zipをダウンロード - 2. ZIPファイルをダブルクリックで解凍 →
macos-spm-app-packagingフォルダができる - 3. そのフォルダを
C:\Users\あなたの名前\.claude\skills\(Win)または~/.claude/skills/(Mac)へ移動 - 4. Claude Code を再起動
⚠️ ダウンロード・利用は自己責任でお願いします。当サイトは内容・動作・安全性について責任を負いません。
🎯 このSkillでできること
下記の説明文を読むと、このSkillがあなたに何をしてくれるかが分かります。Claudeにこの分野の依頼をすると、自動で発動します。
📦 インストール方法 (3ステップ)
- 1. 上の「ダウンロード」ボタンを押して .skill ファイルを取得
- 2. ファイル名の拡張子を .skill から .zip に変えて展開(macは自動展開可)
- 3. 展開してできたフォルダを、ホームフォルダの
.claude/skills/に置く- · macOS / Linux:
~/.claude/skills/ - · Windows:
%USERPROFILE%\.claude\skills\
- · macOS / Linux:
Claude Code を再起動すれば完了。「このSkillを使って…」と話しかけなくても、関連する依頼で自動的に呼び出されます。
詳しい使い方ガイドを見る →- 最終更新
- 2026-05-17
- 取得日時
- 2026-05-17
- 同梱ファイル
- 16
💬 こう話しかけるだけ — サンプルプロンプト
- › Macos Spm App Packaging を使って、最小構成のサンプルコードを示して
- › Macos Spm App Packaging の主な使い方と注意点を教えて
- › Macos Spm App Packaging を既存プロジェクトに組み込む方法を教えて
これをClaude Code に貼るだけで、このSkillが自動発動します。
📖 Skill本文(日本語訳)
※ 原文(英語/中国語)を Gemini で日本語化したものです。Claude 自身は原文を読みます。誤訳がある場合は原文をご確認ください。
macOS SwiftPMアプリのパッケージング (Xcodeなし)
概要
SwiftPM macOSアプリの完全なフォルダをブートストラップし、Xcodeなしでビルド、パッケージング、実行します。スターターレイアウトには assets/templates/bootstrap/ を、パッケージングとリリースの詳細には references/packaging.md と references/release.md を使用してください。
使用する場面
- ユーザーがXcodeプロジェクトに依存しないSwiftPMベースのmacOSアプリを必要とする場合。
- SwiftPMアプリのパッケージング、署名、公証、またはAppcastのガイダンスが必要な場合。
2段階のワークフロー
-
プロジェクトフォルダをブートストラップする
assets/templates/bootstrap/を新しいリポジトリにコピーします。Package.swift、Sources/MyApp/、およびversion.env内のMyAppをリネームします。APP_NAME、BUNDLE_ID、およびバージョンをカスタマイズします。
-
ブートストラップされたアプリをビルド、パッケージング、実行する
assets/templates/からスクリプトをリポジトリにコピーします (例:Scripts/)。- ビルド/テスト:
swift buildおよびswift test。 - パッケージ:
Scripts/package_app.sh。 - 実行:
Scripts/compile_and_run.sh(推奨) またはScripts/launch.sh。 - リリース (オプション):
Scripts/sign-and-notarize.shおよびScripts/make_appcast.sh。 - タグ付け + GitHubリリース (オプション): gitタグを作成し、zip/AppcastをGitHubリリースにアップロードして公開します。
最小限のエンドツーエンドの例
ブートストラップから実行中のアプリまでの最短パス:
# 1. スケルトンをコピーしてリネームする
cp -R assets/templates/bootstrap/ ~/Projects/MyApp
cd ~/Projects/MyApp
sed -i '' 's/MyApp/HelloApp/g' Package.swift version.env
# 2. スクリプトをコピーする
cp assets/templates/package_app.sh Scripts/
cp assets/templates/compile_and_run.sh Scripts/
chmod +x Scripts/*.sh
# 3. ビルドして起動する
swift build
Scripts/compile_and_run.sh
検証チェックポイント
次の段階に進む前に、主要なステップの後にこれらを実行して、早期に失敗を検出してください。
パッケージング後 (Scripts/package_app.sh):
# .appバンドルの構造が損なわれていないことを確認する
ls -R build/HelloApp.app/Contents
# バイナリが存在し、実行可能であることを確認する
file build/HelloApp.app/Contents/MacOS/HelloApp
署名後 (Scripts/sign-and-notarize.sh またはアドホック開発署名):
# 署名とエンタイトルメントを検査する
codesign -dv --verbose=4 build/HelloApp.app
# バンドルがローカルでGatekeeperチェックに合格することを確認する
spctl --assess --type execute --verbose build/HelloApp.app
公証とステープリング後:
# ステープルチケットが添付されていることを確認する
stapler validate build/HelloApp.app
# 公証が認識されていることを確認するためにGatekeeperを再実行する
spctl --assess --type execute --verbose build/HelloApp.app
一般的な公証の失敗
| 症状 | 考えられる原因 | 回復 |
|---|---|---|
The software asset has already been uploaded |
同じバージョンに対する重複した提出 | version.env の BUILD_NUMBER を増やして再パッケージングします。 |
Package Invalid: Invalid Code Signing Entitlements |
.entitlements ファイルのエンタイトルメントがプロビジョニングと一致しない |
Appleの許可されたセットに対してエンタイトルメントを監査し、サポートされていないキーを削除します。 |
The executable does not have the hardened runtime enabled |
codesign 呼び出しで --options runtime フラグが欠落している |
sign-and-notarize.sh を編集して、すべての codesign 呼び出しに --options runtime を追加します。 |
| 公証がハングする / ステータスメールが届かない | xcrun notarytool のネットワークまたは認証情報の問題 |
xcrun notarytool history を実行してステータスを確認します。期限切れの場合はApp Store Connect APIキーを再エクスポートします。 |
stapler validate が公証成功後に失敗する |
チケットがまだ伝播されていない | 約60秒待ってから、xcrun stapler staple を再実行します。 |
テンプレート
assets/templates/package_app.sh: バイナリをビルドし、.appバンドルを作成し、リソースをコピーし、署名します。assets/templates/compile_and_run.sh: 実行中のアプリを終了させ、パッケージングし、起動する開発ループ。assets/templates/build_icon.sh: Icon Composerファイルから.icnsを生成します (Xcodeのインストールが必要です)。assets/templates/sign-and-notarize.sh: リリースビルドを公証し、ステープルし、zipします。assets/templates/make_appcast.sh: アップデート用のSparkle Appcastエントリを生成します。assets/templates/setup_dev_signing.sh: 安定した開発コード署名IDを作成します。assets/templates/launch.sh: パッケージ化された.appのシンプルなランチャー。assets/templates/version.env: パッケージングスクリプトによって使用されるバージョンファイルの例。assets/templates/bootstrap/: 最小限のSwiftPM macOSアプリのスケルトン (Package.swift, Sources/, version.env)。
注意事項
- エンタイトルメントと署名設定は明示的に保持し、再実装するのではなくテンプレートスクリプトを編集してください。
- アップデートにSparkleを使用しない場合は、Sparkleのステップを削除してください。
- Sparkleはバンドルビルド番号 (
CFBundleVersion) に依存するため、version.envのBUILD_NUMBERはアップデートごとに増加する必要があります。 - メニューバーアプリの場合、パッケージング時に
MENU_BAR_APP=1を設定して、Info.plistにLSUIElementを出力します。
制限事項
- このスキルは、タスクが上記の範囲と明確に一致する場合にのみ使用してください。
- 出力を環境固有の検証、テスト、または専門家によるレビューの代わりとして扱わないでください。
- 必要な入力、権限、安全境界、または成功基準が不足している場合は、停止して説明を求めてください。
📜 原文 SKILL.md(Claudeが読む英語/中国語)を展開
macOS SwiftPM App Packaging (No Xcode)
Overview
Bootstrap a complete SwiftPM macOS app folder, then build, package, and run it without Xcode. Use assets/templates/bootstrap/ for the starter layout and references/packaging.md + references/release.md for packaging and release details.
When to Use
- When the user needs a SwiftPM-based macOS app without relying on an Xcode project.
- When you need packaging, signing, notarization, or appcast guidance for a SwiftPM app.
Two-Step Workflow
-
Bootstrap the project folder
- Copy
assets/templates/bootstrap/into a new repo. - Rename
MyAppinPackage.swift,Sources/MyApp/, andversion.env. - Customize
APP_NAME,BUNDLE_ID, and versions.
- Copy
-
Build, package, and run the bootstrapped app
- Copy scripts from
assets/templates/into your repo (for example,Scripts/). - Build/tests:
swift buildandswift test. - Package:
Scripts/package_app.sh. - Run:
Scripts/compile_and_run.sh(preferred) orScripts/launch.sh. - Release (optional):
Scripts/sign-and-notarize.shandScripts/make_appcast.sh. - Tag + GitHub release (optional): create a git tag, upload the zip/appcast to the GitHub release, and publish.
- Copy scripts from
Minimum End-to-End Example
Shortest path from bootstrap to a running app:
# 1. Copy and rename the skeleton
cp -R assets/templates/bootstrap/ ~/Projects/MyApp
cd ~/Projects/MyApp
sed -i '' 's/MyApp/HelloApp/g' Package.swift version.env
# 2. Copy scripts
cp assets/templates/package_app.sh Scripts/
cp assets/templates/compile_and_run.sh Scripts/
chmod +x Scripts/*.sh
# 3. Build and launch
swift build
Scripts/compile_and_run.sh
Validation Checkpoints
Run these after key steps to catch failures early before proceeding to the next stage.
After packaging (Scripts/package_app.sh):
# Confirm .app bundle structure is intact
ls -R build/HelloApp.app/Contents
# Check that the binary is present and executable
file build/HelloApp.app/Contents/MacOS/HelloApp
After signing (Scripts/sign-and-notarize.sh or ad-hoc dev signing):
# Inspect signature and entitlements
codesign -dv --verbose=4 build/HelloApp.app
# Verify the bundle passes Gatekeeper checks locally
spctl --assess --type execute --verbose build/HelloApp.app
After notarization and stapling:
# Confirm the staple ticket is attached
stapler validate build/HelloApp.app
# Re-run Gatekeeper to confirm notarization is recognised
spctl --assess --type execute --verbose build/HelloApp.app
Common Notarization Failures
| Symptom | Likely Cause | Recovery |
|---|---|---|
The software asset has already been uploaded |
Duplicate submission for same version | Bump BUILD_NUMBER in version.env and repackage. |
Package Invalid: Invalid Code Signing Entitlements |
Entitlements in .entitlements file don't match provisioning |
Audit entitlements against Apple's allowed set; remove unsupported keys. |
The executable does not have the hardened runtime enabled |
Missing --options runtime flag in codesign invocation |
Edit sign-and-notarize.sh to add --options runtime to all codesign calls. |
| Notarization hangs / no status email | xcrun notarytool network or credential issue |
Run xcrun notarytool history to check status; re-export App Store Connect API key if expired. |
stapler validate fails after successful notarization |
Ticket not yet propagated | Wait ~60 s, then re-run xcrun stapler staple. |
Templates
assets/templates/package_app.sh: Build binaries, create the .app bundle, copy resources, sign.assets/templates/compile_and_run.sh: Dev loop to kill running app, package, launch.assets/templates/build_icon.sh: Generate .icns from an Icon Composer file (requires Xcode install).assets/templates/sign-and-notarize.sh: Notarize, staple, and zip a release build.assets/templates/make_appcast.sh: Generate Sparkle appcast entries for updates.assets/templates/setup_dev_signing.sh: Create a stable dev code-signing identity.assets/templates/launch.sh: Simple launcher for a packaged .app.assets/templates/version.env: Example version file consumed by packaging scripts.assets/templates/bootstrap/: Minimal SwiftPM macOS app skeleton (Package.swift, Sources/, version.env).
Notes
- Keep entitlements and signing configuration explicit; edit the template scripts instead of reimplementing.
- Remove Sparkle steps if you do not use Sparkle for updates.
- Sparkle relies on the bundle build number (
CFBundleVersion), soBUILD_NUMBERinversion.envmust increase for each update. - For menu bar apps, set
MENU_BAR_APP=1when packaging to emitLSUIElementin Info.plist.
Limitations
- Use this skill only when the task clearly matches the scope described above.
- Do not treat the output as a substitute for environment-specific validation, testing, or expert review.
- Stop and ask for clarification if required inputs, permissions, safety boundaries, or success criteria are missing.
同梱ファイル
※ ZIPに含まれるファイル一覧。`SKILL.md` 本体に加え、参考資料・サンプル・スクリプトが入っている場合があります。
- 📄 SKILL.md (5,256 bytes)
- 📎 assets/templates/bootstrap/Package.swift (334 bytes)
- 📎 assets/templates/bootstrap/Sources/MyApp/main.swift (173 bytes)
- 📎 assets/templates/bootstrap/Sources/MyApp/Resources/.keep (0 bytes)
- 📎 assets/templates/bootstrap/version.env (39 bytes)
- 📎 assets/templates/build_icon.sh (1,518 bytes)
- 📎 assets/templates/compile_and_run.sh (1,855 bytes)
- 📎 assets/templates/launch.sh (767 bytes)
- 📎 assets/templates/make_appcast.sh (2,107 bytes)
- 📎 assets/templates/package_app.sh (6,119 bytes)
- 📎 assets/templates/setup_dev_signing.sh (1,361 bytes)
- 📎 assets/templates/sign-and-notarize.sh (1,726 bytes)
- 📎 assets/templates/version.env (39 bytes)
- 📎 references/packaging.md (783 bytes)
- 📎 references/release.md (1,251 bytes)
- 📎 references/scaffold.md (1,663 bytes)