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
セクションのminSdkVersion
を22
にします。
今回検証したプロジェクトのbuild.gradleファイルのandroid
セクション全体を示します。minSdkVersion
以外は、変更していませんが、compileOptions
やkotlinOptions
のバージョンに注意してください。
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)を開きます。
アプリケーションのパッケージ以下のfilesに下記のように作成したデータベース(フォルダー)を確認することができます。
最後に
本稿では、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については、日本語で読むことができるまとまった情報として、次の拙著を紹介させていただきます。
Author And Source
この問題について(Kotlinアプリケーション開発に、NoSQLドキュメント指向モバイルデータベースCouchbase Liteを使ってみる), 我々は、より多くの情報をここで見つけました https://qiita.com/yoshiyuki_kono/items/7755eb41c9fccd712c47著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .