はじめに
Nostrという、SNSのようなものはご存知でしょうか?
ご存知でなければ、ぜひまず一度触ってみることをお勧めします。
割と普通にSNSっぽく使えます。
分散系SNSっぽいシステム
Nostrは、分散系のSNSっぽいネットワークです。
図で表すとこんな感じ。普通に想像するWebサービスとは随分形が違うと思います。
各所のリレーサーバーに、ユーザーは投稿をばらまき、ユーザーがそれを見る形です。
分散の責任がユーザー(クライアント)側にあって、リレーサーバーが落ちたり消えたりしても影響が起きにくい仕組みです。
より詳しい説明は上記でやってるのですが、端的に言って
- 中央管理者がいない(各リレーに管理者はいる)
- 冗長で災害に強い
- Websocketのリアルタイム通信
- オープンでシンプルで、でも拡張し放題な仕様
- 数多のサーバーによる分散ネットワーク
といった特徴があります。
※P2P技術は使用していません。ファイルの共有も(原則)できません。文字のみです。
匿名化技術も使用されていません。
気軽にサーバーを立てられる
上記の特徴から、リレーが非常に気軽に建てられます。
プロセス一個で建てられます。例えば最低限の実装では131行しかありません。
虚無リレーなら28行です。
別にネットワークに参加させるとか言うことも気にしなくてOKです。
(リレー同士は相互接続しないのが通常です、一部相互接続していることがあります)
ローカルで立てて動かしてもよし、適当に公開してもよし。
サーバーダウンしても他のリレーが冗長経路として機能するので、特殊なリレーでない限り誰も困りません。
※ 流石に壊れた情報を返すのを放っておくと、接続してる人に迷惑がかかりますが、自分しか接続してないリレーなら問題ありません。
クライアントは複数のリレーに同時に接続する仕組みなので、自分しか接続しないローカルリレーと、ハブリックなリレーを混ぜて接続して遊ぶことができます。
仕様にはたくさんの仕組みがあり、それをサポートするかどうかは殆どの項目において自由です。
気軽にAPIを叩いてbotやクライアントを作れる
ともかく動かしてみようか
例えば、
に行き、
wss://yabu.me
に接続して
["REQ","test",{"kinds":[1],"limit":10}]
を送信してみてください。
10件くらいメッセージが出てきたあと、ポコポコとメッセージが湧いて出てくると思います。
["REQ","test",{"kinds":[1],"limit":0,"authors":["9f77d173dcd94cc4243d36883b157f8c3283051dc6bd237b1c5ac400fb90cecb"]}]
で送信すると、地震情報がリアルタイムに流れてきます。
Websocketと、人間が読める単純な電文でクライアントが実現できます。
送信の際には、署名処理が必要なのでもちょっと大変ですが、この辺を参照してください。
ちなみに、nostrのライブラリは意外と色々ありまして、すでにArduino環境から投稿したりもできます。
API制限なし
ところで、ここまで見てみてわかったと思いますが、API制限とかはありません。
そもそもAPI登録もありません。
利用許可を求める必要もありません。
公式クライアントもないので、全員が同じ土俵の上なのです。
こんなにも自由なところは中々ありません。しかも割りと実用的に動いている。
秘密鍵は外部に漏らさないように注意してください。
可能な限り、常用のアカウント(鍵ペア)ではなく、実験用のアカウント(鍵ペア)を作成して使用することをお勧めします。
あまりに異常なリクエストは弾かれたり、迷惑なスパムや迷惑なbotはリレーから追い出される可能性があります。リレーの様子は伺ってください。
Nostrの性質上、海外含めた多数のリレーが使用できるため、BANの影響は少ないですが、日本リレーからBANされた場合、日本語コミュニティとの交流に支障をきたすことになりますので、ご注意ください。
必要に応じて、自前で試験用のリレーを立てるなど、影響を少なくする方法を検討してください。
また、リレーごとのポリシーについては、各リレーが提供するNIP-11情報(リレーメタ情報)を参照してください。対応しているアプリケーションではGUIで確認することができます。
おわりに
あなたも遊んでみませんか?
nostr日本コミュニティは結構活発です。下記をご覧ください。
▽それ、1個のアカウントで全部できるよ。そう、Nostrならね。 - godzhigella
※このサイト自体もnostrで実装されています。
掲示板風実装とかもあります
注意
Nostr Assets ProtocolおよびNostrトークンは、Nostrの名前を勝手に使用している無関係の(おそらく詐欺)通貨です。混同しないようにご注意ください。
同人誌は電子版購入可能です。