Slide 1

Slide 1 text

Nostr の 耐障害性 と WebSocket を 使い倒す 2024/2/10 Shino3(しのさん)

Slide 2

Slide 2 text

お題目 • 簡単な自己紹介 • Nostr とは? • 日本国内でのNostr • 耐障害性のお話 • 通信の仕組み • 活用事例の提案 • 実際に作ったもの • これからの展望

Slide 3

Slide 3 text

自己紹介 通称名: Shino3(しのさん) Twitter: SHINOHARATTT GitHub: ShinoharaTa Nostr: @shino3.net Bluesky: @shino3.net Domain: shino3.net NostrRelay: relay-jp.shino3.net

Slide 4

Slide 4 text

自己紹介 • 工業高校出身 • 電気科、電気回路、電子回路メイン • 専門の短大出身 • 電気回路、電子回路 • メーカー勤務 • 組み込み開発 2年 • システム開発 4年 • 都内、受託開発系 • Webシステム系 5年

Slide 5

Slide 5 text

自己紹介 • 経験してきた言語 • C言語、C++、C# • PHP、Laravel • JavaScript、TypeScript Vue、Nuxt、Svelte • 勉強中 • Rust • Flutter(Dart) • インフラ、Grafana等

Slide 6

Slide 6 text

自己紹介 • 経験してきた言語 • C言語、C++、C# • PHP、Laravel • JavaScript、TypeScript Vue、Nuxt、Svelte • 勉強中 • Rust • Flutter(Dart) • インフラ、Grafana等 Vim経験:0秒

Slide 7

Slide 7 text

プライベート • 趣味 • プログラミング • 車の競技(参加者側) • DIY • 好きなもの • キングサーモン • アトランティックサーモン • トラウトサーモン • 信州サーモン • 推し • 檜山沙耶さん • アトランティックサーモン

Slide 8

Slide 8 text

Nostr とは

Slide 9

Slide 9 text

Notes and Other Stuff Transmitted by Relays リレーによって通信される ノートやそれ以外のもの

Slide 10

Slide 10 text

NIP という Nostr Implementation Possibilities プロトコル仕様を 管理する仕組みがある

Slide 11

Slide 11 text

NIP-01 という仕様で 単一の JSON 構造を 定義する

Slide 12

Slide 12 text

複数のサーバーと同時接続 冗長化される

Slide 13

Slide 13 text

複数のサーバーと 複数の管理者が 存在する

Slide 14

Slide 14 text

接続は WebSocketを 使用する

Slide 15

Slide 15 text

究極の分散

Slide 16

Slide 16 text

真の 分散型SNS

Slide 17

Slide 17 text

日本国内での Nostr

Slide 18

Slide 18 text

日本国内での Nostr • 2月 : 凍結祭りのときに Damus がリリースされる • 2月 : Nostr 勉強会(日本初)を開催(以降、定期的に開催) • 5月 : 技術書典で Nostr の本を出版した • 7月 : X(Twitter) の API リミットでユーザー数が大幅増加 • 11月 : Nostrasia イベントが開催 Twitter 創設者のジャック・ドーシーが来日 • 11月 : 技術書典で Nostr の本(二冊目)を出版した

Slide 19

Slide 19 text

SoftwareDesign 誌への連載

Slide 20

Slide 20 text

技術書典で本を販売 • 物理本:200冊 完売 • 電子版:160冊 販売中 • 物理本:150冊 完売 • 電子版:128冊 販売中

Slide 21

Slide 21 text

Nostrasia での一幕

Slide 22

Slide 22 text

Nostrの 耐障害性

Slide 23

Slide 23 text

Nostrの特徴:冗長性

Slide 24

Slide 24 text

Nostrの特徴:冗長性 EMERGENCY

Slide 25

Slide 25 text

Nostrの特徴:冗長性 DOWN DOWN

Slide 26

Slide 26 text

DOWN DOWN Nostrの特徴:冗長性 つながる!

