MongoDB Realmを利用したCRUD機能を実装しよう

2022年8月4日(木)
柴田 凌輔由井 秀弥三又 優人

編集機能

・編集画面のレイアウト

編集画面のレイアウトは、Resources/layout配下にあるedit.xmlファイルに定義されています。

【参照】https://gitlab.com/creationline/mongodb-realm-mobileapp/-/blob/Chapter8/SampleApp/Resources/layout/edit.xml

・編集フラグメント

プロジェクト直下のEditFragment.csは商品情報の編集と削除を行うためのコードです。

【参照】https://gitlab.com/creationline/mongodb-realm-mobileapp/-/blob/Chapter8/SampleApp/EditFragment.csl

・更新ボタンのクリックイベント

ApplyInventory関数では、まずFindメソッドを使用して編集する対象となるドキュメントのIdと一致するRealmObjectを取得しています。

Inventory inventory = publicRealm.Find<Inventory>(primaryKey:
    ObjectId.Parse(base.Arguments.GetString("mongo_id")));

次に、RealmObjectの内容を編集しています。

publicRealm.Write(() =>
{
    inventory.Item = itemText.Text;
    inventory.Price = price;
    inventory.DiscountRate = discount;
    inventory.Timestamp = DateTimeOffset.Now;
});

削除機能

削除機能はEditFragment.csで実装しています。また、レイアウトは編集画面と同じものを使用します。

・削除ボタンのクリックイベント

DeleteInventory関数では、Findメソッドで取得したRealmObjectをRemoveメソッドに渡すことでローカルのRealmデータベースからドキュメントを削除します。

Inventory inventory = publicRealm.Find<Inventory>(primaryKey:     
                                               ObjectId.Parse(base.Arguments.GetString("mongo_id")));

publicRealm.Write(() => publicRealm.Remove(inventory));

動作確認

まず、MainActivity.csにあるApp.Create関数の引数が個人のAPP-IDになっていることを確認してください。

realmApp = App.Create("sampleapp-xxxxx");

次に、Visual Studioのメニューバーから [デバッグ] - [デバッグの開始] をクリックするとAndroid Emulatorが起動します。管理者ユーザーでログインすると以下のようなトップ画面が表示されます。

始めに、追加機能を試してみます。トップ画面から [追加] ボタンをクリックすると以下の画面に遷移します。各項目に値を入力してみましょう。入力が終わったら [追加] ボタンをクリックします。

以下のようなポップアップが表示されるので [OK] をクリックします。

トップ画面に遷移するので、商品が追加されているのを確認します。

ここで、MongoDB Atlasとの同期についても確認してみましょう。MongoDB Cloudのポータルサイトから [Atlas] タブを開き、“CreationlineCluster”にある[Browse Collections] を開いてみましょう。[Collections] を開くと“todo”内に“Inventory”が作成されています。ここに、モバイルアプリから追加した商品情報が表示されていれば、同期に成功しています。

次に、編集機能を試してみます。先ほど追加した商品の欄をクリックすると、以下の画面に遷移します。今回は定価を変更してみます。入力が終わったら [更新] ボタンをクリックします。

以下のようなポップアップが表示されるので [OK] をクリックします。

トップ画面に遷移するので、商品の定価と最終更新日時が更新されているのを確認します。

MongoDB Atlasのドキュメントも更新できていれば成功です。

最後に、削除機能を試してみます。先ほどと同様に商品欄をクリックして編集画面に移動し、[削除] ボタンをクリックします。すると、以下のような削除確認用のポップアップが表示されるので [YES] ボタンをクリックします。

商品情報が正常に削除されると、以下のようなポップアップが表示されるので [OK] をクリックします。

トップ画面に遷移するので、商品が削除されているのを確認します。

MongoDB Atlasからもドキュメントが削除されていれば成功です。

おわりに

今回は、MongoDB Realmを使用してCRUD機能を実装し、実際にモバイルアプリケーションから商品情報の読み取り、追加、編集、削除を行う仕組みを紹介しました。

次回は、一般ユーザー(消費者)が、商品情報を参照できる機能を実装する予定です。お楽しみに!

クリエーションライン株式会社 Exploratory Development & Incubation Team
22年度卒の新卒エンジニア。大学時代の先輩に憧れ、アジャイルの精神を持ったクラウドネイティブエンジニアになるために日々勉強中。趣味は珈琲を淹れること。不定期に会社内の懇親会で披露することも。
クリエーションライン株式会社 Exploratory Development & Incubation Team
22年度卒の新卒エンジニア。学生時代は災害援助ロボットの研究をする傍ら、2020年9月からアルバイトとしてIoT教材の作成に従事。最近はAzureの資格をとるために奮闘中。趣味はドライブで、温泉巡りをしています。
クリエーションライン株式会社 Exploratory Development & Incubation Team
22年度卒の新卒エンジニア。大学は経済学部だが、新しいものが好きで、これからの時代を切り開いていくITの世界に興味を持った。未経験からC#やLinuxなどの技術的な研修を経て、エンジニアとしての一歩を踏み出した。趣味はポーカーで最近の夢はWorld Series of Pokerに出場すること。

連載バックナンバー

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています