【Xcode/iOS】Static Library/Dynamic Frameworkの作成方法!

この記事からわかること
- Xcode/iOSアプリでライブラリとフレームワークの作成方法
- Static Library/Dynamic Frameworkの定義方法
index
[open]
\ アプリをリリースしました /
環境
- Xcode:16.3
- iOS:18.0
- Swift:5.9
- macOS:Sequoia 15.4
モジュール化を行う方法
iOSアプリのプロジェクト内でモジュール化を行う方法としてあるのがライブラリとフレームワークへの切り出しです。「Static Library」や「Dynamic Framework」を作成する方法と使い方をこの記事ではまとめていきたいと思います。
- Static Library
- Dynamic Framework
Static Libraryの作成方法
XcodeからStatic Libraryを作成するには上部メニュー「File」>「New」>「Target...」からStatic Library」を選択します。

Static Libraryを追加すると以下(TestLibrary)のようなファイル群が自動で追加されます。初回は指定したライブラリ名の名前がついた空のファイルだけが生成されます。

アクセス修飾子を意識しながら定義する
生成されたディレクトリの中にモジュール単位に切り出したい処理を実装していきます。モジュール単位でのアクセスを意識した定義になるのでアクセス修飾子を正しく指定しながら定義していきます。
Swiftではデフォルトのアクセス修飾子が別モジュールからはアクセスできないinternal
のため、 別のモジュールからアクセスできるようにしたい場合はpublic
を付与してあげてください。
プロジェクト内からライブラリを参照できるようにする
ここまできたら実際にこのライブラリをプロジェクト内から使えるようにしていきます。まずは一度普通にビルドします。ビルドするとlibTestLibrary.a
というファイルが内部的に生成されます。その後対象のアプリプロジェクトの「General」>「Frameworks, Libraries, and Embedded Content」>「+」をクリックします。すると以下のように「libTestLibrary.a」が表示されているのでこれ選択して「Add」で追加します。

これでライブラリの導入は完了したので使いたい箇所でimport
を使用することで定義されているコードが使えるようになります。
Dynamic Frameworkの作成方法
XcodeからFrameworkを作成するには上部メニュー「File」>「New」>「Target...」からFramework」を選択します。作成する際はバンドルIDも一緒に決める必要があります。またデフォルトで生成されるFrameworkはDynamic Frameworkです。Staticに変更したい場合は「Build Settings」>「Mach-O Type」>「Static Framework」に変更する必要があるようです。
公式リファレンス:Creating a static framework

Frameworkを追加すると以下(TestFramework)のようなファイル群が自動で追加されます。

アクセス修飾子を意識しながら定義する
ライブラリの時と同じようにアクセス修飾子を意識しながら定義していきます。
プロジェクト内からフレームワークを参照できるようにする
フレームワークはライブラリと異なり追加した時点でプロジェクト内で使えるようになります。
Embed & Signとは?
フレームワークも「Frameworks, Libraries, and Embedded Content」に追加されています。ただフレームワークの方には「Embed」の項目に「Embed & Sign」が選択されています。これはアプリ本体にライブラリ/フレークワークをどうやって組み込む(Embed)するかを指定するところになります。

基本的にフレームワークは「Embed & Sign」のままで良さそうです。
- Do Not Embed・・・埋め込まない(Static Library / Static Frameworkなど)
- Embed & Sign・・・埋め込み & 署名
- Embed Without Signing・・・埋め込み & 署名しない(macOSのみ)
まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。
ご覧いただきありがとうございました。