Slide 27

Slide 27 text

通信の仕組み

Slide 28

Slide 28 text

WEB Socket を 使用する

Slide 29

Slide 29 text

一度接続した コネクションを

Slide 30

Slide 30 text

無限に 使い倒す

Slide 31

Slide 31 text

再接続をしないので

Slide 32

Slide 32 text

爆速!! 鬼速い!!

Slide 33

Slide 33 text

駅で・・・

Slide 34

Slide 34 text

街中で・・・

Slide 35

Slide 35 text

つながる!

Slide 36

Slide 36 text

{ "id": "シリアライズされたイベントデータのSHA-256(32バイト)を 小文字の16進数で表記したもの", "pubkey": "公開鍵(32バイト)を小文字の16進数で表記したもの", “created_at”: “秒単位の生成時刻", "kind": "イベントの種類", "tags": [ ["e", "..."], ["...", "他の種類のタグが後に追加される可能性がある"] ], "content":"任意の文字列", "sig": "シリアライズされたイベントデータのSHA-256 (IDフィールドと同じ)に対する署名を16進数で表記したもの" } NIP-01 に基づく JSON 構造

Slide 37

Slide 37 text

データ種別の定義 • Kind 0 : ユーザーのプロフィールなど • Kind 1 : みんなの投稿 • Kind 6 : リポスト • Kind 7 : いいねなどのリアクション • Kind 40 : パブリックチャット(チャットルームなど • Kind 42 : パブリックチャットのコメント

Slide 38

Slide 38 text

Kind 30023 Long-form content

Slide 39

Slide 39 text

Habla

Slide 40

Slide 40 text

Nosli

Slide 41

Slide 41 text

Kind 30078 Application-specific data

Slide 42

Slide 42 text

野洲田川 定点観測所

Slide 43

Slide 43 text

流速ちゃん Bot

Slide 44

Slide 44 text

活用事例の 提案

Slide 45

Slide 45 text

通信の軽さ

Slide 46

Slide 46 text

即時性

Slide 47

Slide 47 text

耐障害性

Slide 48

Slide 48 text

災害時 情報配信サービス

Slide 49

Slide 49 text

2024/1/1

Slide 50

Slide 50 text

能登半島地震

Slide 51

Slide 51 text

起きていたこと •インターネットが繋がらない • 被災地周辺でのパケ詰まり

Slide 52

Slide 52 text

実際に 作ったもの

Slide 53

Slide 53 text

気象 警戒 システム

Slide 54

Slide 54 text

仕組み 緊急地震速報

Slide 55

Slide 55 text

WEB クライアント 仕組み 緊急地震速報 Kind 1 投稿 Kind 1 投稿 Kind 1 投稿 Kind 1 投稿

Slide 56

Slide 56 text

補足 https://www.docswell.com/s/matsuu/KNRMQG-2023-02-23-002146

Slide 57

Slide 57 text

リアルタイム 緊急地震速報 表示システム

Slide 58

Slide 58 text

https://github.com/ShinoharaTa - eew2nostr - eew2nostr-viewer

Slide 59

Slide 59 text

緊急地震速報表示システム WEB クライアント 仕組み 緊急地震速報 Kind 1 投稿 Kind 1 投稿 Kind 1 投稿 Kind 1 投稿 Kind 30078 アプリ利用 データ

Slide 60

Slide 60 text

今後やりたいこと •Information Dashboard • 災害情報、警戒情報 • 津波、震度情報 • 潮位、河川水位 • etc

Slide 61

Slide 61 text

開発の協力者も 募集してます

Slide 62

Slide 62 text

大量の情報社会

Slide 63

Slide 63 text

確実に情報を 届けるための 手段

Slide 64

Slide 64 text

必要なくなる日を 期待します

Slide 65

Slide 65 text

最後に

Slide 66

Slide 66 text

#とは

Slide 67

Slide 67 text

No content