Realm React Native 1.0: Realm Mobile PlatformがReact Nativeをサポートしましたe

本日はReact Nativeコミュニティのみなさまに2つのお知らせをいたします。

1つめのお知らせは、オープンソース化から約1年を経てRealm React Nativeがバージョン1.0となったことです。これは強力なオブジェクトデータベースとしての、そして素晴らしいリアクティブアプリのための基礎としての大きなマイルストーンに到達したことを意味します。そしてもう一つのお知らせは、Realm Mobile Platformのサポート対象にReact Nativeが新たに追加されたということです。Realm React Nativeを利用していただいている開発者の方々には、数行のコードの追加で、新たな機能を利用できるようになります。

昨年Realm React Nativeをベータ版としてリリースしてから今日まで、React NativeのコミュニティやTaskRabbitなどの企業にご利用いてきました。Realmはさまざまなプラットフォームで利用可能なデータベースであるため、コードの優れた再利用性と堅牢性を提供します。また、Realmのライブオブジェクトとコレクション通知は、Realm上のデータ更新に対して真にリアクティブなアプリケーションの開発を可能にします。Realmを使い始めるのはとても簡単です。詳しくはRealm React Nativeのドキュメントを参照してください。

Realmは単なるクライアントサイドで利用可能なデータベースにとどまりません。Realm React Native 1.0のリリースにともない、Realm Mobile Platformの機能を利用して強力なアプリケーションを開発可能になります。Realm Object Serverをつかってデータ同期可能なRealmを作成することで、プロパティの変更は自動的に同期されます。またこれらのデータはオフラインの際も利用できるようローカルにも保持されます。Realm Mobile Platformは単なるデータ同期だけでなく、コンフリクト解決、ユーザー認証、カスタマイズ可能なパーミッションなど複数デバイスにまたがった機能をもつアプリケーションに必要なすべての機能を提供します。

Realm Mobile Platoformのプロフェッショナル版およびエンタープライズ版では、サーバーサイドでもJavaScriptによるリアクティブなコードの記述を可能にするEvent Handling機能が提供されています。これによりコードベース全体でリアクティブ原則を取り入れることが可能になり、いつどこで発生したデータ変更に対しても反応することができます。

既存のReact NativeアプリケーションをRealm Mobile Platoformに統合するのはとても簡単です。ユーザーの認証後Realm Object Serverに接続し、アプリケーションのUIをリアクティブに更新するサンプルコードは以下のようになります。

import React, { Component } from 'react';
import { Text } from 'react-native';
import Realm from 'realm';
import { ListView } from 'realm/react-native';

export default class DogsView extends Component {
    constructor(props) {
        super(props);
        // Initialize the component with an empty data source
        const ds = new ListView.DataSource({rowHasChanged: (r1, r2) => r1 !== r2});
        this.state = { dataSource: ds };
    }

    componentWillMount() {
        // `this.props`はDogsViewでつかうusernameとpasswordを保持しています。
        Realm.Sync.User.login('https://my-realm-server.com', this.props.username, this.props.password, (error, user) => {
            let realm = new Realm({
                schema: [ { name: 'Dog', properties: { name: 'string' } } ],
                sync: { user, url: 'realms://my-realm-server.com/~/dogs'}
            });
            // ログインが完了後、同期を有効化したRealmインスタンスを作成します。
            // Realm内の全Dogオブジェクトを保持するコレクションを取得し、DataSourceを初期化するとともに
            // コレクションにセットしたリスナーでコレクション要素の更新をUIに反映します。
			const dogs = realm.objects('Dog');
            this.setState({ realm, dataSource: this.state.dataSource.cloneWithRows(dogs) });
			dogs.addListener(() => this.forceUpdate());
        });
    }

    render() {
        return (<ListView dataSource={this.state.dataSource} renderRow={(item) => <Text>{item.name}</Text>} />);
    }
}

Realm Mobile Platformを使い始めるには公式ドキュメントを参照してください。オンライン、オフラインに関わらず動作するユーザーに愛されるアプリケーションの開発を始めましょう。

Getting Started with Realm React Native 1.0

To get started using Realm React Native with the Realm Mobile Platform, including realtime sync and more, check out the documentation here!


Realm Team

Realm Team

At Realm, our mission is to help developers build better apps faster. We provide a unique set of tools and platform technologies designed to make it easy for developers to build apps with sophisticated, powerful features — things like realtime collaboration, augmented reality, live data synchronization, offline experiences, messaging, and more.

Everything we build is developed with an eye toward enabling developers for what we believe the mobile internet evolves into — an open network of billions of users and trillions of devices, and realtime interactivity across them all.