本記事は[KIT AppDeveloper Advent Calendar 2015]の5日目の記事です。
普段iOS,Androidのコードを開発することが多く、話題になっているモバイルデータベースについて書きます。
iOSとAndroid標準のデータベースは取っ掛かりにくい
iOS:CoreData, Android:SQLiteと標準のデータベースがありますが、プログラミング初心者からすると何かと取っ掛かりにくいと思います。
そこでCoreData,SQLiteよりもっと簡単かつ高速なデータベースが話題になっています。
今話題のモバイルデータベースRealm
Realm
Realm meetup 忘年会 + LT大会があったり、盛んに開発が行われています。
まだバージョンが1.0になっていないため、バージョンアップ時に記述方法が変わったりもしますがより使いやすくなっていくと思います。
RealmはObjective-C,Swift,Javaの各言語をサポートしていて、iOS,Androidでコードが似ています。
そのため、Android版をすでに作っていてiOS版も作ってみたい(またはその逆)時に手軽に開発することができます。
デモ
iOS | Android |
---|---|
簡単なサンプルコード
Userというモデルと、その追加・取得についてのサンプルコードを書いています。
下記のコードを見ると、iOS,Androidでのコードが似ていることがわかると思います。
Userモデル
iOS
class User: Object {
dynamic var id = 0
dynamic var name = ""
override static func primaryKey() -> String? {
return "id"
}
}
Android
public class User extends RealmObject {
@PrimaryKey
private int id;
private String name;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
Userの追加
iOS
let user = User()
user.id = 1
user.name = "hoge"
let realm = try! Realm()
try! realm.write {
realm.add(user)
}
Android
User user = new User();
user.setId(1);
user.setName("hoge");
Realm realm = Realm.getInstance(this);
realm.beginTransaction();
realm.copyToRealm(user);
realm.commitTransaction();
Userの全取得
iOS
let realm = try! Realm()
let result = realm.objects(User)
Android
Realm realm = Realm.getInstance(this);
RealmResults<User> result = realm.where(User.class).findAll