Skip to content

同期とストレージ

Noustはデータの主権を優先します。お客様のメモはお客様のものであり、その保存先はお客様自身が決定します。

エクスポートとインポート

標準フォーマットでデータを持ち出すことができます。

  • エクスポート: すべてのメモ、セクション、設定、および環境変数を含む .npad バイナリパッケージを生成します。このフォーマットは高度に最適化されており、埋め込みバイナリ資産(画像など)をサポートしています。セキュリティを最大化するため、エクスポート中にファイルを暗号化することをお勧めします。
  • インポート: 以前にエクスポートした .npad またはレガシーな .json ファイルからワークスペースを復元します。
  • 注意: インポートすると、現在アクティブなセッションが上書きされます。

ストレージアーキテクチャ

Noustは、最大限の信頼性とデータ主権を確保するために、ローカル永続化に対して階層的な高性能アプローチを採用しています。

  1. プライマリエンジン (IndexedDB): メインのローカルデータベース。ワークスペースは独立したパーティション (workspace_{id}) ごとに保存され、大容量データセットやバイナリアセットをサポートし、ローカル暗号化 (At-Rest) を実現します。
  2. 常時有効なバックグラウンド自動保存 (Auto-Save): データの永続化は常時バックグラウンドで自動的に行われます。ノート、キャンバスレイアウト、Nexusドキュメント、設定の変更はすべてUIスレッドをブロックすることなく非同期でIndexedDBに保存されます。
  3. フォールバック (LocalStorage): ブラウザがIndexedDBへのアクセスをブロックした場合の安全対策としてのみ使用されます。注意: ストレージ制限のため、フォールバックモードではローカル暗号化は使用できません。

マルチワークスペースパーティショニングとタブ間同期 (Event Storage)

  • ワークスペースの分離: 各ワークスペースは独自のストレージパーティションを保持します。ワークスペースの切り替えや削除を行うと、他のワークスペースに影響を与えることなく、関連するキャンバスノード、位置スナップショット、クラウドワークスペースのメタデータをクリーンに読み込み・削除します。
  • タブ間同期の切り替え: 設定 > 動作 でタブ間同期をカスタマイズできます:
    • 有効(デフォルト): 編集内容やワークスペースの切り替えは、Event Storage / BroadcastChannelを介して開いているすべてのタブにリアルタイムで反映されます。
    • 無効: 各ブラウザタブが独立したセッションとなり、バックグラウンド自動保存によりすべてのデータが安全に保存された状態で、別々のタブで異なるワークスペースを同時に開いて作業できます。

クラウド同期

当社のクラウド同期は Zero-Knowledge(ゼロ知識)アーキテクチャ に基づいて構築されています。つまり、当社はストレージを提供しますが、データを閲覧することは一切ありません。

仕組み

  1. バイナリパッキング: ワークスペースのデータとアセットは、データフットプリントを最小限に抑え、Base64のオーバーヘッドを排除するために .npad バイナリエンベロープにパックされます。
  2. ローカル暗号化: データはブラウザ内で AES-256-GCM を使用して暗号化されます。
  3. 暗号化されたBlob: 暗号化された「blob」のみが弊社のサーバーに送信されます。
  4. キーの保持: キー(パスワードとオプションのsalt)がデバイスから送信されることはありません。
  5. 同期の解除: 共同編集者または所有者は、共有ワークスペースの同期をいつでも解除できます。これによりクラウドのリンクが切れ、ローカルワークスペース内に完全に閲覧・編集可能なプライベートコピーが保持されます。

クラウドワークスペースの操作

  • Sync (旧 "Save"): ローカルワークスペースの変更を送信し、クラウドに同期します。新規ワークスペースを初めて作成する場合は、Send(または Sync)と表示されます。
  • Load: クラウドリストからアクティブなセッションにワークスペースを開き、読み込みます。
  • Sync (旧 "Auto-Sync"): アクティブなワークスペースのバックグラウンド自動同期のオン/オフを切り替えます。

更新検出と視覚的インジケーター

Noustはデバイス間におけるワークスペースの最新状態を常に検証します。確認は手動(ワークスペースリストの Refresh をクリックするか、クラウド同期パネルを開く)および自動(ネットワークの再接続時、システムのサスペンド復帰時、長時間の放置後の復帰時など)の両方で行われます。

クラウド上で新しいバージョンのワークスペースが検出されると、NoustはUI上の3つの場所で通知します:

  1. グローバルヘッダーアイコン: メインツールバーの Sync アイコンに更新通知バッジが表示されます。
  2. ワークスペースリストのバッジ: マイ クラウドワークスペース または 共有アイテム 内のワークスペース横に白抜きのインジケータードットが表示されます。
  3. クラウドフォームの通知: アクティブなクラウドワークスペース管理パネル内に "Updates Available" アクションボタンが表示されます。

