Couchbase Mobileアプリケーション開発へのロードマップ

## はじめに

Couchbase　Mobileによるアプリケーション開発に関する記事や参考情報を、カテゴリー別に整理しています。

Couchbase Mobileは、NoSQL組み込みデータベースCouchbase Lite、およびCouchbase ServerとCouchbase Liteとのデータ同期を担うSync Gatewayからなります。

Couchbase Serverについては、次の拙著を紹介させていただきます。

https://www.amazon.co.jp/-/en/%E6%B2%B3%E9%87%8E-%E6%B3%B0%E5%B9%B8-ebook/dp/B09KTRXG7X/ref=sr_1_2?crid=1M9TBPNHHS12Z&keywords=Couchbase&qid=1642992094&s=books&sprefix=couchbase%2Cstripbooks%2C285&sr=1-2


## Why Couchbase Mobile?

そもそも何故、Couchbase Mobileを使ってアプリケーション開発を行うのでしょうか？ここでは、箇条書きでキーワードを記します。

### ニーズ

- モバイルアプリケーション / オフラインファーストアプリケーション
- エッジコンピューティング

### バリュー

- クライアントとサーバーとのデータ同期という典型的な処理に（2014年以来の実績を持つ）信頼性の高い実装を利用することにより、企業はビジネスロジック開発に専念することができる）
- NoSQL/JSONデータ構造による柔軟性：クライアントとサーバーで同一のデータモデルを利用可能
- マルチチャネル：モバイルとWEBアプリケーションで同一のデータを利用
- クロスプラットフォーム：オンプレ、パブリッククラウドで同一のテクノロジーを利用可能
- サーバーとの同期を必要としないモバイルアプリケーションの組み込みデータベースとして利用。JSONドキュメントの格納と、検索を実行可能

## 関連技術動向

#### [モバイルアプリ開発における組み込みNoSQL覚書（MongoDB Realm, Couchbase Lite等）](https://qiita.com/yoshiyuki_kono/items/05496b26e1dc4eb99ddb)

#### [React Nativeで使えるデータベースを比較【2021年12月版】(featuring Couchbase Lite)](https://qiita.com/yoshiyuki_kono/items/bffda8fba33839a3e9aa)

## Couchbase　Mobile紹介

#### [なぜ、Couchbaseなのか?〜モバイル/エッジコンピューティングプラットフォームとしての観点から](https://qiita.com/yoshiyuki_kono/items/3abd5e32801060a449d2)

#### [エッジコンピューティングを実現するCouchbase Mobile紹介：Sync Gatewayによるデータ同期におけるアクセス制御モデル](https://qiita.com/yoshiyuki_kono/items/b9eb6ddae93fc98f4f7b)

#### [エッジコンピューティングを実現するCouchbase Mobile紹介：Sync Gatewayによるデータ同期におけるフィルタリング](https://qiita.com/yoshiyuki_kono/items/5ea23c23c0bf32550d2b)

#### [エッジコンピューティングを実現するCouchbase Mobile紹介：Sync Gatewayによるデータ同期におけるルーティングの柔軟性（Sync関数概要）](https://qiita.com/yoshiyuki_kono/items/c418475ab46bf9505938)


#### [エッジコンピューティングを実現するCouchbase Mobile紹介：Sync Gateway間レプリケーション](https://qiita.com/yoshiyuki_kono/items/ad06b73e580ee0f3b5c5)

## Couchbase Liteを使ってみる

### Android Java

#### [Android Javaアプリケーション開発に、NoSQLドキュメント指向モバイルデータベースCouchbase Liteを使ってみる](https://qiita.com/yoshiyuki_kono/items/fef9051657a423f02fb7)

### Swift

#### [Swifアプリケーション開発に、NoSQLドキュメント指向モバイルデータベースCouchbase Liteを使ってみる](https://qiita.com/yoshiyuki_kono/items/9d9988826014bfc331d3)



### Kotlin

