主力フリマアプリ iOSオープンソースライブラリ調査

メルカリの成功を筆頭に、フリマアプリが各社頑張っている印象があるので、アプリの著作権情報から各アプリでつかわれているオープンソースライブラリを調べてみた。
ついでにメルカリも手を広げている、クラシファイドアプリ（ジモティーとアッテ）も調べた。
iOSの場合は使っているライブラリによって、ObjCかSwiftのどちらが使われているか推測できるので、面白いと思う。

対象のiOSアプリは以下。

- **オールジャンル**
    - ヤフオク(※1) / メルカリ / ラクマ
- **ファッション**
    - フリル / SHOPLIST USED
- **本/CD/DVDなど**
    - カウル / ブクマ
- **クラシファイド**
    - ジモティー / アッテ

※1 ... オークションだけどフリマモードあるので入れました。

# サマリーと所感
以下、気になったところだけ各アプリ別に書きます。
どのアプリにも必須なネットワーク系やRxなどのアプリ全体で使われるライブラリは、特徴が出そうなので「**ネットワーク/制御系**」として抜き出しています。

## ヤフオク
RxSwiftを使いつつも、ObjCのライブラリが残っている印象。
早い段階でSwiftに乗り換えを進めてきたのか、今はメジャーではないSwiftのライブラリが含まれている気がする。

- ネットワーク/制御系: **RxSwift**、**RxDataSources**
- 定番UI系: **JSQMessageViewController**, **MJPopupViewController** (めっちゃ古くからあるスゴイ)
- Rxに加えて、非同期処理ライブラリ **BrightFutures**。
- DB系は、**Realm** と **FMDB** が両方入っている。
- AutoLayout関連ライブラリにSnapKitではなく**PureLayout**
- ネットワーク系のライブラリは含まれていない。自社製ライブラリ使っているのかな。

## メルカリ
※ 著作権表記は探したが見つからなかった。どこにあるのだろうか。教えて欲しい。

## ラクマ

PureSwiftのライブラリは一切含まれておらず、ObjC感が強い。
定番のUIライブラリの採用が多し。

- ネットワーク/制御系:  **AFNetworking**

## フリル
さすがフリマアプリの老舗と言った感じで、ライブラリ数がダントツ。
MasonryとSnapKitなど、見るからに Swift、ObjCが混在といった感じ。
Rxではなく、ReactiveCocoa、ReactiveObjC、ReactiveSwift が採用されている。

- ネットワーク/制御系: **Bolts**、**AFNetworking**、**ReactiveCocoa**
- **AdobeCreativeSDK**、写真加工につかっている？
- 広告/計測系: **Adjust**、**FirebaseAnalytics**、**GoogleAnalytics**
- 有名エンジニアの足跡、**NJKScrolFullScreen**、**NJKWebViewProgress**
- **QBImagePickerController**、**MWPhotoBrowser**など古いUIライブラリあり

## SHOPLIST USED
画面遷移や項目変更時のアニメーションを頑張っていて操作して気持ちがいい。カスタムビュー多そう。
PureSwiftのライブラリはない。通信系ライブラリもない。

- ネットワーク/制御系: **Bolts**、**Realm**
- **XMLDictionary**はあるけど、JsonParserがない。APIはXML?
- 広告/計測系多い、 **Repro**、**SmartBeat**、**ADJust**、**FirebaseAnalytics**、**AwsMobileAnalytics** 。
- 開発テスト系で **OCHamcrest**、**OCMock**

## カウル
メルカリのブランドだけど、開発は子会社のソウゾウ。
2017年5月リリースなのでとても新しく、今時のRxSwift採用で、PureSwiftライブラリを必要最低限に使っているという感じ。

- ネットワーク/制御系: **RxSwift**、**Action(Rx関連)**、**APIKit**+**Himotoki**の組み合わせ
- mixi子会社のノハナの **NohanaImagePicker**

## ブクマ
SDWebImageとKingfisherなどObjc混在感あり。
なぜかアラート関係の便利ライブラリが多い。
測定系がいっぱい。

- ネットワーク/制御系: **Alamofire**、**Bolts**
- 広告/計測系: **AppsFlyerFramework**、**FirebaseAnalytics**、**Crashlytics**、**Repro**、**FBAudienceNetwork**、**GoogleAnalytics**、**GoogleConversionTracking**

## ジモティー
ライブラリ数が圧倒的に少ないしマイナーなものが多い。
ちなみに画面がまだ拡大互換モードだったりする。

- ネットワーク/制御系: **R9HTTPRequest**

## アッテ
カウルと同じソウゾウなので、同じ傾向かと思いきやそうでもないように見える。
PureSwiftかと思いきや、古いライブラリもあり。

- ネットワーク/制御系: **RxSwift**、**Alamofir**、**Realm**
- **MHCustomtabBarController**、**StaticDataTableViewController**という古いライブラリもあり。

# 全ライブラリ列挙

### [ヤフオク!](https://auctions.yahoo.co.jp/)
- three20
- ZXing
- FMDB
- JSQMessageViewController
- base64Transcoder
- CocoaLumberjack
- LumberjackConsole
- DCScrollView
- Realm
- RealmComponents
- ExportCompliance
- card.io
- RxSwift
- SWXMLHash
- SwiftyJSON
- RxDataSources
- PureLayout
- BrightFutures
- Result
- MJPopupViewController

