iOS
CoreData
Swift
Realm
RealmSwift


この記事について

RealmとCoreDataの比較についてのメモ。

Realmを賞賛する記事がかなり多いが、CoreDataを使った方が良いというケースはあるのか?と気になり調べてみた。


Realm / CoreDataとは?

iOSアプリを開発するときに使用できる、オブジェクトの永続化を可能にするフレームワーク。

永続化とは: 簡単にいうと、アプリ内のデータを保存して、アプリを終了して再び開いたときに同じデータを使えるようにすること。


結論

色々なリソースを探したが、パフォーマンス的にCoreDataを使った方が良いというケースが全然見当たらない。内容を読んでもRealmの方が圧倒的にメリットが多い。

つまり、これからアプリを開発するのであれば基本的にRealmSwiftを選択しておいて間違いはないと思う。(初学者の場合は尚更)


CoreDataの良いところ

頑張って絞り出しました



  • Appleが直々に開発

  • .xcmodeldataファイルを使ってオブジェクトをXcode内で可視化して管理することができる


  • バージョンを気にする必要が少なく、iOSやXcodeのバージョンアップ後でもすぐに使い始められる

  • CarthageやCocoa Podsを使わずともXcodeのプロジェクトをInitializeするときに簡単にセットアップすることができる

  • 複雑なプロジェクトを作るときに、Realmでカバーできない範囲をカバーできるらしい?(具体的なケースは調査中)

  • Webのリソースが多い

  • 前からあるフレームワークなので、プロダクト内でCoreDataを引きづつき採用している企業は存在しそう


Realmの良いところ


  • とにかく導入がカンタン。ラーニングコストが少なく感覚的に使うことができる。

  • CoreDataよりも処理速度が速い

  • オープンソース、かつドキュメンテーションがしっかりしている

  • 今まで扱いづらかったListクラスが2017/12から実装されて、より使いやすくなった。参考


  • クロスプラットフォーム。iOSとAndroid両方で使うことができる。

  • 結果的にCoreDataでできることはほぼなんでもできる


あとがき

今度、各々の具体的な実装についての記事も書こうと思っています。

このようなケースはCoreDataの方が良い、という事例や間違い等ございましたらご共有、ご指摘いただければ幸いですmm


参考

こちらの記事がとてもわかりやすかったです

- RealmとCoreDataの使い勝手比較 by @mono0926

- Realm Database vs Core Data: What is Best for Android & iOS?