Nelosが「人」と「無線機」を切り離す理由
「チームの中であなたが誰か」が実際どこにあるのか - スマホのアプリの中か、物理的な無線機の中か - を詳しく見ていきます。無線機のバッテリーが切れたり、壊れたり、家に忘れてきたりした日に、その違いがなぜ重要になるのかも。
旅の2日目の朝、無線機のバッテリー接続部が緩んでいた - あるいはバッグから落ちて割れた、もしくは単純にトレイルヘッドに忘れてきた。誰かが予備機を貸してくれるか、念のため持ってきたバックアップを取り出す。大事なのは「この無線機の電源が入るか」ではなく、電源が入ったときにチームがまだあなたを認識してくれるかどうかだ。
その答えは、使っているアプリが「あなた」をどこに保持しているかで変わる。このガイドでは、Nelosがどう扱っているか、よく知られた2つのLoRaメッシュプロジェクト - Meshtasticと公式MeshCoreアプリ - との比較、そしてNelos自身のやり方にもまだ限界がある点を見ていく。
アイデンティティが存在しうる2つの場所
LoRaメッシュの構成は常にペアだ。アプリを動かすスマホと、スマホがBluetoothで話す小さな無線機。このペアのどこかに、「誰がこのメッセージを送ったか」「これは誰の位置情報か」に答える何かが必要で、それはどちらの側にも置ける。
それが無線機側にある場合、無線機そのものがあなたのアイデンティティになる。無線機が最初に起動したときに生成した鍵や番号が、チームが認識するものだ。無線機を交換すれば、別のアイデンティティを持つことになり、みんなが手動で「誰が誰か」を整理し直すまで、チームには見知らぬ新しい送信者として映る。
それがアプリ側にある場合、無線機は単にメッセージを電波に乗せて運ぶだけの存在になる。その瞬間スマホに接続されている無線機が何であれ、アプリはあなたが誰かを知っているし、チームの他の人のアプリも同様だ。
Nelosのやり方
Nelosは後者のアプローチを取る。Nelosを初めてインストールしたとき、そのインストールのための固有の識別子を生成し、スマホに保存する。その識別子 - 無線機が報告する何かではなく - が、あなたのメッセージ、位置情報、チーム名簿の中でのあなたの位置にラベル付けする。
別の対応する無線機をBluetoothで接続すると、Nelosはそれを新しい物理デバイスとして認識するが、あなた自身の識別子は変わらないので、チームからあなたがどう見えるかも変わらない。Nelosはチームの接続をバックグラウンドで自動的に再確立する。何か尋ねられる唯一の瞬間は、新しい無線機の周波数設定がチームの想定と一致しないときで、そのときは推測する代わりにどちらの設定を使うか確認する短い画面が表示される。ペアリング自体は本当に必要な一手間で、新しい無線機を他のデバイスと同じようにBluetoothで接続する必要があり、初回は自動でも瞬時でもない。
名前、参加しているチーム、チャット履歴 - そのすべてがアプリのインストールにとどまり、今どの物理的な無線機が接続されているかとは完全に独立している。
MeshtasticとMeshCore公式アプリのやり方
ここは正確に書く価値がある。「LoRaメッシュ」という言葉は、同じようには動作しないいくつもの異なるプロジェクトを含んでいるし、Nelos自体もMeshCoreプロトコルの上に構築されている。だからこれはその技術への批判ではなく、それぞれのソフトウェアがアイデンティティをどこに置くことを選んだかの記述に過ぎない。
Meshtasticは無線機自体の上で公開鍵・秘密鍵のペアを生成し、Meshtasticの公式ドキュメントは、ノードのアイデンティティが従来デバイスのハードウェアMACアドレス - メーカーによって固定される値 - から導かれてきたと明記している[1]。その鍵ペア - そしてそれが表すアイデンティティ - はその物理デバイスに存在する。Meshtasticのチームは、将来のファームウェア更新でノードIDの導出方法を変更することを公に議論しているが[2]、現時点では、Meshtasticノードをリセットまたは交換すると新しいアイデンティティが生まれると理解されており、ユーザーが古いアイデンティティを別のハードウェアに引き継ぐ、文書化された組み込みの方法はない。
MeshCore公式コンパニオンアプリ(その上に構築されたクライアントアプリとは別の、MeshCoreプロジェクト自体によるもの)も、ノードのアイデンティティ - Ed25519鍵ペア - を物理的な無線機の上で生成する。MeshCoreの公式ドキュメントにはデバイスの秘密鍵を読み取ったり設定したりするコマンドの記載があるが、それはシリアル/USB接続経由のみで、しかもリピーターとルームサーバー - 個人が持ち歩くコンパニオン無線機ではなくインフラ用ノード - に限られる[3]。コンパニオンアプリにはアプリ内のExport Settings/Import Settings機能があるが、MeshCoreのFAQはこれをファクトリーリセットの前後でデバイス自体の設定をバックアップ・復元する方法 - 同じ機器を復旧する方法 - として説明しており[4]、既存のアイデンティティを別の物理無線機に渡す方法としては文書化されていない。
比較
| 項目 | Nelos | Meshtastic | MeshCore公式アプリ |
|---|---|---|---|
| アイデンティティの所在 | アプリの中、あなたのスマホ | 無線機の中(デバイスに紐づく鍵ペア) | 無線機の中(デバイスに保存されたEd25519鍵ペア) |
| 別の対応無線機に切り替える | 同じアイデンティティ - チームはあなたを認識し続ける | 新規/リセットされたノード上で新しいアイデンティティ、移行は文書化されていない | アイデンティティはその特定の機器に紐づく。コンパニオン無線機間の移行は文書化されていない |
| デバイス自体の設定のバックアップ・復元 | まだ未対応 - 予定あり | アイデンティティのレベルでは文書化されていない | あり、Export/Import Settings - 同じデバイスの復旧用 |
| 新しいスマホ、またはアプリの再インストール | 新しいアイデンティティ(まだ復旧手段なし) | 該当なし - スマホはアイデンティティを保持しない | 該当なし - スマホはアイデンティティを保持しない |
実際どういう意味を持つか
アイデンティティをアプリ側に置くことの実際的なメリットは、主にハードウェアについてあまり深く考えなくて済むという点にある。
- メイン機とバックアップ機など、複数の対応無線機を所有しても、チームに別人として扱われることがない。
- 旅先ごとに違う無線機を持ち出しても(日帰りハイキング用の小型機、複数日の旅用の長距離機など)、みんなに自分が誰かを説明し直す必要がない。
- 現地で誰かの機器が壊れたとき、予備の無線機を借りたり貸したりして、すぐにその機器経由でチームと話を続けられる。
- 紛失・故障した無線機を交換したあと、代替機をペアリングすれば同じ会話、同じチームにそのまま戻れる。
この方式にもまだある限界
ここまでの話は無条件ではない。限界についても同じくらいはっきりさせておく価値がある。
- 無線機の切り替えには、新しい機器をBluetoothでペアリングする作業が依然として必要で、それをするまでは自動にはならない。無線機の設定がチームと異なる場合、Nelosはどちらを使うか確認を求める。
- あなたのアイデンティティはスマホの中、その1つのアプリのインストールに紐づいている - アカウントの中ではない。Nelosにはそもそもアカウントがないからだ。アプリの再インストール、データの消去、新しいスマホへの乗り換えは、現在のところ新しいアイデンティティを始めることになる。それを復旧する手段はまだない。
- 新しいアイデンティティになるということは、チームからは再び新しい見知らぬメンバーとして見られるということで、これはこのガイドで比較した他のアプリで無線機を交換したときと同じ結果だ。Nelosはそのリスクを無線機からスマホ側のアプリデータへ移しただけとも言える。
ハードウェアは交換しても、人はそのまま。
それがすべての狙いだ。無線機は交換可能な部品であり、あなたのアイデンティティではない。バッグの中にどの対応機が入っていても、チームは変わらず同じ人物を見ている。
Nelosは MeshCore プロトコルの上に構築された独立したアプリケーションであり、MeshtasticプロジェクトやMeshCoreプロジェクトと提携、支援、公認の関係にはありません。参照元(公式ドキュメントと直接照合済み):
- Meshtastic - 暗号化の概要(ハードウェアMACアドレスに基づくノードID)
- Meshtastic firmware - 「公開鍵からノードIDを生成する」議論
- MeshCore Docs - CLI Commands(秘密鍵コマンド、シリアルのみ、リピーター/ルームサーバー/センサー向け)
- MeshCore Docs - FAQ(ファクトリーリセット前後のExport Settings / Import Settings)
現代的なオフグリッドのグループ通信アプリをお探しですか? Nelosの仕組みをご覧ください。
Nelosは、携帯電波なし・サーバーなし・アカウント不要で、グループメッセージ、位置情報の共有、リアルタイムのグループ地図をLoRaメッシュにもたらします。