
New releaseAug 1, 2026
bitchat v1.7.1
Bluetoothメッシュチャット、IRCの雰囲気
bitchat
分散型ピアツーピアメッセージングアプリ。デュアルトランスポートアーキテクチャを採用:ローカルのBluetoothメッシュネットワークによるオフライン通信と、インターネットベースのNostrプロトコルによるグローバル通信。アカウントも電話番号も中央サーバーも不要。サイドグループチャットのようなものです。
ライセンス
このプロジェクトはパブリックドメインに公開されています。詳細はLICENSEファイルをご覧ください。
特徴
- デュアルトランスポートアーキテクチャ: Bluetoothメッシュ(オフライン)+ Nostrプロトコル(インターネット経由のメッセージング)
- 位置情報ベースのチャンネル: グローバルなNostrリレー上の地理ハッシュ座標を使用した地理的チャットルーム
- インテリジェントメッセージルーティング: 最適なトランスポートを自動選択(Bluetooth → Nostrフォールバック)
- 分散型メッシュネットワーク: Bluetooth LEによる自動ピア発見とマルチホップメッセージリレー
- プライバシーファースト: アカウント不要、電話番号不要、永続的な識別子不要
- プライベートメッセージのエンドツーエンド暗号化: メッシュにはNoise Protocol、NostrにはNIP-17
- IRCスタイルのコマンド: おなじみの
/slap、/msg、/whoスタイルのインターフェース - ユニバーサルアプリ: iOSとmacOSをネイティブサポート
- 緊急ワイプ: トリプルタップで即座に全データ消去
- パフォーマンス最適化: LZ4メッセージ圧縮、アダプティブバッテリーモード、最適化されたネットワーキング
技術アーキテクチャ
BitChatはハイブリッドメッセージングアーキテクチャを採用し、2つの相補的なトランスポート層を持ちます:
Bluetoothメッシュネットワーク(オフライン)
- ローカル通信: Bluetooth範囲内の直接ピアツーピア
- マルチホップリレー: 近くのデバイスを経由してメッセージを転送(最大7ホップ)
- インターネット不要: 災害シナリオで完全オフライン動作可能
- Noise Protocol暗号化: 前方秘匿性を備えたエンドツーエンド暗号化
- バイナリプロトコル: Bluetooth LEの制約に最適化されたコンパクトなパケット形式
- 自動発見: ピア発見と接続管理
- アダプティブ電力: バッテリー最適化されたデューティサイクル
Nostrプロトコル(インターネット)
- グローバルリーチ: インターネットリレーを介して世界中のユーザーと接続
- 位置チャンネル: 地理ハッシュ座標を使用した地理的チャットルーム
- 290以上のリレーネットワーク: 信頼性のために世界中に分散
- NIP-17暗号化: インターネット上のプライバシーのためのギフトラップされたプライベートメッセージ
- 一時鍵: 地理ハッシュ領域ごとに新しい暗号化アイデンティティ
チャンネルタイプ
mesh #bluetooth
- トランスポート: Bluetooth Low Energyメッシュネットワーク
- スコープ: マルチホップ範囲内のローカルデバイス
- インターネット: 不要
- 用途: オフライン通信、抗議活動、災害時、遠隔地
位置チャンネル(block #dr5rsj、neighborhood #dr5rs、country #dr)
- トランスポート: インターネット上のNostrプロトコル
- スコープ: 地理ハッシュ精度で定義された地理的エリア
block(7文字):街区レベルneighborhood(6文字):地区・近隣city(5文字):都市レベルprovince(4文字):都道府県/州region(2文字):国/大規模地域
- インターネット: 必要(Nostrリレーに接続)
- 用途: 位置情報ベースのコミュニティチャット、ローカルイベント、地域ディスカッション
ダイレクトメッセージルーティング
プライベートメッセージはインテリジェントトランスポート選択を使用します:
-
Bluetooth優先(利用可能な場合に推奨)
- 確立されたNoiseセッションによる直接接続
- 最速かつ最もプライベートなオプション
-
Nostrフォールバック(Bluetoothが利用不可の場合)
- 受信者のNostr公開鍵を使用
- プライバシーのためのNIP-17ギフトラッピング
- グローバルリレーネットワークを経由
-
スマートキューイング(どちらも利用不可の場合)
- トランスポートが利用可能になるまでメッセージをキューイング
- 接続確立時に自動配信
詳細なプロトコルドキュメントについては、技術ホワイトペーパーをご覧ください。
セットアップ
オプション1: Xcodeを使用
cd bitchat
open bitchat.xcodeproj
デバイス上で実行するには、コードを準備するためのいくつかの手順があります:
- ローカル設定をクローン:
cp Configs/Local.xcconfig.example Configs/Local.xcconfig - 新しく作成した
Configs/Local.xcconfigにあなたのDeveloper Team IDを追加- Bundle IDは
chat.bitchat.<team_id>に設定されます(別の値に設定しない限り)
- Bundle IDは
- エンタイトルメントは手動で更新する必要があります(TODO: 自動化):
group.chat.bitchatをgroup.<your_bundle_id>に検索して置換(例:group.chat.bitchat.ABC123)
オプション2: justを使用
brew install just
macOSで試す場合:just runでセットアップしてソースから実行します。
その後、モバイルアプリのビルドと開発のために元の状態に戻すにはjust cleanを実行してください。
ローカライゼーション
- ベースアプリのリソースは
bitchat/Localization/Base.lproj/にあります。新しいコピーはLocalizable.stringsに、複数形ルールはLocalizable.stringsdictに追加してください。 - 共有拡張の文字列は別途
bitchatShareExtension/Localization/Base.lproj/Localizable.stringsにあります。 - キーは意図を説明するもの(
app_info.features.offline.titleなど)を優先し、可能な限り既存のものを再利用してください。 - 次のコマンドを実行してローカライゼーションの更新をコンパイルチェックしてください:
xcodebuild -project bitchat.xcodeproj -scheme "bitchat (macOS)" -configuration Debug CODE_SIGNING_ALLOWED=NO build