C#アプリケーション開発に、NoSQLドキュメント指向組み込みデータベースCouchbase Liteを使ってみる

## はじめに

本稿では、C#アプリケーション開発に、NoSQLドキュメント指向組み込みデータベース Couchbase Liteを使うための具体的な方法について解説します。

本稿では、Couchbase LiteをC#アプリケーション開発で利用するためのセットアップ・動作確認までを行います。

Couchbase Liteをアプリケーション開発に利用する意義については、以下の記事をご参考ください。

https://qiita.com/yoshiyuki_kono/items/3abd5e32801060a449d2

### 確認環境

- macOS Catalina Version 10.15.7
- Visual Studio for Mac COMMUNITY 8.8.3

## 実行手順

### プロジェクト作成

今回は、C#プログラミングでCouchbase Liteを使う方法を簡潔に示すため、コンソールアプリとしてプロジェクトを作成します。

対象のフレームワークとしては、「.NET5.0」を選んでいます。

![MUUZDV-AFPYG-UADORA.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/176567/6783ac20-c2a0-bafa-ada4-7b7957205ecd.png)
￼
##

メニューから、プロジェクト > 「NuGetパッケージの管理...」を開きます。

右上の「検索」フォームに「couchbase」と入力し、表示された項目から今回は、「Couchbase.Lite」を選びます（コミュニティエディションにあたります。商用利用の場合は、「Couchbase.Lite.Enterprise」を選択することになります）。

また、バージョンとして、最新の安定版である、2.8.6を選択します。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/176567/6a3eada8-68cd-141d-cd06-0e9117e9eaf1.png)

「パッケージの追加」ボタンを押下し進めていくと、下記のように、Couchbase.Liteが依存関係に追加されます。

![Microsoft.NETCore.App (5.0.0).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/176567/7ddccc55-94de-f0e7-b409-ede0d0237ffc.png)
￼

## プログラミング・実行結果確認


### Program.cs編集

インポート文として、下記を追加します。

```csharp
using Couchbase.Lite;
```

`Main`の内容を以下のように編集します。

```csharp
        static void Main(string[] args)
        {
            Console.WriteLine("Hello World!");

            // データベース利用開始 (存在しない場合は、新規作成)
            var database = new Database("mydb");
            // ドキュメント作成・保存
            string id = null;
            using (var mutableDoc = new MutableDocument())
            {
                mutableDoc.SetFloat("version", 2.0f)
                    .SetString("type", "SDK");

                database.Save(mutableDoc);
                id = mutableDoc.Id;
            }

            // ドキュメント取得・更新
            using (var doc = database.GetDocument(id))
            using (var mutableDoc = doc.ToMutable())
            {
                mutableDoc.SetString("language", "C#");
                database.Save(mutableDoc);

                using (var docAgain = database.GetDocument(id))
                {
                    Console.WriteLine($"Document ID :: {docAgain.Id}");
                    Console.WriteLine($"Learning {docAgain.GetString("language")}");
                }
            }

        }
```

ビルドして実行します。下記のようにドキュメントIDとプロパティがコンソールに出力されます。

![Hello World!.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/176567/e5e85b84-06e3-9ae6-9b8b-c47984f4d325.png)
￼
### データベースファイル

下記のように作成されたデータベースを確認することができます。

```shell
$ find bin -name "*.cblite2"
bin/Debug/net5.0/CouchbaseLite/mydb.cblite2
```
## 最後に

本稿では、C#アプリケーション開発のために、プロジェクトにCouchbase Liteをセットアップし、基本的な操作が行えるところの確認までを行いました。
C#アプリケーション開発に組み込みデータベースを使った経験のある方であれば、以降の応用は、比較的簡単に可能かと思います。
最後に、次のステップに進むための情報を示して、本稿の締め括りとしたいと思います。

Couchbase Liteについての記事を以下の投稿で整理していますので、ご関心に応じて、参照してみてください。
https://qiita.com/yoshiyuki_kono/items/6a5bbad1b02196a25417

公式ドキュメントは、以下になります。

https://docs.couchbase.com/couchbase-lite/current/csharp/quickstart.html

公式ドキュメントの一部として、各種チュートリアルが公開されています。


https://docs.couchbase.com/tutorials/mobile-travel-sample/csharp/installation/travel-mobile-app.html

https://docs.couchbase.com/tutorials/session-storage/aspnet.html

https://docs.couchbase.com/userprofile-couchbase-mobile/standalone/userprofile/xamarin/userprofile_basic.html

Couchbase Liteと双方向のデータ同期が可能なCouchbase Serverについては、日本語で読むことができるまとまった情報として、次の拙著を紹介させていただきます。

https://www.amazon.co.jp/-/en/%E6%B2%B3%E9%87%8E-%E6%B3%B0%E5%B9%B8/dp/429560030X/ref=tmm_pap_swatch_0?_encoding=UTF8&qid=1636588872&sr=1-1

## 関連情報

今回の記事の一次参考情報を、以下示します。

https://docs.couchbase.com/couchbase-lite/current/csharp/gs-install.html

https://docs.couchbase.com/couchbase-lite/3.0/csharp/gs-build.html