Realm meetup #3 に参加しました

モバイル向け DB である Realm のミートアップイベントに参加しました。初回は私も発表しました。

3 回目の今回は、日本で Realm の開発をされている岸川さんから近況のアップデート報告があり、 3 件の iOS 側での利用事例がありました。

今回から、発表の内容に関してはビデオ撮影が行われていて、後ほど掲載されることになっているそうです。

Realm を使っていてハマるところとして、

  1. マルチスレッド
  2. マイグレーション
  3. nil / null の扱い

が異口同音に挙げられていました。マルチスレッドの問題に関しては下にどんなことなのかを書きます。マイグレーションに関してはこれまでに使ったことがないので、実感値は伴っていないですが、大変さが伝わってきました。 nil / null に関しては GitHub 上で Work In Progress の Pull Request が進んでいるそうです。

発表の内容を聞いていて、実際にマーケットにリリースされているアプリでの Realm 利用事例が増えてきているなと感じました。

 マルチスレッドに関して

Realm は 2015/05/21 現在、スレッドを飛び越えることができません。 Java のコードで示すと、

public class MyModel extends RealmObject {
  @PrimaryKey private long id;
  @Index  private String name;
  // Getter / Setter は省略
}

こういうモデルオブジェクトがあった場合、

// 実際には Transaction の中でオブジェクトを生成する
MyModel model = realm.createObject(MyModel.class);
new Thread(() -> {
  Log.d(TAG, model.getName());
}).start();

インスタンスとして作られたモデルオブジェクトを、別のスレッドに渡すことができません。別のスレッドの中で Realm オブジェクトを取得し直して、クエリを発行してモデルオブジェクトを取得します。

※ モデルオブジェクトだけでなく、 Realm オブジェクトも渡せません。

スレッド間の受け渡しに関しては、今後の対応予定に入っているそうなので楽しみに待っていたいですね :)

 
4
Kudos
 
4
Kudos

Now read this

Earin レビュー

昨年の夏に Kickstarter で資金調達を開始して話題になった、左右独立のワイヤレスイヤホン Earin がいよいよ到着しました。 順調にいけば今年の頭には出荷される予定でしたが、ハードウェアスタートアップならではの様々な遅延があって、 10 ヶ月遅れて届きました。 Earin を知ったのは Engadget の記事で、ここには 現在は完全に稼働するプロトタイプが完成した段階。またすでにサプライチェーンの確保やEMSの選定までを済ませており とあったので、... Continue →