概要
bitchat は、インターネット不要で Bluetoothメッシュ ネットワーク上に構築される 分散型メッセージングアプリ。 エンドツーエンド暗号化 や プライバシー保護 機能を搭載し、サーバーや電話番号が不要。 iOS と macOS で動作し、 パブリックドメイン で公開。 パフォーマンス最適化 や緊急データ消去機能も充実。 Android対応 も可能な設計。
bitchat:BluetoothメッシュP2Pメッセージングアプリの特徴
- 分散型メッシュネットワーク :Bluetooth LEによる自動ピア発見とマルチホップ中継
- エンドツーエンド暗号化 :X25519鍵交換+AES-256-GCMでプライベートメッセージを暗号化
- ルームベースチャット :トピック別グループチャット、パスワード保護も選択可能
- ストア&フォワード :オフラインピア向けにメッセージを一時保存、再接続時に配信
- プライバシー重視 :アカウント・電話番号・永続識別子不要
- IRC風コマンド :/join, /msg, /who など馴染みやすい操作体系
- メッセージ保持 :ルームオーナーが制御するオプションの保存機能
- ユニバーサルアプリ :iOS、macOSにネイティブ対応
- カバートラフィック :タイミング難読化とダミーメッセージで通信分析対策
- 緊急ワイプ :トリプルタップで全データ即時消去
- パフォーマンス最適化 :LZ4圧縮、バッテリーモード適応、ネットワーク最適化
セットアップ手順
- XcodeGen利用(推奨)
- XcodeGenインストール:
brew install xcodegen - プロジェクト生成:
cd bitchat && xcodegen generate - プロジェクトを開く:
open bitchat.xcodeproj
- XcodeGenインストール:
- Swift Package Manager利用
- プロジェクトを開く:
cd bitchat && open Package.swift - ターゲットデバイス選択後、実行
- プロジェクトを開く:
- 手動セットアップ
- 新規iOS/macOSアプリ作成
- bitchatディレクトリ内のSwiftファイルをすべて追加
- Info.plistにBluetooth権限を追加
- デプロイメントターゲットをiOS 16.0 / macOS 13.0に設定
基本コマンド一覧
/j #room:ルームに参加または新規作成/m @user message:プライベートメッセージ送信/w:オンラインユーザー一覧表示/rooms:検出済みルーム一覧/clear:チャットメッセージ消去/pass [password]:ルームパスワード設定/変更(オーナーのみ)/transfer @user:ルーム所有権移譲/save:ルームのメッセージ保持切替(オーナーのみ)
利用開始方法
- bitchatを起動し、ニックネームを設定(自動生成も可)
- 近隣ピアと自動接続
/j #generalでルーム参加、またはパブリックチャット開始- メッセージはメッシュネットワーク経由で遠隔ピアにも中継
ルーム機能
- パスワード保護 :オーナーが
/passで設定 - メッセージ保持 :
/saveで強制保存を有効化可能 - @メンション :
@nicknameでユーザー指定、オートコンプリート対応 - 所有権移譲 :信頼できるユーザーに
/transferで権限移譲
セキュリティ&プライバシー
- 暗号化
- プライベートメッセージ:X25519鍵交換+AES-256-GCM
- ルームメッセージ:Argon2idパスワード導出+AES-256-GCM
- デジタル署名:Ed25519によるメッセージ真正性保証
- フォワードセキュリティ:セッション毎に新規鍵ペア生成
- プライバシー機能
- 登録不要:アカウント・メール・電話番号一切不要
- デフォルトで揮発性:メッセージは端末メモリ上のみ
- カバートラフィック:ランダム遅延・ダミーメッセージで通信分析防御
- 緊急ワイプ:ロゴを3回タップで即時全データ消去
- ローカルファースト:完全オフライン動作、サーバー非依存
パフォーマンス&省電力
-
メッセージ圧縮
- LZ4圧縮:100バイト超のメッセージを自動圧縮、帯域30-70%節約
- スマート圧縮:既に圧縮済みデータはスキップ
-
バッテリー最適化
- 適応型パワーモード:バッテリー残量に応じて自動調整
- パフォーマンスモード:充電中または60%以上
- バランスモード:30-60%
- 省電力:30%未満
- 超省電力:10%未満で緊急モード
- バックグラウンド効率化:アプリがバックグラウンド時は自動省電力
- スキャン間隔もバッテリー状態で最適化
- 適応型パワーモード:バッテリー残量に応じて自動調整
-
ネットワーク効率
- 最適化Bloomフィルタ:重複検出高速化、省メモリ
- メッセージ集約:小メッセージをまとめて送信
- 接続数自動制限:パワーモードに応じてピア数調整
技術アーキテクチャ
-
バイナリプロトコル
- 1バイトタイプフィールドのコンパクトパケット
- TTLベースのメッセージルーティング(最大7ホップ)
- 大容量メッセージの自動分割
- 一意IDによるメッセージ重複排除
-
メッシュネットワーク
-
各端末がクライアント兼ペリフェラルとして機能
-
自動ピア発見・接続管理
-
オフライン配信のためのストア&フォワード
-
バッテリー最適化のための適応型デューティサイクル
-
詳細なプロトコル仕様はTechnical Whitepaper参照
-
本番構築・配布
- プロジェクト設定で開発チーム指定
- コード署名を構成
- App StoreまたはTestFlightで配布用にアーカイブ
Android互換性
- プロトコルはプラットフォーム非依存設計
- Bluetooth LE API利用
- 同一パケット構造・暗号化方式
- サービス/キャラクタリスティックUUIDも互換
bitchat は、真の オフグリッド通信 と プライバシー を両立する次世代メッセージングアプリ。 サーバーやインフラ不要で、緊急時や検閲回避にも活用可能。