クラウドとプライバシー
アウトライナーやノートアプリには、 仕事のメモ、考え途中のアイデア、個人的な記録など、 さまざまな情報が蓄積されていきます。 こうしたツールでは、 データがどこに保存され、誰がアクセスできるかが重要になります。
Kosshi のデータは各デバイスに SQLite データベースとしてローカル保存されています。 デバイス間の同期には Apple の CloudKit を使っており、 同期データはユーザーの iCloud アカウントに保存されます。 開発者がその内容にアクセスすることはできません。
この記事では、 クラウドを利用するツールのデータ保存方式の違いと、 Kosshi がこのアーキテクチャを選んだ理由を説明します。
同期サービスとデータの保存先
ツールがデバイス間でデータを同期する方法は、 主に以下のパターンがあります。
サービスのサーバーに保存する方式。 Notion や WorkFlowy などが採用しています。 データはサービス提供者のサーバーに保存され、 クライアントアプリやブラウザがそれを取得して表示します。 どのデバイスからでもアクセスでき、共同編集にも向いています。
ローカルファイルとして保存する方式。 Bike がこの方式です。 データは端末上のファイルとして存在し、 同期は行わないか、ファイル同期サービスに委ねます。 データの管理は完全にユーザーの手にあります。
エンドツーエンド暗号化(E2EE)を用いる方式。 Standard Notes などが採用しています。 データはサーバーに保存されますが、 クライアント側で暗号化してからアップロードするため、 サーバー上では内容を読めない仕組みです。 プライバシーの保護としては強い方式ですが、 後述するように技術的な制約があり、 実際に採用しているサービスは限られています。
Kosshi はデータをデバイスにローカル保存しつつ、 同期には Apple の CloudKit を使っています。 CloudKit は Apple のメモ(Notes.app)1や リマインダー2でも使われている iCloud の同期基盤です。 つまり、iCloud でメモを同期している人は、 Kosshi と同じインフラをすでに利用していることになります。
サーバーにデータを預けるということ
多くの生産性ツールは、 サービス提供者のサーバーにデータを保存しています。 一般的な方式であり、 それ自体が危険ということではありません。
ただし、この方式では以下の点を理解しておく必要があります。
- サービス提供者が技術的にデータにアクセスできる状態にある
- サービスが終了した場合、エクスポート手段の有無がデータの継続性を左右する
- 利用規約の変更がデータの取り扱いに影響する可能性がある
個人利用であれば、 信頼できるサービスを選べば実際に問題になることはほとんどありません。 多くのサービスは適切なセキュリティ対策を講じており、 データを安全に管理しています。
一方、組織で利用する場合は状況が変わることがあります。 取引先や顧客に関する情報を扱うとき、 データの保管場所や第三者のアクセス可能性は セキュリティ監査やコンプライアンスの対象になります。 「どのサーバーに、誰がアクセスできる状態で保管されているか」を 説明する必要がある場面があります。
エンドツーエンド暗号化について
E2EE はサーバー側でデータの内容を読めなくする技術です。 クライアントで暗号化し、 サーバーには暗号化されたデータだけが保存されます。 サービス提供者が内容にアクセスすることを技術的に防ぎます。
原理上はデータの秘匿性が高い方式ですが、 実用上のトレードオフがあります。
- 暗号鍵の管理がユーザーの責任になる。鍵を紛失するとデータを復元できない
- サーバー側でデータの内容を扱えない。全文検索、バージョン履歴の比較、データ破損時の復旧などが制限される
これらの制約により、 実際に E2EE を実現しているサービスは限られています。
E2EE は「サーバーに預けるが、中身を見せない」という方式です。 「サーバーに預けない」方式とは異なります。
Kosshi が CloudKit を使う理由
Kosshi の同期には CloudKit の「プライベートデータベース」を使用しています。 データはユーザーの iCloud アカウントに紐づく専用のストレージに保存され、 開発者が個々のユーザーのデータを閲覧する API は提供されていません3。
この仕組みには以下の利点があります。
データは常にデバイス上にある。 アウトラインのデータは各デバイスにローカル保存されているため、 オフラインでも通常通り使えます。 CloudKit はデバイス間で変更を同期するために使われるもので、 データの主な保管場所はあくまでユーザーのデバイスです。
同期データの所有者がユーザー自身である。 同期のためにクラウドに保存されるデータは、 ユーザーの iCloud コンテナに入ります。 Apple の iCloud ストレージの一部として管理され、 開発者のサーバーには保管されません。
アカウント作成が不要。 同期には Apple Account を使います。 新たにアカウントを作成する必要がなく、 メールアドレスやパスワードを開発者に預ける必要もありません。
Apple のインフラを利用できる。 データは Apple のデータセンターに保存され、 転送時と保存時の両方で暗号化されます。
開発者側にサーバーがない。 データを保持するサーバーが開発者側に存在しないため、 そのサーバーからの情報漏洩というリスクがありません。 これは買い切りモデルを可能にしている理由でもあります。 サーバーの維持コストがないため、 サブスクリプションなしでサービスを継続できます。
組織での利用について
個人のメモであれば、 どの方式でも大きな問題になることはほとんどありません。 業務で使う場合は、 データの取り扱いについてより慎重な判断が求められます。
サービスのサーバーにデータを保存する方式では、 サービス提供者のセキュリティ体制を確認する必要があります。 SOC 2 レポート、データセンターの所在地、 従業員のアクセス権限、インシデント対応体制などが 監査の対象になることがあります。
CloudKit 方式の場合、 データの保管先は Apple の iCloud インフラです。 Apple は SOC 2、ISO 27001 などの認証を取得しており、 Apple Business Manager による iCloud アカウントの管理にも対応しています。 サービス提供者(アプリの開発者)のサーバーを 監査対象に加える必要がない点は、 組織にとって判断材料になる場合があります。
ただし、CloudKit 方式にも制約があります。 Apple エコシステムに限定されること、 共同編集に対応していないこと、 管理者向けの詳細なアクセス制御がないことなどです。 組織の要件によっては、 サーバー方式のツールの方が適している場合もあります。
まとめ
同期の方式によって、データの所在と管理者が異なります。
| 方式 | データの保管場所 | 開発者のアクセス |
|---|---|---|
| サービスのサーバー | サービス提供者のサーバー | 技術的に可能 |
| E2EE | サービス提供者のサーバー(暗号化) | 不可 |
| CloudKit | ユーザーの iCloud アカウント | 不可 |
| ローカルのみ | ユーザーのデバイス | 不可 |
Kosshi は CloudKit を使うことで、 デバイス間の同期を実現しながら、 データをユーザーの管理下に置いています。
Kosshi について
Kosshi は macOS / iOS 向けのアウトライナーです。 データはデバイスにローカル保存され、iCloud(CloudKit)で Mac と iPhone 間を自動同期します。 開発者がユーザーのデータにアクセスすることはできません。
データの保存と同期の詳細はデータの保存と同期を、バックアップについては自動バックアップをご覧ください。
7 日間無料で試すFootnotes
-
Apple. What's New in CloudKit, WWDC 2015, Session 704. https://developer.apple.com/videos/play/wwdc2015/704/ ↩
-
Apple. What's new in CloudKit, WWDC 2021, Session 10086. https://developer.apple.com/videos/play/wwdc2021/10086/ ↩
-
CloudKit のプライベートデータベースに保存されたデータは Apple により暗号化されており、開発者が個々のユーザーのデータを閲覧・取得する手段は提供されていません。 ↩