バイセル Tech Blog

バイセル Tech Blogは株式会社BuySellTechnologiesのエンジニア達が知見・発見を共有する技術ブログです。

CASHのiOSアプリを支えるライブラリ

テクノロジー戦略本部の一ノ瀬です。

モノをキャッシュにできるサービス『CASH(キャッシュ)』のiOSアプリの開発に携わっています。

今回は、CASHのiOSアプリを動かしているライブラリはどんなものを使っているか紹介したいと思います。

Realm

モバイルデータベースライブラリ。APIから取得した査定アイテムのカテゴリや、査定対象のブランド情報、製品情報などをRealmに保存しています。

これらのデータで、サーバー側のDBと差分があれば、Realmを更新して、査定できる内容をアップデートしています。

Moya

Moyaは通信ライブラリAlamofireのラッパーで通信処理をカプセル化して扱いやすくしてるライブラリ。このMoyaを使い、Service単位でインターフェイスを定義してAPIとの通信処理を実装してます。

これとは別に、openapi-generatorで自動生成したコードを使ってAPIとやりとりを行っていて、新しいAPIではこちらを使うようにしています。

SwiftyJSON

APIのレスポンスはSwiftyJSONを使ってパースをしています。Codableに少しづつ移行していっています。

Kingfisher

画像取得やキャッシュ化は、Kingfisher を使っています。

ReactorKit

リアクティブで、図のように単一方向ストリームのアーキテクチャを提供するフレームワークです。新しい画面やViewではReactorKitを取り入れて実装しています。

処理の流れがわかりやすく、どこに何を書くのかが決まった設計となるので実装がしやすいです。

f:id:bst-tech:20201214194541p:plain

https://github.com/ReactorKit/ReactorKit より

Gifu

gifアニメーションをサポートしてくれるライブラリ。CASHアプリ内にはところどころで表現されるリッチなアニメーションがありますが、gifファイルをGifuを使って再生しています。

lottie-ios

CASHアプリ内のアニメーションの中には、一部lottieを使ったものもあります。lottieは、jsonファイルをもとにアニメーションを再生してくれるライブラリです。

FSCalendar

カレンダーUIを簡単に表示できるライブラリ。ユーザーがキャッシュ化したアイテムを、自宅に集荷してもらう日付を決める際に利用指定されています。

XLPagerTabStrip

画面をスワイプしたりタブ選択をすることで簡単に画面遷移ができるContainer ViewControllerを提供してくれるライブラリ。

CASHアプリには、すぐにアイテムを査定できる「いますぐ査定」と、アイテムをまとめて選んで査定ができる「まとめて査定」があります。

buysell-technologies.com

「いますぐ査定」と「まとめて査定」ができる画面をXLPagerTabStripを使って切り替えられるようになっています。

f:id:bst-tech:20201214202556p:plain

 

「まとめて査定」の施策については、 ↓ で紹介されているので気になる方は読んでみてください。

tech.buysell-technologies.com

おわりに

CASHのiOSアプリで利用している主なライブラリを紹介させていただきました。

よく使われているライブラリが多かったと思いますが、CASHのアプリがどう動いてるか少しだけ知っていただけてでも親しみを感じていただけたのではないでしょうか。

バイセルテクノロジーズでは一緒に開発をしてくれるエンジニアを募集しております。

バイセルテクノロジーズ、CASHに興味を持っていただけた方、是非お待ちしております。