68
65

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

SwiftAdvent Calendar 2015

Day 19

githubで見つけたSwiftの面白そうなライブラリたち

Last updated at Posted at 2015-12-21

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のライブラリが本当に増えてきて純粋に嬉しいです。
使う側が使用するライブラリを選べるって素晴らしいですね。

以上

68
65
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
68
65

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?