post Image
Swiftで「サクッと使える」通信ライブラリ【RapidFire】

はじめに

業務でのアプリ開発で通信が必要な場合は、AlamofireやAPIKitもしくはURLSessionをラップした自前のライブラリ的なものを使っているかと思います。

私も業務ではAlamofireかAPIKitを使っています。

これらのライブラリは、URLSessionの煩雑さや、不足している機能を補ってくれる素晴らしいライブラリだと思うのですが、 プロトタイピング勉強がてらに書くコード(通信は必要だがメインではない)向けに、 もっとカジュアルに使える 通信ライブラリが欲しいなと思っていました。

今さら通信ライブラリっていうのも、いわゆる「車輪」な感じなのですが、「RetroFitのBulderみたく書けるとカッコいいかもしれない」とか「用途が違うので大御所とはかぶらない」という理由を見つけたので、思い切ってつくってみました。

RapidFire

できたのが こちらの RapidFire です。

こんな風に使います。

RapidFire(.get, "https://httpbin.org/get")
    .setCompletionHandler({ (response: RapidFire.Response) in
        switch response.result {
        case .success:
            print("success: \(response.statusCode): \(response.toDictionary())")
        case .failure:
            print("error: \(response.statusCode): \(response.error)")
        }
    })
    .fire()

詳しくは README を見ていただければと思いますが、メソッドチェーンでリクエストの設定を組み立てていきます。

対応している機能はこちらです。

  • GET / POST / PUT / PATCH / DELETE
  • URL / JSON Parameter Encoding
  • multipart/form-data
  • JSON to Array / JSON to Dictionary Helper Method

レスポンスは、URLSessionのData, URLResponse, Errorの他に、成功/失敗のEnumとステータスコードが返ってきます。

public enum Result {
    case success
    case failure
}

public var result:     Result
public var statusCode: Int?
public var data:       Data?
public var response:   URLResponse?
public var error:      Error?

また現状レスポンス形式としてはJSONが主流なので、

  • JSON to Dictionary
  • JSON to Array
  • JSON to String

の変換用ヘルパーメソッドも用意してあります。

サンプルのように書けば、サクッとレスポンスの中身を確認できます。

まとめ

Elegant(Alamofire)とも Type-safe(APIKit)とも 違いますが、 Easy to use な感じで、目論み通り「カジュアルに使える」ものができたと思っています。

プロトタイピングの他にもAPIマッシュアップが捗りそうでし、小難しいことを考えなくていい個人アプリの通信部分など、何かと活躍しそうなライブラリです。

また、久しぶりに素のURLSessionをさわって、その手間のかかり具合に改めてライブラリの有難みを感じた開発でした。

リンク

  • RapidFire : Easy to use networking library in Swift.

  • Alamofire : Elegant HTTP Networking in Swift

  • APIKit : Type-safe networking abstraction layer that associates request type with response type.

こぼれ話

開発途中に “Star” が付いて驚きました。Githubには上げていましが、ブランチは develop しかない状態だったので。


『 Swift 』Article List
Category List

Eye Catch Image
Read More

Androidに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

AWSに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Bitcoinに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

CentOSに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

dockerに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

GitHubに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Goに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Javaに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

JavaScriptに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Laravelに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Pythonに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Rubyに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Scalaに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Swiftに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Unityに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Vue.jsに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Wordpressに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

機械学習に関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。