# Noterich P2P Syncチュートリアル:クラウドを介さないクロスデバイス同期
> **デバイス間でノートを安全に同期する——クラウドストレージは不要**
データプライバシーがこれまで以上に重要になっている今、Noterichはクロスデバイス同期の革新的な方法を提供しています。私たちの**P2P(ピアツーピア)同期**機能により、クラウドサーバーを利用せずにデバイス間でノートをシェアできます。データは常にあなたのものです。
## なぜP2P同期を選ぶのか?
従来のノートアプリはデータを集中型サーバーに保存します。これにより、プライバシーのリスク、サブスクリプション費用、第三者インフラへの依存が生じます。Noterichは異なる道を歩みます:
```mermaid
graph LR
A[Your Device] <-->|Direct Connection| B[Your Other Device]
C[Cloud Server] -.->|Not Required| A
C -.->|Not Required| B
style A fill:#4CAF50,color:#fff
style B fill:#4CAF50,color:#fff
style C fill:#9E9E9E,color:#fff,stroke-dasharray: 5 5
```
### 主な利点
- **🔒 プライバシー優先**:ノートは第三者サーバーに触れません
- **⚡ 高速かつ直接**:デバイスは直接通信し、同期が高速になります
- **💰 サブスクリプション不要**:プレミアム層なしの無料P2P同期
- **🌐 どこでも利用可能**:ローカルネットワークまたはインターネットを通じて同期
- **📱 クロスプラットフォーム**:デスクトップ、ノートパッド、タブレット、モバイル間で動作
## P2P同期の仕組み
Noterichは**WebRTC技術**と**PeerJS**を組み合わせて、デバイス間の直接接続を確立します。同期を開始すると:
```mermaid
sequenceDiagram
participant D1 as Device A (送信者)
participant S as Signaling Server
participant D2 as Device B (受信者)
D1->>S: 接続IDの要求
S-->>D1: ルームIDの生成
D1->>D2: 接続リンクの共有(QR/URL)
D2->>S: ルームIDを使って接続
S-->>D2: ピア接続の確立
D1->>D2: 暗号化してノートを送信
D2->>D2: 暗号化解除してノートをインポート
Note over D1,D2: 直接暗号化された転送<br/>データはサーバーに保存されません
```
### 背後にある技術
NoterichのP2P実装では以下が利用されています:
1. **PeerJSライブラリ**:ブラウザ間の通信の複雑さを処理します
2. **AES-GCM暗号化**:ノートデータの軍用級暗号化
3. **PBKDF2キー生成**:安全なパスワードベースの暗号化キー生成
4. **MessagePackシリアライズ**:高速転送のための効率的なバイナリデータエンコーディング
5. **IndexedDBストレージ**:オフラインアクセス用のローカルファーストのデータベース
## P2P同期の開始
### 前提条件
始める前に、以下を確認してください:
- ✅ 両方のデバイスにNoterichがインストールされていること
- ✅ 両方のデバイスがインターネットに接続されていること(または同じローカルネットワーク内)
- ✅ 最新のウェブブラウザ(Chrome、Firefox、Edge、Safari)
### ステップ1:ソースデバイスからシェアを開始
1. Noterichでシェアしたいノートを開きます
2. ツールバーの**Share**ボタンをクリックします
3. **"P2P Share"**オプションを選択します
4. (オプション)セキュリティを強化するためにパスワードを設定します
- パスワードは少なくとも8文字以上でなければなりません
- AES-256-GCM暗号化を使用します
5. P2Pサーバーが初期化するのを待ちます
```mermaid
graph TD
A[Open Note] --> B[Click Share Button]
B --> C[Select P2P Share]
C --> D{Set Password?}
D -->|Yes| E[Enter Password ≥8 chars]
D -->|No| F[Skip Encryption]
E --> G[Initialize P2P Server]
F --> G
G --> H[Generate Share Link & QR Code]
```
### ステップ2:接続リンクをシェア
P2Pサーバーが起動すると、Noterichは以下を生成します:
- **接続パラメータを含むユニークなシェアリンク**
- **モバイル端末でのスキャンが簡単なQRコード**
リンクの形式は以下の通りです:
```
https://noterich.com/#dbshare=<infoHash>&server=<signaling-server>
```
**シェア方法**:
| 方法 | 最適な用途 | 方法 |
|--------|----------|--------|
| 🔗 リンクのコピー | メール、メッセージアプリ | 「リンクのコピー」ボタンをクリック |
| 📱 QRコード | モバイルデバイス | デバイスのカメラでスキャン |
| 📧 メール | リモートの共同作業者 | リンクをメールに貼り付ける |
### ステップ3:受信デバイスで受け取る
受信デバイス上で:
1. **シェアリンクを開く**
- 直接リンクをクリックするか、または
- モバイルデバイスでQRコードをスキャンする
2. **受信したノートを確認する**
- ノートのタイトルとメタデータをプレビューする
- 送信者情報を確認する
3. **パスワードを入力する**(暗号化されている場合)
- 送信者が指定したパスワードを入力する
- データはデバイス上で暗号化解除される
4. **目的のワークスペースを選択する**
- 既存のワークスペースを選択するか、または
- インポートされたノートのために新しいワークスペースを作成する
5. **インポートを確認する**
- ノートは暗号化され、IndexedDBに保存される
- 検索インデックスは自動的に再構築される
```mermaid
graph LR
A[Open Link] --> B[Connect to Sender]
B --> C{Encrypted?}
C -->|Yes| D[Enter Password]
C -->|No| E[Receive Metadata]
D --> E
E --> F[Preview Notes]
F --> G[Select Workspace]
G --> H[Import & Index]
H --> I[Sync Complete!]
style I fill:#4CAF50,color:#fff
```
## 高度な機能
### 暗号化された転送
重要なノートの場合、Noterichはオプションのエンドツーエンド暗号化を提供します:
**暗号化プロセス:**
```javascript
// パスワード → 暗号化キー(PBKDF2)
password + salt → deriveKey() → AES-256-GCM key
// ノートデータ → 暗号化されたバッファ
noteData + key + iv → encrypt() → encryptedBuffer
// 転送パッケージ
{
encryptedBuffer: ArrayBuffer,
salt: Uint8Array, // キー導出のため
iv: Uint8Array // 初期化ベクトル
}
```
**セキュリティ機能:**
- 🔐 キー導出のための100,000 PBKDF2イテレーション
- 🔐 各転送ごとにランダムなsaltとIV
- 🔐 AES-256-GCM認証付き暗号化
- 🔐 パスワードは送信されず、ローカルでのみ使用される
### バッチノート同期
複数のノートを効率的に転送する:
1. 設定から**Database Transfer**を利用する
2. **"P2P Sync"**モードを選択する
3. 同期するノートを選択する
4. 受信者は選択オプション付きのバッチプレビューを受け取る
**パフォーマンス最適化:**
- ノートは512KB単位で転送される
- 非ブロッキングの非同期処理によりUIの凍結を防ぐ
- バイトレベルでの進捗追跡
- データの破損なしでいつでもキャンセル可能
### 衝突解決
両方のデバイスに存在するノートを同期する際:
```mermaid
graph TD
A[Detect Conflict] --> B{Compare Timestamps}
B -->|Local Newer| C[Keep Local Version]
B -->|Remote Newer| D[Show Conflict Dialog]
D --> E[Choose Version]
E --> F[Local]
E --> G[Remote]
E --> H[Merge Manually]
B -->|Both Deleted| I[Skip]
style C fill:#2196F3,color:#fff
style F fill:#2196F3,color:#fff
style G fill:#4CAF50,color:#fff
```
**衝突の種類の処理:**
- `local-newer`:あなたのバージョンが新しい
- `remote-newer`:受信バージョンが新しい
- `local-deleted`:このノートをローカルで削除した
- `remote-deleted`:送信者のデバイスでノートが削除された
- `remote-restored`:以前に削除されたノートが復元された
## トラブルシューティング
### 一般的な問題と解決策
#### ❌ “PeerJSライブラリが読み込まれない”
**原因**:ネットワークのブロックによりPeerJS CDNまたはシグナリングサーバーが読み込めない
**解決策:**
1. インターネット接続を確認する
2. ファイアウォールがWebRTC接続を許可しているか確認する
3. 代替ネットワーク(モバイルホットスポット)を試す
4. ブラウザがWebRTCをサポートしていることを確認する
#### ❌ “接続タイムアウト”
**原因**:NAT/ファイアウォールが直接接続を防ぐ
**解決策:**
1. 両方のデバイスが同じネットワーク上にあること
2. VPNを一時的に無効にする
3. ルーターのWebRTC設定を確認する
4. モバイル接続のためのQRコードを使用する
#### ❌ “暗号化が失敗した”
**原因**:正しいパスワードがないか、転送が破損している
**解決策:**
1. パスワードが正確に一致していることを確認する(大文字小文字を区別する)
2. 送信者から新しいシェアリンクを要求する
3. 転送中に安定した接続があることを確認する
4. より小さなバッチサイズを試す
#### ❌ “同期中”エラー
**原因**:同時の同期試行が複数ある
**解決策:**
1. 現在の同期が完了するまで待つ
2. 他のNoterichタブ/ウィンドウを閉じる
3. ページを更新して再試行する
4. 持続する場合はブラウザキャッシュをクリアする
### 接続状態の指示
| 状態 | 意味 | 行動 |
|--------|---------|--------|
| 🔵 接続中 | ピア接続が確立されている | 5-10秒待つ |
| 🟡 比較中 | ノートの違いを分析中 | 通常のプロセス |
| 🟠 ユーザー確認が必要 | パスワードまたは確認が必要 | モーダルダイアログを確認する |
| 🟢 アップロード中 | ノートをデータベースにインポート中 | タブを閉じずにいる |
| ✅ 成功 | 同期が正常に完了 | ノートを使用できる |
| 🔴 エラー | 接続または転送に失敗 | トラブルシューティングを確認する |
## セキュリティのベストプラクティス
### データの保護
P2P同期は本来安全ですが、以下のガイドラインに従ってください:
1. **強力なパスワードを使用する**
- 最低8文字(12文字以上推奨)
- 大文字、小文字、数字、記号を混ぜる
- 他のサービスからのパスワードを再利用しない
2. **受信者を確認する**
- 信頼できるデバイスとのみリンクを共有する
- 物理的に近い場合はQRコードを使用する
- 公開チャンネルでリンクを投稿しない
3. **アクティブな接続を監視する**
- 同期中に接続しているピアを確認する
- 転送が成功した後は切断する
- 共有リンクが侵害された場合はリセットする
4. **定期的なバックアップ**
- 重要なノートを定期的にエクスポートする
- バックアップを別の安全な場所に保存する
- 定期的に復元手順をテストする
### 暗号化の制限を理解する
**暗号化されているもの:**
- ✅ ノートの内容(テキスト、フォーマット、メタデータ)
- ✅ 添付ファイルや埋め込みメディア
- ✅ 転送中のデータベース構造
**暗号化されていないもの:**
- ⚠️ 接続メタデータ(タイミング、データサイズ)
- ⚠️ IPアドレス(シグナリングサーバーに表示される)
- ⚠️ デバイス識別子(接続ルーティングのため)
## パフォーマンスのヒント
### 同期速度を最適化する
1. **ネットワーク条件**
- 同じローカルネットワークで最速の転送
- 5GHz Wi-Fiは2.4GHzより推奨
- デスクトップデバイスには有線イーサネットを使用する
2. **バッチサイズ**
- 大量の転送の場合:小さなバッチに分割する
- 進捗インジケータを監視する
- 停止した場合はキャンセルして再試行する
3. **ブラウザのパフォーマンス**
- 同期中はNoterichタブをアクティブに保つ
- 不要なブラウザタブを閉じる
- 最新のブラウザバージョンにアップデートする
4. **デバイスのリソース**
- 十分なストレージスペースを確保する
- メモリを消費するアプリを閉じる
- 同期が遅くなった場合はブラウザを再起動する
### メモリ管理
Noterichはスマートなバッチ処理を実装してブラウザのクラッシュを防ぎます:
```javascript
// setTimeoutで非同期バッチ処理を行う
async function asyncBatchProcessor(items, processor, batchSize = 10) {
// 10ずつバッチで処理
// 10msごとに制御を渡すことでUIが応答的に動作
// 大量のインポート時のメインスレッドのブロックを防ぐ
}
```
**推奨事項:**
- 単一の転送は最大100ノートまで
- 大規模なバッチ同期の間は30秒以上待つ
- 定期的にブラウザキャッシュをクリアする
## よくある質問
### Q: 2つ以上のデバイスで同期できますか?
**A:** はい!各デバイスペアで別のP2Pセッションを開始できます。複数デバイスワークフローの場合:
1. デバイスA → デバイスB
2. その後、デバイスB → デバイスC
3. または、デバイスAを他のすべてのデバイスの中央ハブとして使用する
### Q: P2P同期はオフラインでも動作しますか?
**A:** P2Pはシグナリングサーバーの初期接続が必要です。接続が確立された後:
- ✅ ローカルネットワークでの転送はインターネットなしで可能
- ✅ デバイス間のデータ転送は直接行われる
- ❌ 初期接続にはシグナリングサーバーのアクセスが必要
### Q: 同期が中断された場合はどうなりますか?
**A:** Noterichは中断をスムーズに処理します:
- 部分的に転送されたノートは破棄される
- 破損したデータはデータベースに入れられない
- 単に同期プロセスを再開始する
- 既に同期されたノートは影響を受けない
### Q: 他のNoterichインスタンスと同期できますか?
**A:** もちろん!P2P同期は任意のNoterichユーザー間で動作します:
- 共同作業者と個々のノートを共有する
- アカウントのリンクは必要とされない
- 各転送は独立して安全に行われる
- 一度のノート共有に最適
### Q: ファイルサイズに制限がありますか?
**A:** 実用的な制限は以下の通りです:
- ブラウザのメモリ利用可能性
- ネットワークの安定性
- 推奨最大値:セッションあたり50MB
- より大きな転送の場合:複数のバッチに分割する
### Q: シェアリンクはどれくらい有効ですか?
**A:** シェアリンクはセッションベースです:
- 送信者のNoterichタブが開いている間有効
- 送信者がタブ/ブラウザを閉じると有効期限切れ
- セキュリティのため一度使用で終了することを推奨
- 各転送セッションごとに新しいリンクを生成する
## 比較:P2P vs クラウド同期
```mermaid
quadrantChart
title "同期方法の比較"
x-axis "低いプライバシー" --> "高いプライバシー"
y-axis "低い制御" --> "高い制御"
quadrant-1 "Noterich P2P"
quadrant-2 "避ける"
quadrant-3 "従来のクラウド"
quadrant-4 "集中型サービス"
"Noterich P2P": [0.9, 0.9]
"従来のクラウド": [0.3, 0.4]
"集中型サービス": [0.4, 0.3]
```
| 機能 | Noterich P2P | クラウド同期 |
|--------|--------------|------------|
| **データストレージ** | デバイスのみ | 第三者サーバー |
| **プライバシーレベル** | 最高 | プロバイダーに依存 |
| **コスト** | 無料 | 通常サブスクリプションベース |
| **設定の複雑さ** | 中 | 簡単 |
| **同期速度** | 非常に速い(直接) | 中(サーバー経由) |
| **オフラインアクセス** | 完全 | 限定的 |
| **ベンダーロックイン** | なし | 高い |
| **データのポータビリティ** | 完全 | 制限されている |
## 実際の使用例
### 📚 個人知識ベース
以下のものをクロスデバイスで同期する:
- 家庭用デスクトップで深い作業
- ノートパッドでカフェでの作業
- タブレットで読書やアノテーション
- スマートフォンで即時記録
### 👥 チーム協力
チーム内で研究ノートを安全に共有する:
- ITインフラが不要
- エンドツーエンド暗号化された転送
- 転送ログによる監査履歴
- プライバシー規制に準拠
### 🎓 学術研究
論文や文献レビューで共同作業する:
- 注釈付きPDFやノートを共有
- ローカルでバージョン履歴を維持
- 大学や個人デバイス間で作業
- 未公開研究を保護
### 🏢 企業導入
プライバシーを重視する組織でNoterichを導入する:
- データは会社ネットワークから出ません
- ファイアウォールを通じて設定可能なサービス
- 既存のセキュリティポリシーと統合
- クラウドサービスの依存を減らす
## 技術的な詳細(開発者向け)
### アーキテクチャの概要
```mermaid
graph TB
subgraph Sender["Sender Device"]
A1[Note Data] --> A2[MessagePack Serialize]
A2 --> A3{Encrypted?}
A3 -->|Yes| A4[AES-256-GCM Encrypt]
A3 -->|No| A5[Plain Binary]
A4 --> A6[Chunk into 512KB]
A5 --> A6
A6 --> A7[WebRTC Data Channel]
end
subgraph Receiver["Receiver Device"]
B1[WebRTC Data Channel] --> B2[Reassemble Chunks]
B2 --> B3{Encrypted?}
B3 -->|Yes| B4[AES-256-GCM Decrypt]
B3 -->|No| B5[Plain Binary]
B4 --> B6[MessagePack Deserialize]
B5 --> B6
B6 --> B7[IndexedDB Storage]
B7 --> B8[Search Index Rebuild]
end
A7 -.->|Direct P2P| B1
style A4 fill:#FF5722,color:#fff
style B4 fill:#FF5722,color:#fff
style A7 fill:#4CAF50,color:#fff
style B1 fill:#4CAF50,color:#fff
```
ワークフローを変革する準備はできましたか?
あなたのプライベートなAI搭載
ノートテイキングハブが待っています
プライベートで強力なノートテイキングのためにNoteRichを信頼する何千人ものユーザーに参加しましょう。ブラウザで直接体験できます。インストール不要、クレジットカード不要、あなたのノートがデバイスから離れることはありません。
クレジットカード不要
ブラウザで動作
100% ローカルノート
リソースとガイド
ローカルファーストのノートテイキング、プライバシーアーキテクチャ、高度な生産性ワークフローに関する詳細な記事をご覧ください。
- NoteRich内でノートをAIメモリに変換
- NoteRich AIでテキストをビジュアルインフォグラフィックに変換
- NoteRichワークスペースと高度な検索チュートリアル
- NoteRichリッチテキストとMarkdownの比較:切り替えと併用方法
- NoteRich P2P同期チュートリアル:クラウドなしのデバイス間同期
- NoteRich OCRチュートリアル:紙のノートをデジタルテキストにスキャン
- NoteRichローカルファーストAES-GCM暗号化の解説
- NoteRichローカルナレッジベースRAGチュートリアル
- NoteRich LaTeX数式ガイド:数式の書き方
- NoteRichのキーボードショートカットと生産性向上のヒント
- オンラインノートテイキングのためのNoteRichの機能と利点
- NoteRichプライバシーAIを使用して非公開でドキュメントを要約する方法
- NoteRichでMermaid.jsを使用してフローチャートを作成する方法 – 完全チュートリアル
- NoteRichに動画と添付ファイルを挿入する方法
- NoteRichでPDFとウォーターマークなしHTMLをエクスポートする方法
- NoteRichにインタラクティブなEChartsを埋め込む方法