Kotlinアプリケーション開発に、NoSQLドキュメント指向モバイルデータベースCouchbase Liteを使ってみる


はじめに

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

本稿では、Couchbase Lite 3.0.0ベータ版をKotlinアプリケーションで利用する際の動作確認までを行います。

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

確認環境

  • macOS Catalina Version 10.15.7
  • Android Studio 4.1.3

実行手順

プロジェクト作成・Couchbase Liteインストール

Android Studioで新しい「Empty Activity(空のアクティビティ)」プロジェクトを作成します

build.gradleファイル編集

新しく作成したプロジェクトで、アプリケーションレベルのbuild.gradleファイルを編集します。

androidセクション

androidセクションのminSdkVersion22にします。

今回検証したプロジェクトのbuild.gradleファイルのandroidセクション全体を示します。minSdkVersion以外は、変更していませんが、compileOptionskotlinOptionsのバージョンに注意してください。

android {
    compileSdkVersion 30
    buildToolsVersion "30.0.3"

    defaultConfig {
        applicationId "com.example.cbl_kotlin"
        minSdkVersion 22
        targetSdkVersion 30
        versionCode 1
        versionName "1.0"

        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
    kotlinOptions {
        jvmTarget = '1.8'
    }

}

repositoriesセクション

repositoriesセクションに以下を含めます。

repositories {
  maven { url 'https://mobile.maven.couchbase.com/maven2/dev/' }

//   ... 省略
}

dependenciesセクション

dependenciesセクションに以下を含めます。

dependencies {

  implementation 'com.couchbase.lite:couchbase-lite-android-ee-ktx:3.0.0-beta02'

//   ... 省略
}

以上の変更を加えた後に、プロジェクトをビルドすると、Couchbase Liteがプロジェクトにプルダウンされます。

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

MainActivityファイル編集

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

import android.content.Context
import android.util.Log
import com.couchbase.lite.*

MainActivityクラスを以下のように編集します。

class MainActivity : AppCompatActivity() {

    private var TAG = "CBL-TEST"
    private var cntx: Context = this

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        // Couchbase Lite 初期化
        CouchbaseLite.init(cntx)
        Log.i(TAG,"Couchbase Lite 初期化完了")

        // データベース作成
        Log.i(TAG, "データベース作成開始")
        val cfg = DatabaseConfigurationFactory.create()
        val database = Database("kotlindb", cfg)

        val docId = "test"

        // ドキュメント作成
        var mutableDoc = MutableDocument(docId).setString("type", "user")

        // ドキュメント保存
        database.save(mutableDoc)

        // ドキュメント取得、変更、保存
        mutableDoc = database.getDocument(docId)!!.toMutable().setString("name", "田中")
        database.save(mutableDoc)


        // ドキュメント取得、ログ出力
        val document = database.getDocument(docId)!!
        Log.i(TAG, "ドキュメントID : ${document.id}")
        Log.i(TAG, "名前 : ${document.getString("name")}")

        // クエリ
        val rs = QueryBuilder.select(SelectResult.all())
                .from(DataSource.database(database))
                .where(Expression.property("type").equalTo(Expression.string("user")))
                .execute()
        Log.i(TAG, "ドキュメント数 : ${rs.allResults().size}")

    }

}

ビルドし、エミュレーターで実行します。

ログ

logcatウィンドウに以下のようなログが表示されます。

データベースファイル

メニューから、Device File Explore(View > Tool Window > Device File Explore)を開きます。

「Name」セクションのdata > dataを開きます。

アプリケーションのパッケージ以下のfilesに下記のように作成したデータベース(フォルダー)を確認することができます。

image.png

最後に

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

Couchbase Liteについての記事を以下の投稿で整理していますので、ご関心に応じて、参照してみてください。

Kotlinについては、まず今年2021年に発表されたビデオを紹介します。

Kotolinではなく、Android Javaが利用されていますが、Couchbase Liteを用いた以下のようなチュートリアルが存在します。

こちらも、Kotolinではなく、Android Javaが利用されていますが、サンプルアプリケーションを動作させる環境の構築を通じて、Couchbase Lite利用のみではなく、Couchbase Serverとのデータ同期までをカバーした、以下のチュートリアルがあります。

上記のチュートリアルの内容をベースに日本語化したものを下記で確認いただけます。

Kotlinを使ったチュートリアルとして、Couchbase Liteではなく、Couchbase Serverとの連携を扱ったものとして以下があります。

本稿で扱っていない、Couchbase Serverについては、日本語で読むことができるまとまった情報として、次の拙著を紹介させていただきます。