iOSアプリでよく使われているライブラリ


個人的によく使用するライブラリ検索サイトや、iOSアプリで使われている汎用性の高いライブラリをまとめてみました。
UIライブラリに関しては、SwiftUIを中心にまとめています。

## ライブラリ検索

### [GitHub Advanced search](https://github.com/search/advanced)

GitHubのAdvanced searchは、リポジトリやコードスニペットを細かい条件で検索できるツールです。特定のプログラミング言語、スター数、ライセンスなどでフィルタリングして、目的のライブラリを効率的に探すことができます。

### [GitHub Trending](https://github.com/trending?l=swift)

GitHub Trendingは、現在人気のあるリポジトリを言語別に確認できるページです。Swiftのトレンドをチェックすることで、新しいアイデアやライブラリを見つけるのに役立ちます。

### [GitHub Topics](https://github.com/topics/swift)

GitHub Topicsは、特定のトピックに関連するリポジトリをまとめたページです。

### [Libraries.io](https://libraries.io/)

Libraries.ioは、さまざまなプログラミング言語やフレームワークに対応したライブラリの検索サイトです。GitHubやCocoaPods、Swift Package Managerなどのリポジトリを収集し、検索やフィルタリングが可能です。

### [Open Source iOS Apps](https://github.com/dkhamsing/open-source-ios-apps)

Open Source iOS Appsは、iOSアプリのオープンソースプロジェクトをまとめたリストです。アプリのカテゴリや機能別に分類されており、実際のアプリケーションのコードを参考にすることができます。

### [Swift Package Index](https://swiftpackageindex.com)

Swift Package Indexは、Swift Package Managerに対応したパッケージを検索できるサイトです。ライブラリのバージョン互換性や導入手順も確認でき、プロジェクトに適したパッケージを素早く見つけることができます。

### [CocoaPods](https://cocoapods.org/)

CocoaPodsは、iOS開発のための依存関係管理ツールです。公式サイトでは利用可能なライブラリを検索でき、インストール手順も提供されています。SwiftやObjective-Cのライブラリの導入を簡単に行えます。

### [CocoaControls](https://www.cocoacontrols.com/)

CocoaControlsは、iOS向けのUIコンポーネントを検索できるサイトです。多くのサンプルコードと共に、コンポーネントの概要や用途を簡単に確認でき、プロジェクトに適したUI要素を見つけやすくします。

### Awesome Swift

Awesome Swiftは、GitHubで管理されている、Swiftのライブラリやツールをカテゴリ別にまとめたリストです。様々な分野のSwiftライブラリが網羅されており、興味のある分野のライブラリをすぐに見つけることができます。

