![[Swift 3.0][導入編] Swift Package Manager を試してみました](https://devio2023-media.developers.io/wp-content/uploads/2014/11/logo_swift_400x400.png)
[Swift 3.0][導入編] Swift Package Manager を試してみました
この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
Swift Package Manager
こんにちは!
モバイルアプリサービス部の田中孝明です。
2015年12月以降、SwiftがOSSになってからエコシステムが変わりつつあります。
Swift Package Managerというライブラリ管理ツールが新たに追加されました。
Swift Package Managerに関してはSwiftの公式のドキュメントのPackage Managerの項目にて詳しく記載されていますので、こちらを数回に分けて解説したいと思います。
Swiftのライブラリ管理
iOSにおけるライブラリ管理ツールはCocoaPodsやCarthageが馴染み深かったのではないでしょうか?
ただし、いずれもmacOSでしか動作しません。
Swift Package ManagerはUbuntuでも動作するため、Swiftをサーバーサイドで動作させる際に強力なライブラリ管理ツール隣ます。
今回は導入編ということで、サーバーサイドでOSSのライブラリを組み込むところまでやってみたいと思います。
Himotoki
JSONデコードライブラリのHimotokiはSwift Package Managerに対応しています。
ライブラリ配下にPackage.swiftファイルがあるのもその特徴です。
import PackageDescription
let package = Package(
    name: "Himotoki"
)
記載されている内容に関しては別の回でまとめたいと思います。
Perfect
Server Side Swiftのframeworkの一つであるPerfectはバージョン2.0にてSwift Package Managerのフルサポートが追加されました。
今回はこちらのframeworkを使用します。
ライブラリのインポート
Perfect配下のPackage.swiftファイルのdependenciesにフォーマットに従ってライブラリのURLを追加します。
let package = Package(
    name: "PerfectTemplate",
    targets: [],
    dependencies: [
            .Package(url: "https://github.com/PerfectlySoft/Perfect-HTTPServer.git", versions: Version(0,0,0)..<Version(10,0,0)), 
            .Package(url: "https://github.com/ikesyo/Himotoki.git", versions: Version(0,0,0)..<Version(10,0,0))
    ]
)
.PackageのurlにはライブラリのgitのURLを入力します。
versionsには取り込むライブラリのバージョンを記載します。
ライブラリの指定が終われば、あとはswift buildコマンドを実行することで、ライブラリがプロジェクトに組み込まれます。
$ swift build
ビルドが成功すると、組み込まれたライブラリを使用することができます。
struct Message: Decodable {
    let id: String?
    let message: String
    let created_at: String
    let updated_at: String
    // MARK: Decodable
    static func decode(_ e: Extractor) throws -> Message {
        return try Message(
            id: e <|? "id",
            message: e <| "message",
            created_at: e <| "created_at",
            updated_at: e <| "updated_at"
        )
    }
}
まとめ
今回はHimotokiを試行させていただきましたが、他のライブラリも徐々にではありますがSwift Package Managerに対応しつつあります。
今後のライブラリ選定の基準としてCocoaPods、Carthage、Swift Package Managerの全てに対応していることが条件となってくるのでは無いでしょうか?