#### [Kotlinアプリケーション開発に、NoSQLドキュメント指向モバイルデータベースCouchbase Liteを使ってみる](https://qiita.com/yoshiyuki_kono/items/7755eb41c9fccd712c47)

### C#/Xamarin

#### [C#アプリケーション開発に、NoSQLドキュメント指向組み込みデータベースCouchbase Liteを使ってみる](https://qiita.com/yoshiyuki_kono/items/a0a9e319aa43e615e5aa)


#### [Xamarinアプリケーション開発に、NoSQLドキュメント指向組み込みデータベースCouchbase Liteを使ってみる](https://qiita.com/yoshiyuki_kono/items/1c60f3a91d483b5ed133)


### Java

### C

#### [Raspberry Piを使ったIoTアプリケーション開発に、NoSQLドキュメント指向組み込みデータベースCouchbase Liteを使ってみる](https://qiita.com/yoshiyuki_kono/items/5606020caffaa88ce678)

#### [NoSQLドキュメント指向 組み込みデータベースCouchbase Lite 3.0.0 ベータにおけるC/C++サポート](https://qiita.com/yoshiyuki_kono/items/e413a6f57a12fe365840)



## Couchbase Lite 機能解説

### データ

#### [Couchbase Lite機能解説：ドキュメントの構造と制約](https://qiita.com/yoshiyuki_kono/items/7c263c1788e2b3ce417f)

### データ操作

#### [Couchbase Lite機能解説：ドキュメントデータモデル](https://qiita.com/yoshiyuki_kono/items/ea89837972ad1a50ec60)

#### [Couchbase Lite機能解説：データベースの使い方](https://qiita.com/yoshiyuki_kono/items/b24266297c4b53017264)

#### [Couchbase Lite機能解説：添付ファイル](https://qiita.com/yoshiyuki_kono/items/218be7ba4603c35faf84)

### クエリ

#### [Couchbase Lite機能解説：クエリ① 概要、インデックス、SELECT句](https://qiita.com/yoshiyuki_kono/items/2b853f622b3eb5098018)

#### [Couchbase Lite機能解説：クエリ② WHERE句](https://qiita.com/yoshiyuki_kono/items/6f80e069b4aa864c9996)

#### [Couchbase Lite機能解説：クエリ③ JOIN、GROUP BY、ORDER BY](https://qiita.com/yoshiyuki_kono/items/e381eecbe794a299ec69)

#### [Couchbase Lite機能解説：クエリ④ 結果セット](https://qiita.com/yoshiyuki_kono/items/e3048af4577e29ae76bf)

#### [Couchbase Lite機能解説：ライブクエリ](https://qiita.com/yoshiyuki_kono/items/8da15296e9a979fbff3d)

#### [Couchbase Lite 機能解説：インデックス作成](https://qiita.com/yoshiyuki_kono/items/74f47dc4d9598451f3bd)

#### [Couchbase Lite 機能解説：Couchbase Lite機能紹介：クエリのトラブルシューティング](https://qiita.com/yoshiyuki_kono/items/dd915547501fd9d8581c)

### データ同期

#### [Couchbase Lite機能解説：競合解決概要](https://qiita.com/yoshiyuki_kono/items/b53f76cadb2338d89d1f)

###  ロギング

#### [Couchbase Lite 機能解説：ロギングAPI](https://qiita.com/yoshiyuki_kono/items/17095f311936dba99a26)


### ピアツーピア同期

#### [Couchbase Lite機能解説：ピアツーピア同期〜アーキテクチャー構成/ワークフローと実装サンプルコード](https://qiita.com/yoshiyuki_kono/items/18bbab20cb4cfbf2cd10)


#### [Couchbase Lite機能解説：Couchbase Lite機能解説：ピアツーピア同期〜プログラミング構成と設定項目](https://qiita.com/yoshiyuki_kono/items/2bde7692c68d8a77d270)


