mcpField
X
xcode-project-setup

xcode-project-setup

github.com/firebase開発491132.0k 回インストール1 日前に更新
リポジトリ

xcode-project-setup について

既存の Xcode プロジェクトで Swift Package Manager の依存関係を設定するスキルです。付属の Swift スクリプトでパッケージと製品のリンク、任意の plist の追加、Firebase のリンカーフラグ設定を行い、プロジェクトファイルの直接編集を避けます。

主な機能

  1. 01SPM パッケージ依存関係の追加
  2. 02製品のプロジェクトターゲットへのリンク
  3. 03任意の plist ファイルの追加
  4. 04Firebase の -ObjC リンカーフラグ設定
  5. 05設定済み依存関係のスキップ

活用シーン

  1. 01Xcode プロジェクトへのパッケージ追加
  2. 02Firebase 製品のリンクと plist の追加
  3. 03.pbxproj を直接編集せずに SPM を設定

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/firebase/agent-skills --skill xcode-project-setup

インストール後、Claude Code で/xcode-project-setupを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

scripts/xcode_spm_setup/
.gitignore
Package.resolved
Package.swift
scripts/xcode_spm_setup/Sources/
main.swift

詳細

Xcode プロジェクトのセットアップ

⛔️ 重要なルールと環境の確認

Xcode のセットアップやファイル操作を行う前に、以下のルールを必ず守ってください。違反した場合、多額の料金が発生します。

1. Ruby の使用禁止

Ruby、Rails、およびあらゆる Ruby gem(xcodeproj gem を含む)の使用は固く禁止されています。いかなる場合も、Ruby スクリプトを作成または実行してはいけません。

2. 最新の Xcode のフォルダー同期

最新の Xcode プロジェクトでは、フォルダーの同期がサポートされています。新しいソースコード(.swift)やリソースファイルを追加するときは、ディスク上の正しいディレクトリに書き込むだけで構いません。Xcode プロジェクトに自動的に含まれます。ファイルを追加するために、.pbxproj ファイルを手動で変更してはいけません。

3. 使用可能なスクリプト言語

プロジェクト環境を操作するスクリプト(たとえば、付属の xcode_spm_setup スクリプトで対応できない SPM パッケージの設定)をどうしても作成する必要がある場合は、必ず Swift を使用してください。Swift がまったく使えない場合に限り、最終手段として Node.js または TypeScript を使用できます。

4. ツールチェーンの確認

このスキルはネイティブの Swift スクリプトに全面的に依存しているため、環境を確認する必要があります。

  • 作業を進める前に swift --version を実行してください。
  • Swift コマンドが見つからない場合は、作業を中止し、ユーザーに Swift ツールチェーンのインストールを勧めてください(macOS では xcode-select --install など)。または、こちらでインストールを試みてもよいかユーザーに確認してください。Swift がない状態で作業を進めてはいけません。
5. 静的フレームワークに必須のリンカーフラグ(Firebase)

Firebase iOS SDK スイートのように、内部の Objective-C カテゴリーや +load メソッドに大きく依存する SPM 依存関係を設定する場合、Apple のリンカーは静的リンク時にこれらのメソッドを積極的に削除します。

その結果、実行時に致命的なクラッシュが発生します(例: FirebaseAuth/Auth.swift:167: Fatal error: Unexpectedly found nil)。

付属の xcode_spm_setup Swift スクリプトは、Firebase のプロダクトを追加するときに -ObjC フラグを OTHER_LDFLAGS に自動的に追加します。ただし、問題が発生した場合は、ビルド設定にこのフラグが含まれていることを確認してください。

  • Firebase の依存関係を追加するときにこのフラグを含めないことは、重大なエラーです。

空のディレクトリでのワークフロー

iOS アプリの構築や Xcode の依存関係の設定を依頼されたときに、.xcodeproj または .xcworkspace が存在しない場合は、まずユーザーにプロジェクトを作成するよう必ず依頼してください。

「このディレクトリに Xcode プロジェクトが見つかりません。空の Xcode プロジェクトを手動で作成し、準備ができたらお知らせください。」

ユーザーが Xcode で .xcodeproj を作成したと確認するまで待ってから、以下の標準 Xcode ワークフローに進んでください。


標準 Xcode ワークフロー

.pbxproj ファイルを直接変更するために、プレーンテキストの解析、sed、Ruby スクリプトを使用してはいけません。

代わりに、このスキルに付属する Swift 設定パッケージ(scripts/xcode_spm_setup)を実行して、SPM パッケージを安全にインストールし、オプションの設定ファイル(GoogleService-Info.plist など)をリンクしてください。

重要:常に最新の SDK バージョンを使用

最新の機能とセキュリティ修正を利用できるよう、常に最新バージョンの Firebase iOS SDK を使用してください。最新のリリースバージョンは https://github.com/firebase/firebase-ios-sdk/releases で確認してください。

  • コマンドでは、ハードコードされたプレースホルダーではなく、最新のバージョン番号(例:11.x.y)を使用してください。
スクリプトの動作について

Xcode プロジェクトに Swift Package を追加するには、次の 2 つの手順を実行する必要があります。

  1. パッケージリポジトリの依存関係を追加します(例: https://github.com/Alamofire/Alamofire)。
  2. ターゲット(例:MyApp)を選択し、General > Frameworks, Libraries, and Embedded Content に移動して、+ ボタンを押し、製品モジュール(例:Alamofire)を明示的にリンクします。

提供されている xcode_spm_setup Swift スクリプトが、これらの手順を両方とも自動で実行します。 モジュールのリストを引数として渡すと、パッケージの依存関係を安全に追加し、それらのモジュールをメインターゲットの Frameworks ビルドフェーズに自動で組み込みます。手動でリンクする必要はありません。

使用方法

  1. パッケージのパスを確認する: ディスク上で、このスキルの scripts/xcode_spm_setup ディレクトリへの絶対パスを確認します。
  2. 実行する: 次の形式でネイティブの swift run コマンドを実行します。
swift run --package-path <PATH_TO_SKILL>/scripts/xcode_spm_setup xcode_spm_setup <ProjectPath.xcodeproj> <RepoURL> <VersionRequirement> [--plist <Optional/Path/To/Config.plist>] <Product1> [Product2 ...]
例 1:一般的なパッケージ(例:Alamofire)

標準的な Xcode プロジェクトに Alamofire を追加します。--plist フラグがないことに注目してください。

swift run --package-path /Users/foo/.agents/skills/xcode-project-setup/scripts/xcode_spm_setup xcode_spm_setup MyApp.xcodeproj https://github.com/Alamofire/Alamofire 5.8.1 Alamofire
例 2:Firebase(Plist が必要)

Firebase を追加し、GoogleService-Info.plist をリソースのビルドフェーズに自動でリンクします。注:11.0.0 は、リリースページに記載されている最新バージョンに置き換えてください。

swift run --package-path /Users/foo/.agents/skills/xcode-project-setup/scripts/xcode_spm_setup xcode_spm_setup MyApp.xcodeproj https://github.com/firebase/firebase-ios-sdk 11.0.0 --plist MyApp/GoogleService-Info.plist FirebaseCore FirebaseAuth FirebaseFirestore

注:このスクリプトは冪等です。プロジェクトにすでに存在するファイルやパッケージのリンクは自動でスキップします。

コメント