※ 表示場所: アプリ内設定画面、v1.7.6

### [メルカリ](https://www.mercari.com/jp/)
※ 記載見つけられず

### [ラクマ](https://rakuma.rakuten.co.jp/home/)
- Acknoledgements
- AFNetworking
- HMSegmentedControl
- JASidePanels
- ODRefreshControl
- SDWebImage
- SVProgressHUD
- SVPullToRefresh
- TTTAttributedLabel
- UICKeyChainStore
- WEPopover

※ 表示場所: ご利用ガイド > ラクマについて(WebView)、v1.7.6

### [フリル](https://fril.jp/)
- Acknoledgements
- AFNetworkActivityLogger
- AFNetworking
- Adjust
- AdobeCreativeSDK
- Bolts
- Clashytics
- DACircularProgress
- DateTools
- DateToolsSwift
- FBSDK CoreKit
- FBSDK LoginLit
- FABRIC
- Firebase
- FirebaseCore
- FirebaseAnalytics
- FirebaseInstaceId
- FontAwsomeKit
- GTMOAuth2
- GTMSESessionFetcher
- Google Analytics
- GoogleAppleUtilities
- GoogleConversionTracking
- GoogleInterChangeUtilities
- GoogleSignIn
- GoogleSymbolUtilities
- GoogleToolBoxForMac
- GoogleUtilities
- HMSegmentedControl
- HPGrowingTextView
- Himotoki
- JLRoutes
- LXReorderableCollectionViewFlowLayout
- MBProgressHud
- MWPhotoBrowser
- Masonry
- NJKScrolFullScreen
- NJKWebViewProgress
- QBImagePickerController
- ReactiveCocoa
- ReactiveObjC
- ReactiveSwift
- Result
- SDWebImage
- SSPullToRefresh
- SnapKit
- TMCache
- TTTAttributedLabel
- TwitterCore
- TwitterKit
- UICKeychainStore
- WebviewJavaScriptBridge

※ 表示場所: iOS設定画面、Version: v6.8.3

### [SHOPLIST USED](https://shop-list.com/women/svc/guide/UsedExhibit/)
- Acknaledgement
- AwsCore
- Bolts
- OCHamcrest 
- XMLWriter
- Mantle
- XMLDictionary
- UICKeychainStore
- GZip
- Reachability
- OCMock
- AwsMobileAnalytics
- AmazonCognitoSync
- ADJust
- FBSDKCoreKit
- FBSDKLoginKit
- Fabric
- Firebase
- FirebaseAnalytics
- FirebaseInstabseID
- Google
- GoogleAnalytics
- GoogleInterchangeUtilities
- GoogleSymbolUtilities
- GoogleUtilities
- Realm
- RealmComponents
- ExportCompliance
- Repro
- TwitterCore
- TwitterKit
- SmartbeatSDK
- PLCrashReporter

 ※ 表示場所: iOS設定画面、v1.4.0

### [ブクマ](http://xn--pck0dza.com/)
- Acknolegements
- Alamofire
- AppsFlyerFramework
- Bolts
- CollectionViewWaterFallLayout
- Crashlytics
- FBAudienceneNetwork
- FBSDKCoreKit
- FBSDKLoginKit
- FBMessengerShareKit
- FBSDKShareKit
- FMDB
- Fabric
- Firebase
- FirebaseAnalytics
- FirebaseCore
- FirebaseInstanceID
- FirebaseMessaging
- FrameAccessor
- GLDTween
- Google
- GoogleAnalytics
- GoogleConversionTracking
- GoogleToolBoxForMac
- JDStatusBarNotification
- Kingfisher
- LINEActivity
- LukeyChainAccess
- MTBBarcodeScanner
- PhotoSlider
- Protobuf
- RDVTabBarController
- RMUniversalAlert
- Repro
- SDWebImage
- SVProgressHUD
- Siren
- SwiftyBeaver
- SwiftyJson
- SwiftyTimer
- SwiftyUserDefaults
- TimePiece
- UIActionSheet+Blocks
- UIAlerController+Blocks
- UIAlertViewBlocks

※ 表示場所: iOS設定画面、v1.6.2

### [メルカリカウル](https://mercarikauru.com/)
- APIKit
- Action
- Himotoki
- JsonRPCKit
- KeychainAccess
- Kingfisher
- material-design-icons
- NohanaImagePicker
- Result
- RxSwift
- SVProgressHUD

※ 表示場所: アプリ内設定画面、v1.7.1

### ジモティー
- R9HTTPRequest
- JSONKit
- ImageStore
- ELCImagePickerController
- Si-Calendar
- CMPopTipView

※ 表示場所: マイページ、v3.0.6

### アッテ
- MHCustomtabBarController
- KeychainAccess
- SVProgressHUD
- DKImagePickerController
- StaticDataTableViewController
- JSONRPCKit
- RealmCocoa
- ObjectMapper
- Alamofire
- AlamofireImage
- RxSwift
- RAReorderableLayout
- Repro

※ 表示場所: アプリ内設定画面 -> 使い方ガイド (WebView)、v2.8.4