Help us understand the problem. What is going on with this article?

iOS,Android共通で使えるデータベースRealm

More than 1 year has passed since last update.

本記事は[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
iOS Android

簡単なサンプルコード

Userというモデルと、その追加・取得についてのサンプルコードを書いています。
下記のコードを見ると、iOS,Androidでのコードが似ていることがわかると思います。

Userモデル

iOS

User.swift
class User: Object {

    dynamic var id = 0
    dynamic var name = ""

    override static func primaryKey() -> String? {
        return "id"
    }

}

Android

User.java
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

ViewController.swift
let user = User()
user.id = 1
user.name = "hoge"

let realm = try! Realm()
try! realm.write {
    realm.add(user)
}

Android

MainActivity.java
User user = new User();
user.setId(1);
user.setName("hoge");

Realm realm = Realm.getInstance(this);
realm.beginTransaction();
realm.copyToRealm(user);
realm.commitTransaction();

Userの全取得

iOS

ViewController.swift
let realm = try! Realm()
let result = realm.objects(User)

Android

MainActivity.java
Realm realm = Realm.getInstance(this);
RealmResults<User> result = realm.where(User.class).findAll
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away