はじめに
本稿では、Swiftアプリケーション開発に、NoSQLドキュメント指向モバイルデータベース Couchbase Liteを使うための具体的な方法について解説します。
本稿では、Couchbase Lite 3.0.0ベータ版をSwiftアプリケーションで利用する際の動作確認までを解説します。
Couchbaseをモバイルアプリケーションで利用する意義については、以下の記事をご参考ください。
確認環境
- macOS Catalina Version 10.15.7
- Xcode Version 12.4
実行手順
プロジェクト作成・Couchbase Liteインストール
本稿では、Swiftパッケージマネージャーを使用して、Couchbase Liteをセットアップする手順を紹介します(Swiftパッケージマネージャーを使用してCouchbaseLiteSwiftをインストールするにはXcode12 +が必要です)。
Xcodeで、新しいプロジェクトを作成します:File > New > Project
今回は、「SwiftUI」ではなく、「UIKit」を使います。

下記のように、Swift Packages画面を表示します。

「+」アイコンを押下し、「Choose Package Repository」ダイアログを表示します。
入力欄に次のURLを入力します。
https://github.com/couchbase/couchbase-lite-swift-ee.git
「Next」ボタンを押下します。

「Choose Package Options」ダイアログが表示されます。
下記のように「Version」入力欄に、3.0.0-beta02
と入力します。
「Next」ボタンを押下します。
パッケージ追加が始まります。
下記のように、「CouchbaseLiteSwift」パッケージが表示されます。チェックし、「Finish」ボタンを押下します。

下記のように、「CouchbaseLiteSwift」パッケージがプロジェクトに登録されます。
追加されたパッケージの名前、バージョン、URLが表示されています。
これで、CouchbaseLiteSwiftをインポートして、アプリで使用できます。
プログラミング・実行結果確認
ソースコード編集
今回は、稼働確認のため、ViewController.swiftを以下のように編集しました。
import UIKit
import CouchbaseLiteSwift
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
getStarted(testReplication: false)
}
func getStarted (testReplication: Bool) {
// データベース作成または取得(再実行時)
let database: Database
do {
database = try Database(name: "mydb")
} catch {
fatalError("Error opening database")
}
// ドキュメント作成
let mutableDoc = MutableDocument()
.setString("user", forKey: "type")
// ドキュメント保存
do {
try database.saveDocument(mutableDoc)
} catch {
fatalError("Error saving document")
}
// ドキュメント取得、変更、保存
if let mutableDoc = database.document(withID: mutableDoc.id)?.toMutable() {
mutableDoc.setString("田中", forKey: "name")
do {
try database.saveDocument(mutableDoc)
let document = database.document(withID: mutableDoc.id)!
print("ドキュメント更新完了 - ドキュメントID: \(document.id), 名前: \(document.string(forKey: "name")!)")
} catch {
fatalError("Error updating document")
}
}
// クエリ
print("クエリ実行")
let query = QueryBuilder
.select(SelectResult.all())
.from(DataSource.database(database))
.where(Expression.property("type").equalTo(Expression.string("user")))
do {
let result = try query.execute()
print("ドキュメント数 : \(result.allResults().count)")
} catch {
fatalError("Error running the query")
}
}
}
ログ
以下のログが出力されます。
ドキュメント更新完了 - ドキュメントID: -YamrzlmIFovzOXYUp1YWDo, 名前: 田中
クエリ実行
ドキュメント数 : 1
データベースファイル
ターミナルで、作成されたデータベースファイルを確認します。
$ cd ~/Library/Developer/CoreSimulator/Devices
$ find . -name "mydb.cblite2"
./5C245945-C956-495A-B7CB-D646905E95C7/data/Containers/Data/Application/4E0B4959-9D0B-4181-A2E6-F3D3A233D5A9/Library/Application Support/CouchbaseLite/mydb.cblite2
最後に
本稿では、Swiftアプリケーション開発のために、プロジェクトにCouchbase Liteをダウンロードし、基本的な操作が行えるところの確認までを行いました。
モバイルアプリケーション開発に組込データベースを使った経験のある方であれば、以降の応用は、比較的簡単に可能かと思います。
最後に、さらなるステップに進むための情報を示して、本稿の締め括りとしたいと思います。
Couchbase Liteについての記事を以下の投稿で整理していますので、ご関心に応じて、参照してみてください。
本稿の記事の内容(インストール、動作確認)に関する、一次情報として、下記のドキュメントがあります(Swiftパッケージマネージャーを使う以外の方法も説明されています)。
Couchbase Lite(のみを「スタンドアローン」で)を使ったチュートリアルとして、以下が公開されています。
上記チュートリアルからはじめ、さらに進んだトピックとして、「クエリ」、「Couchbase Serverとの同期」、「バックグラウンドでのフェッチ」までがカバーされています。
また、上記とは別に、サンプルアプリケーションを動作させる環境の構築を通じて、Couchbase Serverとのデータ同期をカバーした、以下のチュートリアルがあります。
上述のチュートリアルは、全てCouchbase社によるものでしたが、それとは別に下記のようなチュートリアルも公開されています(こちらも、Couchbase Serverとの同期までをカバーしています)。
本稿で扱っていない、Couchbase Serverについては、日本語で読むことができるまとまった情報として、次の拙著を紹介させていただきます。