[Swift 3.0][導入編] Swift Package Manager を試してみました
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
の全てに対応していることが条件となってくるのでは無いでしょうか?