NoSQLドキュメント指向 組み込みデータベースCouchbase Lite 3.0.0 ベータにおけるC/C++サポート


はじめに

この投稿では、Couchbase Lite 3.0.0 ベータにおけるC/C++サポートについて紹介します。

CouchbaseをC/C++アプリケーション用の組み込みデータベースとして利用する意義については、以下の記事をご参考ください。

Couchbase Lite C/C++サポート概要

Couchbase Lite 3.0.0ベータでは、利用環境としてC/C++がサポートされるようになりました。
これにより、これまで以上に活用可能な範囲が広がり、AndroidやiPhoneのようなモバイルアプリケーションや、Javaが利用可能な環境のみでなく、IoT/エッジコンピューティングでの利用要件に応えるものになっています。

サポートプラットフォーム

Couchbase Lite for C 3.0.0ベータは、OSとしてUnix系では、MacOS、Ubuntu 20.04(x86-64、arm64、adm64、armhf)、Debian 9/10(x86-64、arm64、adm64、armhf)の他、Raspberry Pi OS 9/10(arm64、armhf)をサポートしています。

また、Windows, Android, iOSもサポートしており、これらの環境用のアプリケーションをC/C++でプログラミングする際にCouchbase Liteを利用することが可能です。

背景/アーキテクチャー

Couchbase Liteは、2018年にリリースされたバージョン2.0にて、C++を用いて再実装されました。
これにより、Couchbase Liteは、プラットフォームに依存しない共通のコアコンポーネントを持つことになりました。Java、C#、Swift、Objective-C等、各プラットフォームは、それぞれ独自のAPIを提供しますが、それらはC APIを内部で利用しています。

Couchbase Lite C APIは、この2.xアーキテクチャーの直接的な拡張として成立しています。
つまり、クロスプラットフォームに対応するために、Couchbase Lite Coreに付け加えられたアダプターとして実現されています。このアダプターはコアライブラリと静的にリンクされたバイナリとして提供されます。

以下がそのイメージです。

Couchbase LiteをC/C++で利用する価値

リソースフットプリントと実行速度の最適化

開発者は、C/C++を用いて開発することにより、IoT/エッジコンピューティングに求められる、低いリソースフットプリントと実行速度の最大化が図れます。

柔軟性

Cはプログラミング言語の共通語であるため、C APIを他のプログラミング言語と組み合わせて利用することによって、開発プラットフォームや開発手法に幅広い選択肢をもたらすことが考えられます。例えば、開発者は、Python、JavaScript、Rust、Goなどのプログラミング言語を使用しながら、それらの言語のネイティブサポートを活用し、Couchbase Liteを用いたアプリケーションを構築することができます。

クライアントサイドのフィールドレベルの暗号化

Couchbase Lite C APIは、クライアントサイドのフィールドレベルの暗号化という新しい機能をサポートします(
これは、現時点では、他のCouchbase Liteプラットフォームでは利用できず、将来導入される予定の機能です)。

クライアント側の暗号化機能を使用すると、データをCouchbase Serverと同期するクライアントアプリケーションとしてCouchbase Liteを利用する際に、ネットワーク経由で複製するドキュメント内のフィールドを暗号化することができます。そして、正しい暗号化キーにアクセスできるクライアントのみが、データを復号化して読み取ることができます。

このCouchbase Liteのクライアントサイド暗号化は、Couchbase Server SDKのフィールドレベルの暗号化形式と互換性があります。

これによって、バックエンドサーバーへの機密データの安全な転送を有効にし、データにアクセスするための資格情報または特権を持たないアクターに機密データが漏洩しないことを保証することができます。

最後に

本稿では、Couchbase Lite 3.0.0 ベータにおけるC/C++サポートについて紹介しました。

最後に、さらなるステップに進むための情報を示して、本稿の締め括りとしたいと思います。

C/C++による実際の環境設定・コーディング・実行の例として、以下の記事を参照ください。

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

Couchbase LiteをC/C++アプリケーション用の組み込みデータベースとして使う際のメリットのひとつとして、Couchbase Serverとの間での双方向のデータ同期があります。Couchbase Serverについては、日本語で読むことができるまとまった情報として、次の拙著を紹介させていただきます。

関連情報