githubで見つけたSwiftの面白そうなライブラリたち
期日過ぎていたところにすかさず投稿。
githubで見つけたSwiftの面白そうなライブラリを少しだけ紹介しようと思います。
なお、この記事で紹介するライブラリは、私はほぼ使ったことがありません。READMEみて「おっ、よさげだな」と思ったものをピックアップしただけとなります。
Async
Grand Central Dispatch(GCD)のシンタックスシュガーライブラリです。ワーカースレッドの処理とメインスレッドの処理の切り替えを簡単に書くことができます。READMEにも書いてありますが、
Async.background {
println("This is run on the background queue")
}.main {
println("This is run on the main queue, after the previous block")
}
みたいな感じで書けます。
dispatch_queue_createで作ったカスタムキューに流し込んだり、dispatch_afterのように遅延実行させたりもできるっぽいです。
SwiftDate
NSDateを使いやすくしたライブラリです。
let dateInUTC = (2015.years | 12.months | 25.days | 20.hours | 10.minutes).inUTCRegion
こんな感じの書き方で日付のイニシャライズが可能です。他にも初期化の方法はいろいろ用意されています。日付を扱うようなアプリを作るのあれば入れてみると便利かもしれません。
Money
名前の通り、お金の管理をしやすくしちゃいました的なライブラリです。様々な国と地域の通過に対応しているそうです(もちろんJPYもあります)。
Apple Payに対応しているっぽいようなことが書いてありますが使ったことはないのでなんとも・・・。
Genome
JSONデコードライブラリです。よく見るのはSwiftyJSON、ObjectMapper、Himotokiですが、Genomeもさらっと見た感じだと使いやすそうです。
BasicMappableプロトコルにマッピング対象の構造体を適合させて使います。
struct Pet {
var name: String = ""
var type: PetType!
var nickname: String?
}
extension Pet : BasicMappable {
mutating func sequence(map: Map) throws {
try name <~> map["name"]
try nickname <~> map["nickname"]
try type <~> map["type"]
.transformFromJson {
return PetType(rawValue: $0)
}
.transformToJson {
return $0.rawValue
}
}
}
StandardMappableを使えばイニシャライズでマッピング可能になるので、プロパティをletで宣言できるようになります。タイプセーフですね。
Gloss
またもや見つけてしまったJSONデコードライブラリ。Decodableに適合させて使います。
struct RepoOwner: Decodable {
let ownerId: Int?
let username: String?
// MARK: - Deserialization
init?(json: JSON) {
self.ownerId = "id" <~~ json
self.username = "login" <~~ json
}
}
Venice
CSP(Communicating Sequential Processes)をお手軽に実装できるライブラリです。私が初めて見つけた時は「SwiftGo」という名前でGolangのGoルーチン的なものをSwiftで実装しやすくする感じのライブラリだったことを覚えています。
SwiftCop
バリデーションチェック用ライブラリです。
正規表現でのチェックはもちろん、文字列が含まれているか or そうでないか、メールアドレス形式か、文字列が指定の長さより短いか、など標準的なチェックは実装されています。
UIKitを使ったサンプルコードがREADMEに記載されているので、気になる方はチェック。
Device
現在のデバイスの種類とスクリーンサイズを検知するツールライブラリです。
Device.version()
と、クラスメソッドを実行するとデバイス種類のEnumが返却されます。
Device.size()
とするとデバイスの画面サイズ。
Device.type()
とするとデバイスのタイプ(iPad, iPhone, シミュレータなど)が取得できます。
SwiftEventBus
AndroidのEventBusをiOSでも使えるようにしたよー的なやつ(だと思う)。
subscribe(購読)する側は
SwiftEventBus.onMainThread(target, name: "personFetchEvent") { result in
let person : Person = result.object as Person
println(person.name) // will output "john doe"
}
こんな感じで待っていて、
SwiftEventBus.post("personFetchEvent", sender: Person(name:"john doe"))
こんな感じでイベントを送る。
おわり
力尽きたのでここまでにします。。。
最近、素晴らしいSwiftのライブラリが本当に増えてきて純粋に嬉しいです。
使う側が使用するライブラリを選べるって素晴らしいですね。
以上