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」を検索してインストール

ソースコードからのビルド(開発者向け)

自分でコンパイルしたり開発に参加したい場合:

BASH
# リポジトリをクローン
git clone https://github.com/permissionlesstech/bitchat.git
cd bitchat

# macOS ユーザーはワンコマンドで実行
brew install just
just run

# または Xcode で開く
open bitchat.xcodeproj

ソースコードからビルドする際は、いくつかの注意点があります:

BASH
# 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 コマンドスタイルを採用しており、古参ネットユーザーにはおなじみでしょう:

BASH
# 基本コマンド
/msg <ユーザー名> <メッセージ>    # プライベートメッセージを送信
/who                              # オンラインユーザーを確認
/slap <ユーザー名>                # クラシック IRC インタラクション(slap する)
/help                             # 利用可能な全コマンドを表示

# チャンネルと地理位置
/join <チャンネル名>              # チャンネルに参加
/geo                              # 現在の地理チャンネルを確認
/location <精度>                  # 地理チャンネルの精度を設定
                                  #   block      = ブロックレベル
                                  #   neighborhood = 近隣レベル
                                  #   city       = 都市レベル
                                  #   province   = 省/州レベル
                                  #   region     = 国/大区域

# セキュリティ
/wipe                             # 緊急消去(全データを消去、3回タップでも発動)

上級テクニック

地理位置チャンネルの設定

bitchat の地理チャンネルはキラー機能です。同じエリア内の bitchat ユーザーと、友達登録なしで自動的にチャットできます:

BASH
# 都市レベルに設定(数キロ以内の人がみんな見える)
/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 でチームメンバー間の通信を維持できます:

BASH
# 全員が bitchat をオンにする
# 近くのデバイスを自動発見し、Mesh ネットワークを構成
# メッセージがマルチホップ中継され、メンバーが分散していても通信可能

# 同城チャンネルを設定して近くの人と連絡
/location city

シナリオ2:大型イベント / 音楽フェス

コンサートや音楽フェスの現場では基地局が過負荷になりがちですが、bitchat は完全に影響を受けません:

BASH
# ブロックレベルのチャンネルに設定
/location block

# 近くの人とチャット、位置情報を共有
/msg friend 舞台の左側にいるよ、見えた?

シナリオ3:災害時应急通信

地震や洪水などの災害で基地局がダウンした場合、bitchat が命綱になります:

BASH
# 完全にオフラインで動作、インフラは一切不要
# マルチホップ Mesh でメッセージをより遠くまで伝達
# エンドツーエンド暗号化で救助情報のプライバシーを保護

シナリオ4:プライバシーセンシティブな場面

監視されたくない通信ニーズ:

BASH
# 完全匿名、電話番号登録不要
# 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 は私たちに思い出させてくれます。真の通信の自由とは、誰の許可も必要としないことだと。