Realm」というサービスをご存じでしょうか。Webアプリやモバイルアプリの開発向けプラットフォームとして注目されています。最近はこれに限らず、特にモバイルアプリを開発する際は開発プラットフォームを利用することが増えています。Realmを用いたモバイルアプリ開発について解説していきます。レベル感としては、Webアプリの開発経験はあるがモバイルアプリは未経験の方が理解できるような連載にしていきたいと思っています。Realmの概要について解説します。モバイルアプリの定義と課題モバイルアプリとはモバイルアプリケーションの略で、スマートフォンやタブレットといったモバイル機器上で動くアプリのことを指します。一般的なスマホアプリもモバイルアプリなので、ほとんどの方が使用されたことがあると思います。そのような事情から、本連載はスマートフォン向けのモバイルアプリ開発に特化しています。モバイルアプリはスマートフォン等のデバイスで動作することから、Webアプリではほとんど存在しない独特の課題もあります。インターネットへの接続が不安定なことによるアプリの動作への影響です。Wi-FiからLTEへ切り替わったり、通信が不安定な場所にいる際にアプリが止まってしまったり、動作が重くなるといった経験があるのではないでしょうか。その問題の解決策として「オフラインファースト」で設計するということがあります。オフラインファーストとはインターネットへの接続がない状態でもコア機能が動作することを意味します。設計自体は非常に単純で、次の3点を満たしていることが重要です。ユーザーがオフラインであると想定アプリがオフラインになってもシームレスにコア機能が使用可能データはローカルにキャッシュされ、オンラインになったタイミングで同期このように基本的な設計はシンプルですが、これを1から実装しようとするのは大変です。デバイス側のデータストアをどうするか、データ同期のためにコンフリクトをどのように解消するか、ネットワーク切断時の処理をどうするか等、簡単に考慮事項を挙げるだけでも多くあり、その後のテストも複雑なプロセスが必要になってきます。このことからも分かるように、オフラインファーストに基づいた機能を独自実装しようとすると、それだけで非常に多くの手間がかかります。それでは、どのようにするのが良いでしょうか。このような課題は多くの開発者に共通することなので、それを解決するプラットフォームが提供されています。Realmはその中の1つです。Realmの紹介に入りたいところですが、他にも類似のプラットフォームがあるため、まず、それらを紹介します。モバイルアプリ開発では、例えばユーザー管理機能のように、多くのアプリに共通する機能があります。その際に毎度実装するのは大変なので、各社がモバイルアプリで頻繁に利用される機能をサービスとして提供しています。service)」と呼ばれ、次のような機能を備えているものが多いです。backend」が有名です。Realmについても、公式にmBaaSと称している訳ではありませんが、提供している機能面だけ見ればmBaaS相当であると捉えていただいて問題ありません。Realmの概要について見ていきます。始めに全体像を解説した後、それを構成する3つの要素を解説していきます。Realmを単体で使うことはできません。Cloud」として「Atlas」と「Realm」を提供しています。Atlasは一言で言えばMongoDBのDBaaSです。Database」を提供しています。Realmがあります。複雑な説明になりましたが、これらの3つの要素の関係は下図のようになります。Realmについて、それぞれ詳しく見ていきます。Databaseは、上図のようにモバイルデバイス上で動作します。データの保存・検索・更新を簡単かつ軽量に行うことができます。SDK」を利用することでiOSとAndroidのどちらも対応可能で、言語としてはJava、Kotlin、Swift、Objective-C、C#、Node.js等で開発が可能です。MongoDBのDBaaSであり、アプリで生成された様々なデータを保存しておくことが可能です。Syncの際にはこれを経由して他端末をデータ同期します。Charts」というツールで可視化できます。サーバーとクライアント間、そしてクライアント間のデータ同期とバックエンドの処理を実行します。Sync」と呼ばれる機能があり、これによりデータ同期がバックグラウンドで自動的に行われます。バックエンド処理については、次のような非常に有用な機能があります。以上、3つの要素が連携しあうことにより、端末間でのデータ同期とネットワーク断時の対応を開発者が意識することなく実現します。Cloud」は、元々MongoDB社ではなくRealm社が運営していました。Databaseの特徴は、NoSQLのモバイルデータベースとして軽量かつ高速であり、高い評価を受けていました。MongoDBはドキュメント型としてはデータベースエンジンランキングでNo1の人気があります。Realmを正式にリリースしました。モバイルアプリ開発に使用するツール最後に、モバイルアプリ開発で使用するツールについて簡単に記載します。個々の詳細については、必要に応じて本連載中で補足しますので、ここでは概要だけつかんでいただければと思います。モバイルアプリ本体の開発にはIDEを使用するのが一般的です。Studio」、iOSでは「Xcode」等が有名です。Databaseを利用したい場合には、Realm用のSDKから簡単に行えます。バックエンドで実現したい処理によっては、mBaaSの提供する機能以外が必要になることもあります。そのようなときは独自に実装します。Realmでは「Functions」と呼ばれる機能を使い、Javascriptで記述された処理をバックエンドで実行できます。Realmの概要までを解説しました。Realmの概要に加え、メリットとしては、同期処理を自動で行う、オフラインファースト、各種モバイルアプリ開発に役立つ機能の3つがあることを押さえていただけると、次回以降の内容の理解につながるかと思います。新卒でIoT関連ベンチャー企業に就職し、組み込み系の開発を担当。クリエーションラインに転職後はクラウドエンジニアとしてGCP関連の案件に従事。その後MongoDB、Neo4j、Confluentのアーキテクト兼サポートエンジニアとして、PoC支援〜導入後のサポートまでを担当。Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。ITがお届けするポッドキャストです。