インテリジェントな3-Way行レベルマージと衝突保護

別のデバイスから更新を取得する際、Noustはノート、セクション、目標、トポロジーメタデータにわたる自動化された 3-Way行レベルマージ(3-Way Line Merge) を実行します:

  • 競合防止: 別のデバイスで行われた変更を誤って上書きするのを防ぐため、リモートの更新または未解決の衝突が検出された場合、Noustは手動の Sync 操作をブロックします。ローカル変更を送信する前に、最新のリモート変更を取得して解決する必要があります。
  • 詳細な競合解決: まったく同じ行で変更が衝突した場合、Noustは対話型の競合解決モーダルを開き、行ごとにどのバージョン(ローカル vs クラウド)を保持するかを選択できるようにします。

Auto-Update(有料サブスクリプションプラン)

有料プランのユーザーは Auto-Update を利用でき、作業を中断することなくバックグラウンド同期を自動化できます。

  • 自動取得とマージ: リモート更新が検出され、構造的な衝突が存在しない場合、Noustはバックグラウンドでリモートバージョンを自動的に取得してマージします。
  • セキュリティとパスワード検証: Sync が有効であり、ローカルセッションが受信するクラウドワークスペースと同じセキュリティパスワードで復号化されている場合、Auto-Updateはシームレスに機能します。
  • 入力中断防止セーフティ: 入力中の衝突やカーソルの飛躍を防ぐため、Auto-Updateはエディタの入力が一時的に停止したことを確認してからサイレントマージを適用します。
  • さりげない通知: バックグラウンドでの自動更新が正常に完了すると、控えめな通知が表示されます。
  • 競合発生時の安全ブロック: 自動更新中に解決不能な構造的競合が発生した場合、Noustはデータを保護するために自動マージを安全に停止し、ワークスペースに更新通知フラグを立て、手動での競合解決を促します。

視覚的なインジケータ

現在のワークスペースがクラウドと同期されていることを示すために、グローバルヘッダーに クラウド アイコンが表示されます。 クラウドアイコンが 塗りつぶされている 場合は、このワークスペースで 自動更新 (Auto-Update) が有効になっていることを示します。

復号の要件

別のデバイスからデータを復元するには、以下を入力する必要があります。

  • 暗号化パスワード
  • カスタムSalt(使用している場合)。

重要

パスワードまたはsaltを紛失した場合、データを回復する 手段はありません。弊社ではそれらを保存しておらず、リセットすることもできません。

共同編集と共有ワークスペース

Noustでは、特定のクラウドワークスペースを他のユーザーと共有できます。

  • 選択的な共有: 選択したワークスペースのみを共有します。
  • 検出防止(ユーザー名ベース): 共有は完全に一致するユーザー名のみに制限されており、第三者にお客様の存在を検出されたり列挙されたりするのを防ぎます。
  • 共同編集者のロール: 各共同編集者には次の2つのロールのいずれかを割り当てることができます:
    • リーダー(Reader): 共有ワークスペースを読み取り専用モードで同期・閲覧できます。
    • エディター(Editor): ワークスペースを同期し、ローカルでの変更を所有者のレビュー用に送信できます。
  • ロールの管理とアクセスの取り消し: ワークスペースの所有者として、共同編集者のロール(リーダー/エディター)の変更やアクセスの取り消しがいつでも可能です。エディターへの昇格時は、認証情報モーダルを通じて確認が行われます。

共同編集者の更新と所有者によるレビュー

エディター の共同編集者が変更を送信すると、ワークスペースの所有者は「共同編集者」パネルで保留中の更新通知を受け取ります。

  • 保留中の更新パネル: 所有者は、保留中の更新の件数、送信者、サイズ、タイムスタンプを確認できます。
  • 仮レビュー: 「レビュー」 をクリックすると、共同編集者の変更がワークスペースに読み込まれ、視覚的に確認できます。所有者は決定を下す前に、マージされた結果をエディター上で直接プレビューできます。
  • 承認または破棄: レビュー後、所有者は以下の操作を選択できます:
    • すべて承認(Accept All): マージされた変更をクラウドワークスペースに適用して保存します。
    • すべて破棄(Discard All): 変更を適用せず、ワークスペースを即座に元の状態に復元します。ローカルデータは失われません。
  • レビューなしで削除: 所有者は、保留中の更新を開かずにパネルから直接削除することもできます。

競合処理

