チャット画面は、PlainAppに組み込まれたピアツーピアメッセンジャーです。開くと、ネットワーク上の他のすべてのPlainAppデバイス(ペアリング済みのピア、ペアリング待ちの未ペアピア、参加または作成したチャンネル(グループチャット))のリストが表示されます。タップすると、メッセージバブル、ファイル添付、メッセージごとの暗号化インジケーターが表示される会話ビューが開きます。
チャットはすべてスマートフォン上で動作します。中央サーバー、アカウント、電話番号の検索は一切不要です。メッセージは、利用可能な最適なトランスポート(両方のデバイスが対応している場合はWi-Fi Aware、それ以外はローカルネットワーク、検出用のフォールバックとしてBluetooth Low Energy)を介して、送信元デバイスからピアデバイスに直接送信されます。すべてのメッセージはエンドツーエンドで暗号化され、鍵はそれらを生成したデバイスから離れることはありません。


主な機能
- 直接ピアツーピアメッセージング — テキストとファイルを、中継を介さずに別のPlainAppデバイスに直接送信します。
- チャンネル(グループチャット) — チャンネルを作成し、ペアリング済みのピアを招待します。チャンネルメッセージはメンバーごとに個別に暗号化されます。
- ファイル添付 — ファイル画面から写真、ドキュメント、または任意のファイルを添付できます。ファイルは暗号化され、テキストと同じトランスポートで送信されます。
- メッセージごとの暗号化インジケーター — 各メッセージは、暗号化されてピアが確認応答するとロックアイコンを表示します。
- トランスポートのフォールバック — メッセージは、利用可能な最適なトランスポート(LAN、Wi-Fi Aware、または検出用BLE)を自動的に選択します。
- 長文メッセージのファイル化 — 2048文字を超えるメッセージは、テキストバブルの代わりに暗号化されたテキストファイルとして自動的に送信されます。
操作手順
- 下部ナビゲーションバーから「チャット」タブを開きます。リストには、ローカルチャット(自分のデバイス)、参加しているチャンネル、オンラインステータス付きのペアリング済みピアが表示されます。
- ペアリング済みのピアをタップして会話を開きます。ピアが未ペアの場合は、タップしてペアリングフローを開始します。ピアのQRコードをスキャンするか、ペアリングリクエストを受け入れます。
- 下部の入力バーにメッセージを入力し、送信を押します。メッセージ横のロックアイコンが暗号化状態を示し、ピアが受信を確認すると確定します。
- ファイルを添付 — 添付ボタンをタップし、ファイル画面からファイルを選択します。ファイルは暗号化され、アクティブなトランスポート経由でピアにアップロードされます。
- 暗号化インジケーターを確認 — 送信済みメッセージを長押しして、配信状態、暗号化鍵のフィンガープリント、使用されたトランスポートを確認できます。
- トランスポートの切り替え — ピアがLANとWi-Fi Awareの両方で到達可能な場合、会話は自動的に高速な方を選択します。プル・トゥ・リフレッシュで強制的に再接続できます。
ヒントとコツ
- 両方のデバイスを一度ペアリングすると、ペアリングは維持されます。ペアリング済みのピアは、同じネットワーク上に現れると自動的に再接続されます。
- チャンネルを作成すると、複数のピアに同時にグループメッセージを送信できます。各メンバーは、すべてのメッセージの個別に暗号化されたコピーを受信します。
- メッセージの送信に失敗した場合、タップして配信状況モーダルを開き、再入力せずに再試行できます。
- 長文メッセージ(2048文字超)は暗号化されたテキストファイルとして自動的に送信されるため、自分で分割する必要はありません。
プライバシーとセキュリティについて
- メッセージはXChaCha20-Poly1305でエンドツーエンド暗号化されます。鍵は会話ごとに派生し、参加デバイスから離れることはありません。
- 各デバイスはメッセージにEd25519鍵で署名します。ピアは、ペアリング時に交換された送信者の公開鍵に対して署名を検証します。
- ペアリングはECDH P-256鍵交換を使用して共有秘密を確立します。ペアリングのハンドシェイクはQRコードのスキャンまたは短命のローカルチャネルを介して行われ、いずれの段階でも中央サーバーは関与しません。
関連機能
- Webダッシュボードの暗号化P2Pチャット — スマートフォンが部屋の反対側にあるときに、ブラウザで利用できる同じチャット画面です。
- Androidのファイル管理 — ファイル画面からチャットメッセージに添付するファイルを選択できます。