- [Awesome Swift](https://github.com/matteocrippa/awesome-swift)
- [Awesome SwiftUI](https://github.com/vlondon/awesome-swiftui)
- [Awesome SwiftUI by onmyway133](https://github.com/onmyway133/awesome-swiftui)
- [Awesome SwiftUI Libraries by Toni77777](https://github.com/Toni77777/awesome-swiftui-libraries?tab=readme-ov-file)
- [Awesome iOS](https://github.com/vsouza/awesome-ios)

## コード品質管理

### フォーマッター

#### SwiftFormat

https://github.com/nicklockwood/SwiftFormat

SwiftFormatは、Swiftコードのスタイルを自動で統一するためのフォーマッターです。コードの整形やインデント、不要な空白の削除などを自動的に行い、チーム全体でコーディングスタイルを維持するのに役立ちます。

### 静的解析

#### SwiftLint

https://github.com/realm/SwiftLint

SwiftLintは、Swiftコードの静的解析ツールで、AppleのSwiftスタイルガイドに沿ったコードを書くのをサポートします。違反箇所を自動的に検出し、修正提案をしてくれるため、コードの品質向上に貢献します。

#### SwiftLintPlugins

https://github.com/SimplyDanny/SwiftLintPlugins

SwiftLint本体をインストールするのではく、SwiftLintのプラグインをインストールすることを推奨しているため、SwiftLintをプロジェクトに導入する際は、こちらをインストールします。

### リソース管理

#### SwiftGen

https://github.com/SwiftGen/SwiftGen

SwiftGenは、アセットやストーリーボード、ローカライズされた文字列などを型安全に利用するためのツールです。生成されるコードはコンパイル時にエラーを検出できるため、開発効率とコードの安全性が向上します。

SwiftGen は R.swift に比べて導入は複雑ですが、カスタマイズ性が高いので、プロジェクトによってどちらを選定するか検討すべきです。

#### R.swift

https://github.com/mac-cain13/R.swift

R.swiftは、リソースを型安全に扱うためのツールで、画像、色、ストーリーボードなどをコードで安全に参照することができます。間違ったリソースの参照を防ぎ、ビルド時にエラーを検出できます。

### テスト

#### XCTest

https://developer.apple.com/documentation/xctest

XCTestは、Appleが提供する標準のテストフレームワークで、ユニットテストやUIテストを行うためのツールです。SwiftやObjective-Cで書かれたアプリケーションの動作確認や回帰テストに使用されます。

#### ViewInspector

https://github.com/nalexn/ViewInspector

ViewInspectorは、SwiftUIビューのテストを行うためのライブラリです。SwiftUIのビューやそのプロパティをプログラム的に確認することができ、UIの状態や動作をテストするのに非常に便利です。

#### Quick

https://github.com/Quick/Quick

Quickは、BDD（Behavior Driven Development）スタイルのテストフレームワークです。テストケースを簡潔かつ表現力豊かに記述でき、SpecやExample形式でテストコードを書くことができます。

#### Swift Testing

https://github.com/swiftlang/swift-testing

Swift Testing は XCTest の後継となるテストフレームワークで、Swift のテストコードをより簡潔に書くことができます。XCTest と比較して、よりシンプルで読みやすいテストコードを書くことができます。

## ユーティリティ

### 日付

#### SwiftDate

https://github.com/malcommac/SwiftDate

SwiftDateは、日付や時間の操作を簡単に行えるライブラリです。タイムゾーンの変換、日付の加減算、フォーマットなど、日付に関連するさまざまな操作を直感的なAPIで提供します。

### バージョン管理

#### Version

https://github.com/mrackwitz/Version

Versionは、アプリのバージョン管理を行うためのユーティリティライブラリです。バージョン番号の解析、比較、表示などを簡単に行うことができ、アプリのバージョン制御に役立ちます。

### アップデート通知

#### Siren

https://github.com/ArtSabintsev/Siren

Sirenは、App Storeで公開されているアプリの最新バージョンをチェックし、ユーザーにアップデートを促す通知を表示するライブラリです。新バージョンのリリースに合わせて、ユーザーに効果的にアップデートを促せます。

### デバイス情報

#### DeviceKit

https://github.com/devicekit/DeviceKit

DeviceKitは、iOSデバイスのモデル、画面サイズ、OSバージョンなどの情報を簡単に取得できるライブラリです。デバイスごとの特定の処理やUI調整に役立ちます。

## UI

### レイアウト

#### SnapKit

https://github.com/SnapKit/SnapKit

SnapKitは、Auto Layoutをコードで簡単に扱えるようにするDSL（ドメイン固有言語）です。直感的なチェーンメソッドを使ってレイアウトを定義でき、コードでのレイアウト作成を大幅に効率化します。

### 画面カスタマイズ

#### SwiftUI Introspect

https://github.com/siteline/swiftui-introspect

SwiftUI Introspectは、SwiftUIビューにUIKitやAppKitのカスタマイズを適用するためのライブラリです。SwiftUIで提供されるビューに対して、詳細なカスタマイズが必要な場合に便利です。

SwiftUIはUIKitをラップしているフレームワークであるため、SwiftUIだけでは実現できないカスタマイズが必要な場合に、このライブラリを使用することでUIKitの参照を取得し、カスタマイズを行うことができる用にあります。

### カレンダー

#### SwiftUICalendar

https://github.com/GGJJack/SwiftUICalendar

SwiftUICalendarは、SwiftUIで使えるシンプルなカレンダーコンポーネントです。基本的なカレンダー表示を簡単に実装でき、カスタマイズがしやすい設計となっていますが、週間ビューには対応していません。

#### FSCalendar

https://github.com/WenchaoD/FSCalendar

FSCalendarは、高機能なカスタマイズ可能なカレンダーコンポーネントで、年間、月間、週間表示が可能です。イベントのマークアップや色のカスタマイズなど、豊富な機能を備えています。

#### CVCalendar

https://github.com/CVCalendar/CVCalendar

CVCalendarは、シンプルで軽量なカレンダーライブラリです。必要最小限のカスタマイズ機能に焦点を当てており、複雑な機能が不要なシンプルなカレンダーを実装したい場合に適しています。導入が簡単であることも特徴です。

### グリッド

#### Grid (exyte)

https://github.com/exyte/Grid

Grid (exyte)は、多機能なグリッドビューのライブラリで、カスタマイズ可能なレイアウトを提供します。異なるサイズのアイテムをグリッドで整然と配置でき、デザインの自由度が高いです。特に、複雑なレイアウトやダッシュボード形式のUIに適しています。

#### GridView (Mijick)

https://github.com/Mijick/GridView

GridView (Mijick)は、SwiftUIで使えるシンプルなグリッドビューライブラリです。シンプルで直感的なAPIを持ち、SwiftUIでの迅速なプロトタイピングや、簡易的なグリッドレイアウトの実装に適しています。

### 検索バー

#### SearchBarView

https://github.com/rebeloper/SearchBarView

SearchBarViewは、SwiftUIで検索バーを実装するためのライブラリです。標準のSwiftUIには検索バーがないため、このライブラリを使うことで、検索機能を持つUIを簡単に追加できます。カスタマイズ性も高く、アプリのテーマに合わせた調整が可能です。

### チャート

#### Swift Charts

https://developer.apple.com/documentation/charts

Swift Chartsは、iOS 16以降で利用可能なApple公式のチャートライブラリです。棒グラフ、折れ線グラフ、円グラフなど、多彩なグラフ形式を提供し、データの視覚化をシンプルに行えます。SwiftUIとの統合もスムーズで、データバインディングを活用したリアクティブなグラフ表示が可能です。
円グラフは iOS 17 以降で利用可能なため、それ以前のバージョンで円グラフを利用する場合は、サードパーティのライブラリを利用する必要があります。

#### SwiftUICharts

https://github.com/willdale/SwiftUICharts

SwiftUIChartsは、SwiftUIで使えるオープンソースのチャートライブラリです。棒グラフ、折れ線グラフ、円グラフ、ドーナツグラフなど、複数のチャートタイプをサポートしており、カスタマイズ性が高いのが特徴です。

#### ChartView

https://github.com/AppPear/ChartView

ChartViewは、SwiftUI用のチャート描画ライブラリで、シンプルなコードで多様なグラフを作成できます。軽量でパフォーマンスが高く、特にシンプルなデータ表示やプロトタイピングに向いています。

### テキスト

#### BudouX.swift

https://github.com/griffin-stewie/BudouX.swift

BudouX.swiftは、自然言語処理を利用してテキストを分割するためのライブラリです。日本語や他の言語における文節や単語の切れ目を自動的に判断して分割するため、テキストレイアウトの最適化や読みやすさの向上に役立ちます。

文章の途中で不自然な改行が入らないように、適切な位置で改行を入れることができます。

### ポップアップ

#### PopupView (exyte)

https://github.com/exyte/PopupView

PopupView (exyte)は、SwiftUIでポップアップ表示を実現するためのライブラリです。モーダルやトーストメッセージ、アラートなど、様々なポップアップ形式に対応しており、表示位置やアニメーションのカスタマイズが可能です。

#### PopupView (Mijick)

https://github.com/Mijick/PopupView

PopupView (Mijick)もSwiftUIで使えるポップアップライブラリですが、よりシンプルな実装とカスタマイズに重点を置いています。基本的なポップアップの作成が容易で、軽量なUIを必要とするアプリに向いています。

### ページャータブ

#### PagerTabStripView

https://github.com/xmartlabs/PagerTabStripView

PagerTabStripViewは、ページコントロール付きのタブビューを実現するライブラリです。横スクロールでページを切り替えるUIを簡単に構築でき、タブのデザインや動作をカスタマイズできます。ニュースアプリやコンテンツ管理アプリに適しています。

#### SlidingTabView

https://github.com/QuynhNguyen/SlidingTabView

SlidingTabViewは、SwiftUIで使えるスライド式のタブビューを提供するライブラリです。シンプルで使いやすいAPIを持つことが特徴です。

### アニメーション

#### Hero

https://github.com/HeroTransitions/Hero

Heroは、ビュー間の画面遷移アニメーションを簡単に作成できるライブラリです。カスタマイズ可能なトランジションを実現し、複雑なアニメーション効果を直感的に作成できます。パフォーマンスも高く、多くのアプリで使用されています。

#### Lottie

https://github.com/airbnb/lottie-ios

Lottieは、Adobe After Effectsで作成したアニメーションをJSON形式で読み込み、iOSアプリ内で再生するためのライブラリです。アニメーションのパフォーマンスが高く、サイズも軽量で、リッチなユーザー体験を提供できます。

### その他

#### ScalingHeaderScrollView

https://github.com/exyte/ScalingHeaderScrollView

ScalingHeaderScrollViewは、スクロール時にヘッダーが縮小するエフェクトを実装できるライブラリです。プロフィールページや詳細ビューに動的な視覚効果を追加できます。

#### Swiftful Loading Indicators

https://github.com/SwiftfulThinking/SwiftfulLoadingIndicators

Swiftful Loading Indicatorsは、SwiftUIで使えるローディングインジケーターを提供するライブラリです。シンプルなスピナーからカスタマイズ可能なインジケーターまで、多様な種類のローディング表示が可能です。

#### SwiftySegmentedPicker

https://github.com/KazaiMazai/SwiftySegmentedPicker

SwiftySegmentedPickerは、SwiftUIでセグメントコントロールを実装するためのライブラリです。SwiftUIには標準でセグメントコントロールが用意されていませんが、このライブラリを使用することで、iOS標準のセグメントコントロールに似たUIをSwiftUIで実現できます。

#### SFSafeSymbols

https://github.com/SFSafeSymbols/SFSafeSymbols

SFSafeSymbolsは、SF Symbolsを簡単に使用するためのライブラリで、型安全な方法でシンボルを利用できます。

## ネットワーク

### Alamofire

https://github.com/Alamofire/Alamofire

Alamofireは、Swiftでネットワークリクエストを簡単に行うためのライブラリです。HTTPリクエスト、JSONのパース、ファイルのアップロードやダウンロードなど、ネットワーク通信に必要な機能が豊富に揃っており、非同期処理もサポートしています。

### Moya

https://github.com/Moya/Moya

Moyaは、Alamofireをベースにしたネットワークリクエストの抽象化レイヤーを提供するライブラリです。APIの定義を整理し、再利用性の高いコードを作成するのに役立ちます。特に、RESTful APIのエンドポイントを明確に定義でき、エラーハンドリングやモックデータのサポートも充実しています。

## 画像処理

### SDWebImage

https://github.com/SDWebImage/SDWebImage

SDWebImageは、画像のダウンロード、キャッシュ、表示を簡単に行えるライブラリです。GIFやWebPなどのフォーマットもサポートしており、画像の読み込みや表示速度の最適化に優れています。メモリ管理とディスクキャッシュを組み合わせたキャッシング機能が強力です。

### AlamofireImage

https://github.com/Alamofire/AlamofireImage

AlamofireImageは、Alamofireをベースにした画像処理ライブラリで、画像のダウンロード、キャッシュ、リサイズなどを簡単に行えます。URLSessionを活用し、ネットワーク画像の処理を効率化します。画像の非同期ダウンロード、キャッシュ管理、リサイズ、フィルタリングなどを簡単に実装でき、Alamofireとのシームレスな統合が可能です。

### Nuke

https://github.com/kean/Nuke

Nukeは、非同期での画像ダウンロード、キャッシュ、加工を行うための高性能なライブラリです。モダンな設計で、カスタマイズ性と拡張性が高く、メモリキャッシュとディスクキャッシュのバランスを自動的に調整します。画像のプリロードやバックグラウンド処理もサポートしており、大量の画像を扱うアプリケーションに最適です。

## データストレージ

### UserDefaults

https://developer.apple.com/documentation/foundation/userdefaults

UserDefaultsは、アプリケーションの設定や状態を永続的に保存するためのAPIです。シンプルなキー・バリュー形式でデータを保存でき、アプリケーションの再起動後もデータを復元できます。設定値やユーザーの状態を保存するのに適しています。
アプリをアンインストールするとデータが消えるため、アプリ内でのみ使用するデータや設定値を保存するのに適しています。

### SwiftyUserDefaults

https://github.com/sunshinejr/SwiftyUserDefaults

SwiftyUserDefaultsは、UserDefaultsをより使いやすくするためのライブラリです。型安全なAPIを提供し、キーのタイプミスや型変換の問題を防ぎます。UserDefaultsの操作を簡潔に記述でき、コードの可読性と保守性が向上します。

### KeyChain

https://developer.apple.com/documentation/security/keychain-services

KeyChainは、アプリケーションのセキュリティ情報を安全に保存するためのAPIです。パスワードやトークンなどの機密情報を暗号化して保存し、アプリケーション間で情報を共有することができます。
アプリをアンインストールしてもデータが残るため、セキュリティ情報以外にも、永続化が必要なデータを保存するのに適しています。

## データベース

### Realm

https://realm.io/

https://github.com/realm/realm-swift

Realmは、モバイルアプリのためのオープンソースのデータベースで、軽量で高速なデータベースソリューションを提供します。シンプルなAPIでオブジェクト指向のデータ操作ができ、スレッドセーフでリアルタイムのデータ更新をサポートしています。

### CoreData

https://developer.apple.com/documentation/coredata

CoreDataは、Appleが提供するオブジェクトグラフと永続化フレームワークで、iOS、macOS、tvOSで広く使われています。データの保存、フェッチ、変更の管理ができ、複雑なデータモデルを扱うアプリケーションに適しています。インメモリと永続化ストアの両方をサポートし、オブジェクトのライフサイクルを詳細に管理できます。

CloudKit と組み合わせることで、クラウド上にデータを保存することも可能です。

### SwiftData

https://developer.apple.com/documentation/swiftdata

SwiftDataは、Swift向けのデータ管理フレームワークです。CoreDataよりもデータの保存や取得を簡潔に行えるよう設計されており、軽量なアプリケーションやシンプルなデータ構造の管理に適しています。スレッドセーフであり、スムーズなデータバインディングをサポートします。

CloudKit と組み合わせることで、クラウド上にデータを保存することも可能です。

## 画面遷移

### SwiftUI Navigation Transitions

https://github.com/davdroman/swiftui-navigation-transitions

SwiftUI Navigation Transitionsは、SwiftUIの画面遷移アニメーションをカスタマイズするためのライブラリです。標準のSwiftUIでは提供されていない細かいトランジションエフェクトを簡単に実装でき、アプリのUI/UXを向上させます。アニメーションの挙動やタイミングを詳細に制御でき、カスタムトランジションを柔軟に適用できます。

## ライセンス表示

### LicensePlist

https://github.com/mono0926/LicensePlist

LicensePlistは、CocoaPodsやCarthageでインストールしたライブラリのライセンス情報を自動的に収集し、plist形式で生成するツールです。アプリ内で使用しているライブラリのライセンス表示を簡単に実装できます。

### LicenseList

https://github.com/cybozu/LicenseList

LicenseListは、Swift Package Managerでインストールしたライブラリのライセンス情報を表示するためのライブラリです。SwiftUIやUIKitで簡単にライセンスリストを表示することができます。

## バリデーション

### SwiftValidator

https://github.com/SwiftValidatorCommunity/SwiftValidator

SwiftValidatorは、入力値のバリデーションを行うためのライブラリです。フォームの入力チェックをシンプルに実装でき、正規表現を使ったカスタムルールの定義も可能です。入力エラーの視覚的なフィードバックを簡単に表示できるため、ユーザーインターフェースの品質向上に寄与します。

### Validator

https://github.com/adamwaite/Validator

Validatorは、Swift用のバリデーションライブラリで、入力値の検証を簡単に行うためのツールです。使いやすいAPIで、複数のバリデーションルールをチェーンで組み合わせることができ、フォームの入力チェックを効率的に行えます。エラーメッセージのカスタマイズも容易です。