所有者と共同編集者の両方が同じメモや行を編集した場合、Noustは自動的に3-way merge(3方向マージ)を試みます。競合を自動解決できない場合は、テキスト内に競合マーカーが表示され、所有者が承認または破棄を決定できるようになります。

エンドツーエンド暗号化共有(Zero-Knowledge Sharing)

共有ワークスペースは、個人のワークスペースと同じ Zero-Knowledge 保証を維持します。ワークスペースのパスワードは、暗号化された E2EE Envelope(エンベロープ) として共同編集者に配信され、共同編集者の個人E2EE公開鍵で封印されます。

  • 共同編集者の承認とパスワード要求: 共同編集者を承認する際、ワークスペースの所有者はそのワークスペースの正確な暗号化パスワード(およびSalt)の入力を求められます。ブラウザは受信者の公開鍵を使用して、これらの認証情報をE2EE Envelope(エンベロープ)内に暗号化します。
  • エンベロープ配信: サーバーは、共有中であってもワークスペースのパスワード、秘密鍵、平文コンテンツに 一切アクセスできません
  • 認証情報検証 (keyVerifier): エディターが更新を送信する際、サーバーはワークスペースのパスワードとSaltから派生したSHA-256ハッシュ( keyVerifier )を検証します。これにより、更新を受け入れる前に、共同編集者が所有者の設定した正確なパスワードとSaltを使用していることが保証されます。
  • 共同編集者キーの更新 (Update Keys): 所有者が既に共有されているクラウドワークスペースの暗号化パスワードまたはSaltを変更した場合、既存のエンベロープは古い認証情報で暗号化されているため、共同編集者はアクセスできなくなります。所有者はいつでも Update Collaborator Keys ボタン(共同編集者カードのキーアイコン、または同期パネルの「Update collaborator keys on sync」チェックボックス)を使用してエンベロープを再暗号化し、すべての共同編集者の keyVerifier を一度に更新してアクセスを復元できます。
  • 保管庫のロック解除要件: 共同編集者がエンベロープを復号して共有ワークスペースにアクセスするには、E2EE保管庫がロック解除(プロフィール > セキュリティ)されている必要があります。

暗号化の透明性

  • プライベートおよび閲覧専用ワークスペース(Reader):完全なゼロ知識(Zero-Knowledge)で動作し、資格情報、ハッシュ、または暗号の手がかりがサーバーに送信または保存されることはありません。
  • エディター専用の検証:所有者が共同編集者に**エディター(Editor)**権限を付与した場合にのみ、一方向のSHA-256ハッシュ(パスワード + Salt)が keyVerifier として一時的に登録されます。これは、エディター権限を持つ共同編集者が正しい暗号化資格情報(パスワードとSalt)を使用して変更を送信しているかをサーバーが検証するためだけに使用され、サーバーが実際のパスワードを知ることは決してありません。
  • 同期時の自動更新 (Sync):所有者がクラウドワークスペースを同期(Sync / 更新)するたびに、そのワークスペースにエディター(Editor)権限を持つ共同編集者が少なくとも1人存在する場合にのみ、サーバー上の keyVerifier が自動的に更新されます。
  • 厳格なライフサイクル:このハッシュはアクティブなエディターが存在する間のみクラウドワークスペースに関連付けられ、エディター権限の取り消しや共同編集者の削除時に、ワークスペースに他のアクティブなエディターが残っていない場合(またはクラウドからワークスペースが削除された場合)、keyVerifier はサーバーから即座に永久破棄されます。

セキュリティ監査(アドバンスドプラン - Advanced Tier)

アドバンスドプランのユーザーは、透明性の高いプライバシー重視の監査証跡にアクセスできます。

  • アクセスログ: 自身のアカウントの重要なイベント(サインイン、データのプッシュ、削除)を追跡します。
  • プライバシー保護: ログにはデバイスファミリー/OSとアクションの種類が記録されますが、ユーザーインターフェース上でお客様のパブリックIPアドレスが公開されることはありません。
  • 検証: これらのログを使用して、デバイス間での不正アクセスを監視します。

アカウント管理と削除

Noustは、データのための安全なエンドオブライフ(削除)プロセスを提供します。

  • 論理削除(Soft Delete): アカウントの削除をリクエストすると、アクセスはただちに停止されますが、データは取り返しのつかない完全消去の前に、復旧用として 30日間の猶予期間 保持されます。
  • 確認手順: 誤操作による紛失を防ぐため、削除の確認には特定の文字列( {username}_delete )を入力する必要があります。
  • データの主権: 30日後にアイデンティティは消去されますが、法的遵守(LGPD/GDPR)のため、暗号化された技術ログに一部のメタデータが最大6か月間保持された後、完全に永久消去されます。