結論:Swift 6.4のSwiftPMでSPDXまたはCycloneDXのSBOMを生成できます。実際の構築依存を記録したい場合は、構築時に生成してmacOS CIの成果物に含める方式を先に検討してください。
適用条件:パッケージの依存関係だけを記録するなら、独立した生成コマンドも選択肢です。SBOMはコンポーネントの一覧であり、脆弱性スキャンやライセンス適合の証明ではありません。
Swiftパッケージの保守担当者:パッケージや製品の依存一覧を生成・公開したい方。
AppleプラットフォームのCI担当者:生成処理と成果物の保存をmacOS CIに組み込みたい方。
セキュリティ・リリース担当者:SBOMの形式、対象範囲、引き渡し条件を確認したい方。
最終更新日:2026年10月26日。Swift 6.4の公開日は2026年9月15日、Swift 6.4.1の公開日は2026年10月13日です。Swift 6.4のリリースノートとSwift 6.4.1の告知を確認しています。
マイルストーン1:SBOMの対象範囲を決める
Swift 6.4 SwiftPMのSBOM生成を始める前に、「何の依存関係を、どの単位で説明するか」を決めます。パッケージ全体の依存関係を残すのか、特定の製品に絞るのか、今回の構築で実際に使われた依存関係を示すのかで、選ぶ生成経路が変わります。
SBOMはソフトウェアコンポーネントを記述するための資料です。SPDXとCycloneDXはいずれも標準化された形式ですが、形式を選んだだけで脆弱性の有無やライセンス上の適合性が判定されるわけではありません。形式の仕様はSPDXの仕様一覧とCycloneDXの仕様概要で確認できます。
対象を決めたら、用途も記録しておきます。リリースに添付する、社内の依存追跡に使う、監査の入力資料にするなど、受け取り側が求める情報と保管方法を先に揃えると、後から範囲を誤解しにくくなります。
マイルストーン2:CIのツールチェーンと依存状態を揃える
最初に、CIジョブが使うSwiftの版と実行環境を確認します。Swift 6.4の機能として紹介されているため、実際のジョブで使うツールチェーンが対応版かどうかを確かめてください。macOS向けの導入とツールチェーンについては、Swift公式のmacOSインストール案内を参照します。
次に、パッケージのルートで依存解決が再現できるかを確認します。CIが別の作業ディレクトリで実行されていたり、依存解決ファイルがコミット済みの状態と食い違っていたりすると、生成されたSBOMとリリース対象の対応を追跡しにくくなります。構築に使った依存解決ファイルとジョブ識別情報は、SBOMと同じ成果物のまとまりに含めてください。
依存関係の指定方法やマニフェストの記述は、Swift Package ManagerのPackageDescription文書で確認できます。依存解決に失敗した状態でSBOMだけを生成して先へ進むのではなく、まずCI上で意図したパッケージ状態が再現されることを確認します。
マイルストーン3:構築時生成と独立コマンドを選ぶ
SwiftPMのSBOM生成には、構築コマンドに組み込む方式と、パッケージ用の独立コマンドを実行する方式があります。どちらが適切かは「何の依存グラフを記録するか」で判断します。SE-0509では、構築コマンドはSwiftBuildの依存グラフを利用し、独立コマンドはパッケージの依存グラフを利用する違いが説明されています。
- 構築時に生成する方式:構築にひもづいた依存情報が必要な場合に検討します。ビルドコマンドとSBOMを同じCIジョブで扱えるため、構築結果との関連付けを明確にしやすくなります。
- 独立コマンドで生成する方式:パッケージの依存グラフを記録したい場合に検討します。ビルドの実行とは別に生成するため、構築時のグラフをそのまま示す必要がある用途とは区別してください。
コマンドの正式な名前、形式指定、出力先、組み合わせ可能なオプションはSwiftの版によって確認が必要です。実行前にSwiftPMのSwiftBuildコマンド文書とSE-0509を照合し、使用中のツールチェーンで有効な指定を確認します。SPDXかCycloneDXかは、受け取るシステムや社内の運用要件に合わせて選びます。
条件付き依存は、どのグラフを使うか、どの構築条件で生成するかによって見え方が変わる可能性があります。パッケージ全体の一覧が、特定のOSや構築設定で実際に選ばれた依存関係と完全に一致すると決めつけず、生成物を依存解決結果と照合してください。
マイルストーン4:生成と成果物の保存をCIに組み込む
以下の手順で、生成から保管までを一つのCIジョブとして組み立てます。実際のフラグや出力先は、対象のSwiftPM文書とツールチェーンで確認した値を使います。
- 環境を記録する:CIログまたはビルドメタデータに、Swiftの版、実行したジョブの識別情報、パッケージの作業ディレクトリを残します。
- 依存解決を確認する:リポジトリの依存解決状態を確認し、想定したプロジェクト構成で構築できることを確かめます。
- 生成方式と形式を指定する:構築依存が必要なら構築時生成、パッケージ依存が目的なら独立コマンドを選び、SPDXまたはCycloneDXを指定します。
- 出力先を成果物対象に含める:生成ファイルをCIの成果物収集対象に設定します。ビルドの一時領域に置く場合も、ジョブ終了時に消去されない保存手順を用意します。
- 生成の成否を確認する:ファイルの存在と形式を検査し、生成に失敗したときの扱いをリリース要件に合わせて定めます。SE-0509に記載された生成失敗時の挙動も、使用するコマンドに対応する節で確認してください。
- 構築と一緒に保管する:SBOM、依存解決ファイル、ジョブ識別情報を同一の成果物セットとしてアーカイブし、後から対象構築を特定できるようにします。
生成失敗を常に無視する設定にすると、リリースに必要なSBOMが欠けても成功扱いになるおそれがあります。一方、試験段階で生成失敗を即座にリリース阻止条件にすると、原因の切り分けが難しくなることもあります。導入時は検証ジョブで挙動を確認し、正式リリースでは必要な成果物がそろわない場合にどう扱うかを明示してください。
FAQ:生成形式と運用範囲の確認
SPDXまたはCycloneDX形式を生成する前に確認すること
Swift 6.4以降のSwiftPMで、対応するツールチェーンとコマンドのオプションを確認します。形式名や出力指定を別の版の記述から推測せず、SE-0509および利用中のSwiftPM文書に合わせてください。生成対象をパッケージ全体にするか、製品や構築に結び付けるかも、この段階で決定します。
構築時生成と独立コマンドの使い分け
今回の構築に使われる依存関係を示したいなら、構築時生成を優先して検討します。パッケージの依存グラフを記録する目的なら独立コマンドが候補です。両者は依存グラフの範囲が異なるため、出力ファイルの名前だけで同等のSBOMと判断せず、用途と対象範囲を成果物に添えてください。
CI成果物として残すための設定
生成先を成果物の収集対象に追加し、依存解決ファイルとジョブ識別情報も併せて保存します。ジョブ完了時に出力ファイルが存在することと、指定した形式で読み取れることを確認してください。CIの成果物保存期間やアクセス権限は、チームのリリース運用と監査上の必要性に応じて設定します。
条件付き依存の確認方法
条件付き依存の掲載範囲を一つのSBOMだけで断定しないでください。パッケージ依存グラフと構築時のSwiftBuild依存グラフは異なるため、OSや構築条件によって含まれる項目が変わる可能性があります。対象の構築条件を記録し、SBOMの項目を依存解決結果および実際の構築内容と照らし合わせます。
マイルストーン5:成果物を照合して引き渡す
公開や監査に回す前に、生成物を次のチェックリストで確認します。
- [ ] 出力が指定したSPDXまたはCycloneDX形式として読み取れる。
- [ ] SBOMに記載されたパッケージ、製品、構築の範囲が、利用目的と一致している。
- [ ] 依存解決ファイルと照合し、主要な依存項目の不足や意図しない追加がない。
- [ ] 条件付き依存について、対象のOS・構築条件と生成方式を記録している。
- [ ] SBOM、依存解決ファイル、Swiftツールチェーン情報、ジョブ識別情報が同じ構築に結び付いている。
- [ ] 生成失敗や保存失敗が起きた場合のCI上の扱いを決めている。
この照合は、SBOMが示す範囲を明確にするためのものです。SBOMが存在することだけでは、依存パッケージの脆弱性がないこと、ライセンス条件を満たすこと、特定の監査要件に適合することは証明できません。必要に応じて、対象の規格や社内基準に沿った別の検査と組み合わせてください。
macOS CI環境を選ぶ際の判断
SwiftPMのSBOM生成は、実行するツールチェーンとプロジェクト状態に依存します。手元のMacでしか再現できない状態では、継続的な構築や成果物の追跡が不安定になりやすく、CIの実行環境を整える負担も残ります。Linux環境だけで構築を代替しようとすると、Appleプラットフォーム向けツールチェーンを必要とする工程を同じ条件で確認できない場合があります。
既存のMacを常時利用でき、保守や運用時間を確保できるチームなら、自社管理のMacが候補です。必要な期間だけmacOS CI環境を使いたい場合は、遠隔Macの利用も比較対象になります。NowMiniの遠隔Mac環境の案内で利用方法を確認し、接続条件は接続ガイドで事前に照合できます。
SBOMの範囲と保存方法を固めた後は、実際のプロジェクト、Swiftツールチェーン、CI手順で生成からアーカイブまで再現できるかを基準に環境を選びます。短期間の検証や一時的なCI需要ならNowMiniのMacレンタルが候補になりますが、長期の常時負荷や物理ポートを必要とする運用では、自社所有のMacが適する場合もあります。利用期間や接続要件を確認したうえで、NowMiniへの相談窓口から対象ワークフローに合う環境を確認してください。
よくある質問
Swift 6.4のSwiftPMでSPDX形式やCycloneDX形式のSBOMを作るには、何を確認すればよいですか?
まずmacOS CIで使うSwiftツールチェーンがSBOM生成に対応する版か確認し、プロジェクトの依存解決を再現できる状態にします。実際の生成では、構築コマンドに付ける方式とパッケージ用の独立コマンドを、必要な依存グラフに合わせて選びます。形式やオプション名はツールチェーンのSwiftPM文書とSE-0509で照合してください。
SwiftPMの構築時SBOM生成と独立したSBOM生成コマンドは、どのように使い分けますか?
構築時の生成は、その構築で使われるSwiftBuildの依存グラフに対応する清單が必要な場合に向きます。独立コマンドはパッケージの依存グラフを記録したい場合に選べます。製品単位かパッケージ全体か、また実際のビルド条件を含める必要があるかを先に決め、必要な範囲に合う方式を採用します。
macOS CIで生成したSwiftPM SBOMを、ビルド成果物として確実に残すにはどうすればよいですか?
生成先をCIの成果物収集対象に含め、ビルド識別子、依存解決ファイル、使用したSwiftの版と一緒に保管します。ジョブが終わる前にファイルの存在と形式を確認し、後から同じ構築に結び付けられるようにします。保管期限や公開範囲は、リリース手順と監査要件に合わせて設定してください。
SwiftPMのSBOMには、条件付きで使われる依存関係もすべて記載されますか?
一律にすべての実行条件を表すものとは限りません。パッケージ用コマンドが扱う依存グラフと、構築時にSwiftBuildが扱う依存グラフでは範囲が異なるため、プラットフォーム条件などによって出力内容に差が出る可能性があります。対象環境で依存解決結果とSBOMを照合し、必要なら別の条件で生成した清單も確認してください。
SwiftPMのSBOM検証に、専有のNowMini M4を
NowMiniなら、専有物理マシンでmacOS CIのビルドやSBOM生成を実行できます。
