メルカリの成功を筆頭に、フリマアプリが各社頑張っている印象があるので、アプリの著作権情報から各アプリでつかわれているオープンソースライブラリを調べてみた。
ついでにメルカリも手を広げている、クラシファイドアプリ(ジモティーとアッテ)も調べた。
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という古いライブラリもあり。
全ライブラリ列挙
ヤフオク!
- three20
- ZXing
- FMDB
- JSQMessageViewController
- base64Transcoder
- CocoaLumberjack
- LumberjackConsole
- DCScrollView
- Realm
- RealmComponents
- ExportCompliance
- card.io
- RxSwift
- SWXMLHash
- SwiftyJSON
- RxDataSources
- PureLayout
- BrightFutures
- Result
- MJPopupViewController
※ 表示場所: アプリ内設定画面、v1.7.6
メルカリ
※ 記載見つけられず
ラクマ
- Acknoledgements
- AFNetworking
- HMSegmentedControl
- JASidePanels
- ODRefreshControl
- SDWebImage
- SVProgressHUD
- SVPullToRefresh
- TTTAttributedLabel
- UICKeyChainStore
- WEPopover
※ 表示場所: ご利用ガイド > ラクマについて(WebView)、v1.7.6
フリル
- 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
- Acknaledgement
- AwsCore
- Bolts
- OCHamcrest
- XMLWriter
- Mantle
- XMLDictionary
- UICKeychainStore
- GZip
- Reachability
- OCMock
- AwsMobileAnalytics
- AmazonCognitoSync
- ADJust
- FBSDKCoreKit
- FBSDKLoginKit
- Fabric
- Firebase
- FirebaseAnalytics
- FirebaseInstabseID
- GoogleAnalytics
- GoogleInterchangeUtilities
- GoogleSymbolUtilities
- GoogleUtilities
- Realm
- RealmComponents
- ExportCompliance
- Repro
- TwitterCore
- TwitterKit
- SmartbeatSDK
- PLCrashReporter
※ 表示場所: iOS設定画面、v1.4.0
ブクマ
- Acknolegements
- Alamofire
- AppsFlyerFramework
- Bolts
- CollectionViewWaterFallLayout
- Crashlytics
- FBAudienceneNetwork
- FBSDKCoreKit
- FBSDKLoginKit
- FBMessengerShareKit
- FBSDKShareKit
- FMDB
- Fabric
- Firebase
- FirebaseAnalytics
- FirebaseCore
- FirebaseInstanceID
- FirebaseMessaging
- FrameAccessor
- GLDTween
- 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
メルカリカウル
- 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