MIKAZUKI 開発者ブログ

MIKAZUKI で開発を進める上で見つけた気づきやノウハウをお伝えするテックブログです。

Realmを用いて合コンで活躍するアプリを開発した

今日の話

Realm使いやすい!おすすめ!ってはなしと合コンでは是非我々のアプリ使ってって話

Realmとは

CoreDataやSQLiteに変わる次世代Mobileデータベースです。

Realm is a mobile database: a replacement for SQLite & Core Data

メリット

  • Androidに対応していること→i/A際を意識せずDB設計できること
  • SQLiteより速いらしい
  • PrimaryKeyがある。
  • NSManagedObjectContextなしでオブジェクトが生成できる。
  • RLMResultsが良い
    • NSPredicate、NSCompoundPredicateを利用してクエリを作れる
  • RealmBrowserでDBをGUIで確認できる

デメリット

  • オートインクリメントがない
  • FetchRequestが弱い→limitとかない

導入方法

Podfile内に下記を追記 pod install

pod 'RealmSwift'

#Objective-Cなら
pod 'Realm'

使い方

モデル定義

class Person: Object {
   // オプショナル使える
   dynamic var name: String? = nil
   dynamic var id = 0

  //数値をオプショナルで扱う場合はRealmOptionalでラップする
  let age = RealmOptional<Int>()

  //プライマリーキーの設定も可能
  override static func primaryKey() -> String? {
    return "id"
  }
}

CREATE

//Realmオブジェクト作って、write使って書き込む
let realm = try! Realm()
try! realm.write() {
    //オブジェクト生成
    var person = realm.create(Person.self, value: ["Jane", 27])
    //プロパティの設定
    person.age.value = 28
}

READ

let realm = try! Realm()
// 文字列で検索条件を指定します
var tanDogs = realm.objects(Dog).filter("color = 'tan' AND name BEGINSWITH 'B'")
//Result型で返ってくるので、ここからまたフィルタリングできる

let predicate = NSPredicate(format: "name CONTAINS %@", "C")
let tanDogs2 = tanDogs.objects(Dog).filter(predicate)

UPDATE

// 1.トランザクションを開始して、オブジェクトを更新する
try! realm.write {
  author.name = "Thomas Pynchon"
}


// 2.プライマリーキー設定している時
// 以前に保存したものと同じプライマリキーを持つBookオブジェクトを作成する
let cheeseBook = Book()
cheeseBook.title = "Cheese recipes"
cheeseBook.price = 9000
cheeseBook.id = 1

// id = 1のBookオブジェクトの値を更新する
// ここでid = 1のBookオブジェクトがRealmに保存されていない場合は、新しいBookオブジェクトが追加されます。
try! realm.write {
  realm.add(cheeseBook, update: true)
}

→プライマリーキーを設定したが、なぜかエラーが出てアップデートできなかった。 そのため、1案を採用

DELETE

// トランザクションを開始してオブジェクトを削除します
try! realm.write {
  realm.delete(cheeseBook)
}

// Realmに保存されているすべてのオブジェクトを削除します。
try! realm.write {
  realm.deleteAll()
}

Realmまとめ

  • NSManagedObjectContextとか使わないで、CRUDできるのでCoreDataなどに比べて初期導入コストが低い
  • i/A差異が生まれないので、DB定義書を一つで管理できる→保守運用を考えるとかなりありがたい

フィーリングマッチについて

合コンをした際、「あの子は誰が好きなんだろー?知りたいなー」とか必ず思うと思います。 フィーリングマッチはその欲望を叶えます。

フィーリングマッチ

フィーリングマッチ

  • Ishibe Tatsuya
  • ゲーム
  • 無料

使い方

f:id:mikazuki-ttp:20151109134249j:plain

  1. 合コンの参加者を登録します。

f:id:mikazuki-ttp:20151109134259j:plain

2.意中の相手を選びます。

f:id:mikazuki-ttp:20151109134329j:plain

3.結果を見ます

f:id:mikazuki-ttp:20151109134338j:plain f:id:mikazuki-ttp:20151109134345j:plain

マッチング相手は完全に非公開

誰と誰がマッチングしたかは非公開です。
何組マッチングしたかだけ知ることができます。
そこからはお酒を飲みながら、探りあいましょう



いかがでしょうか?
操作も簡単、プライバシーも守ります。
飲み会が盛り上がること間違いなし!!!