BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース Realm、10億ユーザーおよび10万アクティブ開発者を達成、バージョン1.0をリリース

Realm、10億ユーザーおよび10万アクティブ開発者を達成、バージョン1.0をリリース

原文(投稿日:2016/05/30)へのリンク

RealmがiOSおよびAndroidのためのオブジェクト指向データベースのバージョン1.0をリリースした。

Realmは2年前にローンチされ、SQLiteやCore Dataのようなオンデバイスの技術を使うよりも、もっと簡単で高性能な代替を提供しようとしている。

Realmの技術チームはInfoQに対し、最新リリースで注目すべき変更として、クエリ言語の改善があると述べた。部分文字列マッチ、リレーションシップのトラバーサル、マルチフィールドソート、distinctマッチをサポートする。これは他の改善にもつながっている。Androidライブラリのフットプリントは70%まで削減され、顧客に提供するアプリのサイズを小さくできる。そして、Realm Configurationクラスの導入は、複数のRealmを持つアプリが増えるのに役に立つ。

.NET開発者のためのリアクティブデータベース、Realm Xamarinのローンチに続いて、Realm 1.0のChangelogは、次のようなサポートについて言及している。

  • AppleのSwift言語、Realm Swiftによる
  • Carthage、Swiftの依存管理マネージャ
  • AppleのwatchOSとtvOS
  • Android上のRxJava
  • Kotlin、Androidアプリ開発のための新しい言語

ブログ記事「13,949 Commits and 6,148 Closed Issues Later: Thank You for Helping Realm Reach 1.0」で、Realmチームは次のようなJavaインラインコードを紹介している。



// Define you model class by extending RealmObject
public class Dog extends RealmObject {
    private String name;
    private int age;

    // ... Generated getters and setters ...
}

public class Person extends RealmObject {
    @PrimaryKey
    private long id;
    private String name;
    private RealmList<Dog> dogs; // Declare one-to-many relationships

    public Person(long id, String name) {
        this.id = id;
        this.name = name;
    }

    // ... Generated getters and setters ...
}

// Use them like regular java objects
Dog dog = new Dog();
dog.setName("Rex");
dog.setAge(1);

// Create a RealmConfiguration that saves the Realm file in the app's "files" directory.
RealmConfiguration realmConfig = new RealmConfiguration.Builder(context).build();
Realm.setDefaultConfiguration(realmConfig);

// Get a Realm instance for this thread
Realm realm = Realm.getDefaultInstance();

// Query Realm for all dogs younger than 2 years old
final RealmResults<Dog> puppies = realm.where(Dog.class).lessThan("age", 2).findAll();
puppies.size(); // => 0 because no dogs have been added to the Realm yet

// Persist your data in a transaction
realm.beginTransaction();
final Dog managedDog = realm.copyToRealm(dog); // Persist unmanaged objects
Person person = realm.createObject(Person.class); // Create managed objects directly
person.getDogs().add(managedDog);
realm.commitTransaction();

// Listeners will be notified when data changes
puppies.addChangeListener(new RealmChangeListener<RealmResults<Dog>>() {
    @Override
    public void onChange(RealmResults<Dog> results) {
        // Query results are updated in real time
        puppies.size(); // => 1
    }
});

// Asynchronously update objects on a background thread
realm.executeTransactionAsync(new Realm.Transaction() {
    @Override
    public void execute(Realm bgRealm) {
        Dog dog = bgRealm.where(Dog.class).equals("age", 1).findFirst();
        dog.setAge(3);
    }
}, new Realm.Transaction.OnSuccess() {
    @Override
    public void onSuccess() {
      // Original queries and Realm objects are automatically updated.
      puppies.size(); // => 0 because there are no more puppies younger than 2 years old
      managedDog.getAge();   // => 3 the dogs age is updated
    }
});

Hacker NewsにおけるRealm 1.0に関するディスカッションで、今回のメジャーリリースは肯定的に受け取られているようだ。多くのユーザーが賛辞と祝福の言葉を述べている。Realmのクローズドソースである「core」にまつわるディスカッションで、ユーザーのmahyarm氏はRealm FAQから次のように引用した。

コードに「core」の参照があります。これは何ですか?

coreは内部C++ストレージエンジンのことを指しています。今のところオープンソースではありませんが、きれいにして、名前を変え、内部の主要な機能が完成したら、Apache 2.0ライセンスでオープンソース化するつもりです。それまでは、そのバイナリリリースをRealm Core (TightDB) Binary Licenseのもと利用できます。

またRealmは、1.0のリリースと合わせて、それを利用したiOSおよびAndroidアプリで10億エンドユーザー越えのマイルストーン達成について報告している。

ニュースにコメントして、RealmのCEO Alexander Stigsen氏は、「その急速な成長と、Realmを使ってモバイルインフラを支えている会社のレベルに、ワクワクしています。10億エンドユーザー(ほとんどの会社が到達していないマイルストーン)を達成したことは、モバイルデータストレージに対する私たちのイノベーティブなアプローチの需要を証明するものです。

 
 

Rate this Article

Relevance
Style
 
 

この記事に星をつける

おすすめ度
スタイル

BT