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

完全栄養飲料 Comp レビュー

ソイレント ソイレントというアメリカで有名な栄養機能食品があります。人が生きるために必要な栄養素が全て含まれていて、従来の食事の代わりにソイレントを使うことで、食事の手間から解放されるという未来的な商品です。 発売当初は粉末タイプのものが売られていて、自分で粉末を水に溶かして飲むというものだったのが、今ではドリンクタイプのものも併売されているようです。 発表当初からソイレントには興味を持っていました。 というのも、... Continue →