モバイルアプリケーション開発の基礎と「MongoDB Realm」の概要

竹花 洋明

2021年11月4日 6:30

はじめに

「MongoDB Realm」というサービスをご存じでしょうか。Webアプリやモバイルアプリの開発向けプラットフォームとして注目されています。最近はこれに限らず、特にモバイルアプリを開発する際は開発プラットフォームを利用することが増えています。本連載ではMongoDB Realmを用いたモバイルアプリ開発について解説していきます。

レベル感としては、Webアプリの開発経験はあるがモバイルアプリは未経験の方が理解できるような連載にしていきたいと思っています。そこで第1回となる今回は、モバイルアプリ開発の基礎知識とMongoDB Realmの概要について解説します。

モバイルアプリの定義と課題

モバイルアプリとはモバイルアプリケーションの略で、スマートフォンやタブレットといったモバイル機器上で動くアプリのことを指します。つまり一般的なスマホアプリもモバイルアプリなので、ほとんどの方が使用されたことがあると思います。そのような事情から、本連載はスマートフォン向けのモバイルアプリ開発に特化しています。

モバイルアプリはスマートフォン等のデバイスで動作することから、Webアプリではほとんど存在しない独特の課題もあります。インターネットへの接続が不安定なことによるアプリの動作への影響です。Wi-FiからLTEへ切り替わったり、通信が不安定な場所にいる際にアプリが止まってしまったり、動作が重くなるといった経験があるのではないでしょうか。

その問題の解決策として「オフラインファースト」で設計するということがあります。オフラインファーストとはインターネットへの接続がない状態でもコア機能が動作することを意味します。設計自体は非常に単純で、次の3点を満たしていることが重要です。

  • ユーザーがオフラインであると想定
  • アプリがオフラインになってもシームレスにコア機能が使用可能
  • データはローカルにキャッシュされ、オンラインになったタイミングで同期

このように基本的な設計はシンプルですが、これを1から実装しようとするのは大変です。デバイス側のデータストアをどうするか、データ同期のためにコンフリクトをどのように解消するか、ネットワーク切断時の処理をどうするか等、簡単に考慮事項を挙げるだけでも多くあり、その後のテストも複雑なプロセスが必要になってきます。このことからも分かるように、オフラインファーストに基づいた機能を独自実装しようとすると、それだけで非常に多くの手間がかかります。

それでは、どのようにするのが良いでしょうか。このような課題は多くの開発者に共通することなので、それを解決するプラットフォームが提供されています。MongoDB Realmはその中の1つです。

モバイルアプリの開発プラットフォーム

早速MongoDB Realmの紹介に入りたいところですが、他にも類似のプラットフォームがあるため、まず、それらを紹介します。

モバイルアプリ開発では、例えばユーザー管理機能のように、多くのアプリに共通する機能があります。その際に毎度実装するのは大変なので、各社がモバイルアプリで頻繁に利用される機能をサービスとして提供しています。これは「mBaaS(mobile backend as a service)」と呼ばれ、次のような機能を備えているものが多いです。

  • ユーザー管理
  • プッシュ通知
  • データ管理

具体的に各社が提供するものとしては、AWSでは「AWS Mobile Hub」、GCPでは「Firebase」、Azureでは「Mobile Apps」、国内では「ニフクラ mobile backend」が有名です。MongoDB Realmについても、公式にmBaaSと称している訳ではありませんが、提供している機能面だけ見ればmBaaS相当であると捉えていただいて問題ありません。

MongoDB Realmの特徴

ここで、MongoDB Realmの概要について見ていきます。始めに全体像を解説した後、それを構成する3つの要素を解説していきます。

まず、MongoDB Realmの全体像ですが、全体像と言っても実はMongoDB Realmを単体で使うことはできません。MongoDB社は「MongoDB Cloud」として「Atlas」と「Realm」を提供しています。MongoDB Atlasは一言で言えばMongoDBのDBaaSです。また、モバイルデバイス上で動作するデータベースとして「Realm Database」を提供しています。MongoDB AtlasとRealm Database、およびRealm Databaseの間のデータの同期や、ユーザー管理等のモダンアプリ開発向け機能を提供するクラウドサービスとしてMongoDB Realmがあります。少し複雑な説明になりましたが、これらの3つの要素の関係は下図のようになります。

全体像を把握したところで、構成要素のRealm Database、MongoDB Atlas、MongoDB Realmについて、それぞれ詳しく見ていきます。

Realm Databaseは、上図のようにモバイルデバイス上で動作します。データの保存・検索・更新を簡単かつ軽量に行うことができます。また「Realm SDK」を利用することでiOSとAndroidのどちらも対応可能で、言語としてはJava、Kotlin、Swift、Objective-C、C#、Node.js等で開発が可能です。