#### [Couchbase Lite機能解説：ピアツーピア同期〜機能説明（セキュリティ、エラー処理など）](https://qiita.com/yoshiyuki_kono/items/6649f9fd9d765b096aa8)

https://docs.couchbase.com/couchbase-lite/current/index.html

### バックアップ

#### [Couchbase Lite機能解説：ローカルデータ同期](https://qiita.com/yoshiyuki_kono/items/5c57bee22ec6f49e5b26)

### 開発

#### [Couchbase Lite開発：Android用インストール手順](https://qiita.com/yoshiyuki_kono/items/b8facccc9a2763ab1f76)

#### [Couchbase Lite開発：cbliteツール解説](https://qiita.com/yoshiyuki_kono/items/4b9d47268220841a6634)

#### [Couchbase Lite開発: Kotlin拡張機能](https://qiita.com/yoshiyuki_kono/items/02efb9b4fae00f95e427)

### クロスプラットフォームフレームワークサポート

#### React Native

#### [React Nativeで使えるデータベースを比較【2021年12月版】(featuring Couchbase Lite)](https://qiita.com/yoshiyuki_kono/items/bffda8fba33839a3e9aa)

#### [React Nativeアプリケーション開発にNoSQL組み込みデータベースCouchbase Liteを使ってみる](React Nativeアプリケーション開発にNoSQL組み込みデータベースCouchbase Liteを使ってみる)

#### Apache Cordova / Ionic



#### Flutter/Dart

#### [Flutterアプリケーション開発に、NoSQLドキュメント指向組み込みデータベースCouchbase Liteを使うには？](https://qiita.com/yoshiyuki_kono/items/d253caba38a9b12ba8f3)

#### [Dartアプリケーション開発にNoSQLドキュメント指向 組み込みデータベース Couchbase Liteを使うには？](https://qiita.com/yoshiyuki_kono/items/a64c274e3abc24e3464b)

## Sync Gateway　

### 利用方法

#### [Sync Gateway利用方法：ユーザーとロールの作成・管理](https://qiita.com/yoshiyuki_kono/items/c768e1d4bef02baaeec5)

#### [Sync Gateway利用方法：チャネル](https://qiita.com/yoshiyuki_kono/items/d3a0206d7b4b913f592c)


#### [Sync Gateway利用方法：アクセス確認](https://qiita.com/yoshiyuki_kono/items/b839c8858effe8acbb17)

### 機能解説

#### [Sync Gateway機能解説：同期メカニズム概要](https://qiita.com/yoshiyuki_kono/items/7ce97f6f29f619e84dd0)

#### [Sync Gateway機能解説：同期〜リビジョン](https://qiita.com/yoshiyuki_kono/items/4392f85dfefd8ebb87a2)

#### [Sync Gateway機能解説：同期〜デルタ同期](https://qiita.com/yoshiyuki_kono/items/6639c0300565e18f650e)

#### [Sync Gateway機能解説：同期〜再同期](https://qiita.com/yoshiyuki_kono/items/8c9d3ccb6d724fd12d1e)

#### [Sync Gateway機能解説：ドキュメントアクセスの制御](https://qiita.com/yoshiyuki_kono/items/5a75680cf681018f7dc7)

#### [Sync Gateway機能解説：同期〜モバイル以外のクライアントとの共存](https://qiita.com/yoshiyuki_kono/items/0f0089163a74bdb257a3)

#### [Sync Gateway機能解説：JavaScriptによる処理のカスタマイズとインポートフィルター](https://qiita.com/yoshiyuki_kono/items/3681bccc6b3d6c5f73e0)



#### [Sync Gateway機能解説：設定〜概要](https://qiita.com/yoshiyuki_kono/items/0f8db22284cef8ebbc05)

#### [Sync Gateway機能解説：拡張属性（XATTRS）の利用](https://qiita.com/yoshiyuki_kono/items/cb7f2b9d2fc0cfc22269)

https://docs.couchbase.com/sync-gateway/current/introduction.html

