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

Samsung Galaxy S7 レビュー

MWC で発表されてから欲しいと思っていた Samsung Galaxy S7 を買いました。購入元は 1ShopMobile です。しばらくは Gold モデルしか無かったのですが、巡回中に全色在庫が復活したのを見て、そのまま Black Onyx をポチりました。 1. ハードウェア デザインは前作 Galaxy S6 から大きく変わっていませんが、カメラの出っ張りが小さくなり、 micro SD カード対応が復活し、IP68 の防水・防塵まで付いています。... Continue →