bitchat とは?
bitchat は脱中心化の P2P インスタントメッセンジャーで、最もクールな点はインターネットが完全に不要なこと。Bluetooth Low Energy(BLE)Mesh ネットワークを使って、近くのデバイスが自動的にネットワークを構成し、マルチホップでメッセージを中継することで、真のオフライン通信を実現します。
このプロジェクトは現在 GitHub で 28,000 以上の Star を獲得しており、最近最もホットなオープンソース通信プロジェクトの一つです。Unlicense(パブリックドメイン) ライセンスを採用し、完全に自由に使えます。
コア機能一覧
| 機能 | 説明 |
|---|---|
| 🔌 デュアルトランスポートアーキテクチャ | Bluetooth Mesh(ローカルオフライン)+ Nostr プロトコル(インターネット経由のグローバル通信) |
| 🔒 エンドツーエンド暗号化 | Bluetooth は Noise Protocol、Nostr は NIP-17 |
| 📡 自動ネットワーク構成 | デバイスが自動発見・マルチホップメッセージ中継(最大7ホップ) |
| 🕵️ 完全匿名 | アカウント不要、電話番号不要、永続的な識別子なし |
| 🌍 ジオチャンネル | geohash ベースの位置情報チャットルーム |
| 🚨 緊急消去 | 画面を3回タップで瞬時に全データを消去 |
| 📱 全プラットフォーム | iOS + macOS ネイティブ対応 |
従来のチャットアプリと何が違う?
微信/Telegram/Signal:
ユーザー → インターネット → 中央サーバー → インターネット → ユーザー
bitchat(Bluetooth モード):
デバイスA → デバイスB → デバイスC → デバイスD(マルチホップ Mesh、インターネット不要)
bitchat(Nostr モード):
ユーザー → Nostr リレーネットワーク(脱中心化)→ ユーザー
最大の差はこうです:基地局が落ちても、ネットワークがダウンしても、深山里にいても、bitchat はちゃんと使える。
テクニカルアーキテクチャ徹底解析
bitchat の素晴らしい点はデュアルトランスポートハイブリッドアーキテクチャにあります。Bluetooth がローカル通信を担当し、Nostr がグローバル接続を担い、両者はシームレスに切り替わります。
Bluetooth Mesh ネットワーク層
Bluetooth Mesh は bitchat のコアイノベーションです。Bluetooth Low Energy(BLE)を使ってデバイス間の直接通信を実現します:
- 自動発見:デバイスが範囲内に入ると自動的に近くのノードを認識
- マルチホップ中継:メッセージがデバイス間をジャンプでき、最大7ホップで通信範囲を大幅に拡大
- Noise Protocol 暗号化:エンドツーエンド暗号化 + フォワードシークレシー。鍵が漏洩しても過去のメッセージは復号不可能
- バイナリプロトコル:BLE の帯域制限に最適化されたコンパクトなデータパケット形式
- 適応型電源管理:インテリジェントなデューティ比調整でバッテリー寿命を延長
Nostr プロトコル層
Bluetooth が使えない場合、bitchat は自動的に Nostr プロトコルに切り替えてインターネット通信を行います:
- 290 以上のグローバルリレーノード:分散ネットワークで信頼性を確保
- 地理位置チャンネル:geohash 座標ベースのローカルコミュニティチャット
- NIP-17 暗号化:Gift-wrapped プライベートチャットメッセージでインターネット上のプライバシーを保護
- 一時鍵:geohash ごとに暗号化IDを新規生成
インテリジェントなメッセージルーティング
bitchat のメッセージルーティング戦略は非常に賢い:
優先度 1:Bluetooth 直接接続(最速・最もプライベート)
↓ 利用不可
優先度 2:Nostr リレー(グローバルカバー)
↓ 利用不可
優先度 3:メッセージキュー(接続復帰後に自動配信)
インストールとクイックスタート
iOS / macOS インストール
bitchat は Apple エコシステムのネイティブアプリで、App Store から直接ダウンロードできます:
App Store で「Bitchat Mesh」を検索してインストール
ソースコードからのビルド(開発者向け)
自分でコンパイルしたり開発に参加したい場合:
# リポジトリをクローン
git clone https://github.com/permissionlesstech/bitchat.git
cd bitchat
# macOS ユーザーはワンコマンドで実行
brew install just
just run
# または Xcode で開く
open bitchat.xcodeproj
ソースコードからビルドする際は、いくつかの注意点があります:
# 1. ローカル設定テンプレートをコピー
cp Configs/Local.xcconfig.example Configs/Local.xcconfig
# 2. Local.xcconfig に Developer Team ID を追加
# 3. Entitlements を手動で更新:
# group.chat.bitchat を group.<あなたのTeamID> に置き換え
初めての使い方
bitchat を開くと、IRC 風のターミナル画面が表示されます。これがまさに bitchat の特徴です:
╔══════════════════════════════════╗
║ bitchat v2.0 ║
║ bluetooth mesh chat ║
╠══════════════════════════════════╣
║ [mesh] mesh ネットワークへようこそ! ║
║ [mesh] 近くのデバイスを3つ発見 ║
║ ║
║ <alice> おい、誰かいる? ║
║ <bob> いるよ!電波バッチリ ║
║ <you> テストメッセージ、オフラインでも送れる ║
║ ║
║ > /help コマンド一覧を表示 ║
╚══════════════════════════════════╝
IRC 風コマンドクイックリファレンス
bitchat はクラシックな IRC コマンドスタイルを採用しており、古参ネットユーザーにはおなじみでしょう:
# 基本コマンド
/msg <ユーザー名> <メッセージ> # プライベートメッセージを送信
/who # オンラインユーザーを確認
/slap <ユーザー名> # クラシック IRC インタラクション(slap する)
/help # 利用可能な全コマンドを表示
# チャンネルと地理位置
/join <チャンネル名> # チャンネルに参加
/geo # 現在の地理チャンネルを確認
/location <精度> # 地理チャンネルの精度を設定
# block = ブロックレベル
# neighborhood = 近隣レベル
# city = 都市レベル
# province = 省/州レベル
# region = 国/大区域
# セキュリティ
/wipe # 緊急消去(全データを消去、3回タップでも発動)
上級テクニック
地理位置チャンネルの設定
bitchat の地理チャンネルはキラー機能です。同じエリア内の bitchat ユーザーと、友達登録なしで自動的にチャットできます:
# 都市レベルに設定(数キロ以内の人がみんな見える)
/location city
# ブロックレベルに設定(ごく近くの人だけ)
/location block
# 現在の地理位置チャンネルを確認
/geo
地理チャンネルは geohash エンコーディングに基づいており、精度は粗い方から順に:
| 精度 | geohash 長 | カバー範囲 | 利用シーン |
|---|---|---|---|
| region | 2 文字 | 国レベル | 全国ディスカッション |
| province | 4 文字 | 省/州レベル | 省内交流 |
| city | 5 文字 | 都市レベル | 同城コミュニティ |
| neighborhood | 6 文字 | 近隣レベル | 近隣交流 |
| block | 7 文字 | ブロックレベル | 対面イベント |
プライベートチャットの暗号化原理
bitchat のプライベートチャット暗号化は、トランスポート方式に応じて最適な方式を自動選択します:
Bluetooth モード(Noise Protocol):
1. 両者が BLE 接続を確立
2. Noise Protocol ハンドシェイクを実行
3. セッション鍵を生成(フォワードシークレシー)
4. 全メッセージをエンドツーエンド暗号化して送信
Nostr モード(NIP-17 Gift Wrap):
1. 相手の Nostr 公開鍵を取得
2. メッセージを相手の公開鍵で暗号化
3. 外側を一時鍵で再度包装(ギフトラップ)
4. Nostr リレー経由で配信、リレーは内容を復号できない
緊急セキュリティメカニズム
センシティブな場面(デモ活動や災害現場など)で、bitchat は高速消去機能を提供します:
- 3回タップ消去:画面を連続3回タップすると、チャットデータ、鍵、身元情報を瞬時に消去
- 永続識別子なし:接続ごとに一時IDを使用、痕跡を残さない
- ローカルストレージ:全データはデバイスローカルのみに保存、サーバーへのアップロードは一切なし
実践シナリオ
シナリオ1:アウトドア / 登山ハイキング
携帯電波の届かない山の中でも、bitchat でチームメンバー間の通信を維持できます:
# 全員が bitchat をオンにする
# 近くのデバイスを自動発見し、Mesh ネットワークを構成
# メッセージがマルチホップ中継され、メンバーが分散していても通信可能
# 同城チャンネルを設定して近くの人と連絡
/location city
シナリオ2:大型イベント / 音楽フェス
コンサートや音楽フェスの現場では基地局が過負荷になりがちですが、bitchat は完全に影響を受けません:
# ブロックレベルのチャンネルに設定
/location block
# 近くの人とチャット、位置情報を共有
/msg friend 舞台の左側にいるよ、見えた?
シナリオ3:災害時应急通信
地震や洪水などの災害で基地局がダウンした場合、bitchat が命綱になります:
# 完全にオフラインで動作、インフラは一切不要
# マルチホップ Mesh でメッセージをより遠くまで伝達
# エンドツーエンド暗号化で救助情報のプライバシーを保護
シナリオ4:プライバシーセンシティブな場面
監視されたくない通信ニーズ:
# 完全匿名、電話番号登録不要
# Bluetooth モードはどのサーバーも経由しない
# 3回タップ消去で素早く証拠を消去
他の脱中心化通信ツールとの比較
| 機能 | bitchat | Briar | Bridgefy | Meshtastic |
|---|---|---|---|---|
| Bluetooth Mesh | ✅ | ✅ | ✅ | ✅(LoRa) |
| インターネットバックアップ | ✅ Nostr | ✅ Tor | ❌ | ❌ |
| エンドツーエンド暗号化 | ✅ | ✅ | ✅ | ✅ |
| 匿名・登録不要 | ✅ | ✅ | ❌ | ✅ |
| iOS 対応 | ✅ | ❌ | ✅ | ❌ |
| ジオチャンネル | ✅ | ❌ | ❌ | ❌ |
| オープンソースライセンス | Unlicense | GPL | 一部オープンソース | GPL |
| GitHub Star | 28K+ | 5K+ | 3K+ | 4K+ |
bitchat のユニークな強みはBluetooth + Nostr デュアルモードアーキテクチャとジオチャンネル機能にあり、これは同種のツールの中で唯一無二です。
まとめ
bitchat は精巧に設計された脱中心化通信ツールです。それが証明したのはこうです:インフラが機能を失った場面でも、私たちは繋がっていられる。
誰におすすめ? - 🏕️ アウトドア愛好家(登山、キャンプ、探検) - 🎪 大型イベント参加者(音楽フェス、展示会、スポーツイベント) - 🔐 プライバシーギーク(完全匿名通信を追求する人) - 🆘 災害時通信ニーズのある人(災害救援、防災準備) - 👨💻 開発者(Mesh ネットワークと脱中心化プロトコルに興味がある人)
プロジェクトアドレス: github.com/permissionlesstech/bitchat
ダウンロード: iOS/macOS は App Store で「Bitchat Mesh」を直接検索
すべての通信が中央サーバーに依存する時代において、bitchat は私たちに思い出させてくれます。真の通信の自由とは、誰の許可も必要としないことだと。