次に、MongoDB Atlasです。MongoDBのDBaaSであり、アプリで生成された様々なデータを保存しておくことが可能です。後述するRealm Syncの際にはこれを経由して他端末をデータ同期します。また、保存されたデータは「MongoDB Driver」で分析したり、「MongoDB Charts」というツールで可視化できます。

最後に、MongoDB Realmです。サーバーとクライアント間、そしてクライアント間のデータ同期とバックエンドの処理を実行します。「Realm Sync」と呼ばれる機能があり、これによりデータ同期がバックグラウンドで自動的に行われます。バックエンド処理については、次のような非常に有用な機能があります。

  • ユーザー認証
  • サーバーサイドでの処理
  • イベントトリガーの処理
  • その他権限管理やシークレット機能等

以上、3つの要素が連携しあうことにより、端末間でのデータ同期とネットワーク断時の対応を開発者が意識することなく実現します。

MongoDB Realmの歴史

Realm Database、データ同期エンジン「Realm Platform」、そのPaaSである「Realm Cloud」は、元々MongoDB社ではなくRealm社が運営していました。Realm Databaseの特徴は、NoSQLのモバイルデータベースとして軽量かつ高速であり、高い評価を受けていました。また、MongoDBはドキュメント型としてはデータベースエンジンランキングでNo1の人気があります。

そのような状況下で、MongoDB社が2019年にRealmを買収し、2020年6月にはMongoDB Realmを正式にリリースしました。モバイルデータベースとして非常に優れたRealm Databaseと、ドキュメント型DBとして人気のMongoDBのコラボレーションにより作られた、オフラインファーストのプラットフォームがMongoDB Realmです。

モバイルアプリ開発に使用するツール

最後に、モバイルアプリ開発で使用するツールについて簡単に記載します。個々の詳細については、必要に応じて本連載中で補足しますので、ここでは概要だけつかんでいただければと思います。

モバイルアプリ本体の開発にはIDEを使用するのが一般的です。Androidでは「Android Studio」、iOSでは「Xcode」等が有名です。さらにRealm Databaseを利用したい場合には、Realm用のSDKから簡単に行えます。

バックエンドで実現したい処理によっては、mBaaSの提供する機能以外が必要になることもあります。そのようなときは独自に実装します。例えばMongoDB Realmでは「Functions」と呼ばれる機能を使い、Javascriptで記述された処理をバックエンドで実行できます。

おわりに

ここまで、モバイルアプリケーション開発の基礎とMongoDB Realmの概要までを解説しました。

主にMongoDB Realmの概要に加え、メリットとしては、同期処理を自動で行う、オフラインファースト、各種モバイルアプリ開発に役立つ機能の3つがあることを押さえていただけると、次回以降の内容の理解につながるかと思います。

この記事のキーワード :

人気記事トップ10

人気記事ランキングをもっと見る

企画広告も役立つ情報バッチリ! Sponsored

ClickHouse Cloudが実現した広告運用SaaS「ATOM」のデータ基盤革新、パフォーマンスを向上しながら、運用負荷とコストを削減 11月11日 6:20 AIで開発が加速する時代、品質保証はどう変わる? Tricentisが示すAIエージェント活用の実像 11月9日 6:45 悪用までの猶予が「1分」に迫るフロンティアAI時代に開発と本番を貫く脆弱性管理が必要 10月29日 8:30 欧州CRA対応とSBOM運用。AI生成コードのOSS混入問題の対策とは ――スニペット単位で検出する「FossID」「Insignary Clarity」によるSBOM運用 9月16日 6:40 PostgreSQLからTiDBへ、稼働中SaaSで進める段階的DB移行の実践と再設計への展望 9月7日 6:30 機能安全開発におけるGoogleTestの活用を支援!「Parasoft C/C++test CT」で実現する効率化&AI連携 4月14日 6:30 【CNDW2025】Grafanaが明かす「オブザーバビリティの哲学」ー最小限の労力で実用的なインサイトを得るには 1月23日 6:30 【CNDW2025】プロダクト急増に備える基盤刷新 ーウェルスナビがECSからEKSへの移行で得た知見とは 1月15日 6:30 【CNDW2025】250環境を5人で運用、構築時間は30分に ーKINTOテクノロジーズが語るインフラ基盤組織の作り方 2025年12月18日 6:30 新たな自動化で熱視線! AIエージェントの「推論能力」を支える2つのコンポーネントとは? 2025年11月28日 6:30