### セキュリティ

#### [Sync Gatewayセキュリティ：概要](https://qiita.com/yoshiyuki_kono/items/37447eb6556dc7fe9fa1)

#### [Sync Gatewayセキュリティ：ユーザー認証](https://qiita.com/yoshiyuki_kono/items/011b34942efcd52ab4de)

#### [Sync Gatewayセキュリティ：TLS証明書認証](https://qiita.com/yoshiyuki_kono/items/efec49a1a9ec1a535b68)

#### [Sync Gatewayセキュリティ：認証と承認のためのOAuth 2.0とOIDCの基礎](https://qiita.com/yoshiyuki_kono/items/31c134ca6c52fd818f79)

### 管理

#### [Sync Gateway機能解説：管理〜停止と再開](https://qiita.com/yoshiyuki_kono/items/2a85dcc6a64c7354be24)

### 運用

#### [モバイル/エッジコンピューティングプラットフォームCouchbase Mobileの運用監視について](https://qiita.com/yoshiyuki_kono/items/d7d7115c8cde693851d7)

### デプロイメント

#### [Sync Gatewayデプロイメント：概要](https://qiita.com/yoshiyuki_kono/items/b9f8260c49680cb1160f)

#### [Sync Gatewayデプロイメント：ファイルディスクリプタ設定](https://qiita.com/yoshiyuki_kono/items/e3deab29ed03eeaf260d)

#### [Sync Gatewayデプロイメント：レスポンシブサービス構築](https://qiita.com/yoshiyuki_kono/items/023e0993f9f9de572df5)


#### [Sync Gatewayデプロイメント：Prometheus連携](https://qiita.com/yoshiyuki_kono/items/c03e3a28125a9d610336)



## Couchbase Mobile機能解説

#### [Couchbase Mobile機能解説：データ同期における競合解決①（概要）](https://qiita.com/yoshiyuki_kono/items/6e65310d9e6869f5eaaa)

#### [Couchbase Mobile機能解説：データ同期における競合解決②（Couchbase Liteの競合解決）](https://qiita.com/yoshiyuki_kono/items/983bb5dfe816eaf76c7d)

#### [Couchbase Mobile機能解説：データ同期における競合解決③（Sync Gatewayの競合解決）](https://qiita.com/yoshiyuki_kono/items/48858b895c693d9b7c8e)

## アプリケーション開発

#### [Couchbase Mobile アプリケーション開発：DockerによるSync Gateway環境構築](https://qiita.com/yoshiyuki_kono/items/265130227a4d0ef97820)


#### [Couchbase Mobile 開発：データ同期パターン〜ユーザーエクスペリエンス向上](https://qiita.com/yoshiyuki_kono/items/3447c6f77a954a67a053)


#### [Couchbase Mobile 開発：データ同期パターン〜ローカルデータクリーンアップ](https://qiita.com/yoshiyuki_kono/items/136d2c0f2c85a208d2f1)

#### [Couchbase Mobile 開発：データ同期パターン〜データ同期範囲の制御](https://qiita.com/yoshiyuki_kono/items/c84b7ad535432eedbdde)


## 関連技術

https://qiita.com/yoshiyuki_kono/items/05496b26e1dc4eb99ddb

## 公式チュートリアル

https://docs.couchbase.com/tutorials/mobile-travel-sample/introduction.html



## 内部機構解説

https://qiita.com/yoshiyuki_kono/items/57fd83ded0eec7ad8f46

## アドバンスド機能解説

https://qiita.com/yoshiyuki_kono/items/8f304ec0c067d0f35450

## 参考情報

https://learn.couchbase.com/store/404628-cb040-essentials-of-couchbase-mobile-and-iot

https://learn.couchbase.com/store/476347-cb140a-introduction-to-couchbase-mobile-2-1-android

https://learn.couchbase.com/store/476338-cb140i-introduction-to-couchbase-mobile-2-1-ios