Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Nostr x Gorilla Vim Collaboration
Search
Takuma Shinohara
February 10, 2024
Technology
0
400
Nostr x Gorilla Vim Collaboration
Takuma Shinohara
February 10, 2024
Tweet
Share
More Decks by Takuma Shinohara
See All by Takuma Shinohara
What's is Bluesky
shinoharata
0
960
dissolute fat
shinoharata
0
190
20240520_toranoana_lab.pdf
shinoharata
0
180
民主的なSNSは日本を救う
shinoharata
0
320
press_on_nostr_book
shinoharata
0
270
abc2023_slide_upload.pdf
shinoharata
0
310
LNBits で始める 家電Hack
shinoharata
0
190
NIP-78 nostr relay storage
shinoharata
0
220
Blueskyのいろいろ作ってみた
shinoharata
0
270
Other Decks in Technology
See All in Technology
早くて強い「リアルタイム解析基盤」から広げるマルチドメイン&プロダクト開発
plaidtech
PRO
1
180
テクスチャ画像付きのメッシュモデルを3次元点群へ変換する
kentaitakura
1
190
プロダクト開発者目線での Entra ID 活用
sansantech
PRO
0
300
株式会社Awarefy(アウェアファイ)会社説明資料 / Awarefy-Company-Deck
awarefy
3
12k
Postman AI Agent Builderで AI Agentic workflow のプロトタイピング / Prototyping AI Agentic Workflow with Postman AI Agent Builder
yokawasa
0
210
失敗しないAIエージェント開発:階層的タスク分解の実践
kworkdev
PRO
0
680
事業を差別化する技術を生み出す技術
pyama86
4
1.3k
目標と時間軸 〜ベイビーステップでケイパビリティを高めよう〜
kakehashi
PRO
8
1.2k
OCI IAM Identity Domains Entra IDとの認証連携設定手順 / Identity Domain Federation settings with Entra ID
oracle4engineer
PRO
1
1.4k
Quality with Angular: Tools and Processes
rainerhahnekamp
0
120
Global Databaseで実現するマルチリージョン自動切替とBlue/Greenデプロイ
j2yano
0
230
リクルートのエンジニア組織を下支えする 新卒の育成の仕組み
recruitengineers
PRO
2
230
Featured
See All Featured
Intergalactic Javascript Robots from Outer Space
tanoku
270
27k
Build The Right Thing And Hit Your Dates
maggiecrowley
34
2.6k
Product Roadmaps are Hard
iamctodd
PRO
51
11k
Raft: Consensus for Rubyists
vanstee
137
6.8k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
134
33k
Large-scale JavaScript Application Architecture
addyosmani
511
110k
Reflections from 52 weeks, 52 projects
jeffersonlam
348
20k
Measuring & Analyzing Core Web Vitals
bluesmoon
6
270
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
120k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
49
2.3k
Six Lessons from altMBA
skipperchong
27
3.6k
Art, The Web, and Tiny UX
lynnandtonic
298
20k
Transcript
Nostr の 耐障害性 と WebSocket を 使い倒す 2024/2/10 Shino3(しのさん)
お題目 • 簡単な自己紹介 • Nostr とは? • 日本国内でのNostr • 耐障害性のお話
• 通信の仕組み • 活用事例の提案 • 実際に作ったもの • これからの展望
自己紹介 通称名: Shino3(しのさん) Twitter: SHINOHARATTT GitHub: ShinoharaTa Nostr: @shino3.net Bluesky:
@shino3.net Domain: shino3.net NostrRelay: relay-jp.shino3.net
自己紹介 • 工業高校出身 • 電気科、電気回路、電子回路メイン • 専門の短大出身 • 電気回路、電子回路 •
メーカー勤務 • 組み込み開発 2年 • システム開発 4年 • 都内、受託開発系 • Webシステム系 5年
自己紹介 • 経験してきた言語 • C言語、C++、C# • PHP、Laravel • JavaScript、TypeScript Vue、Nuxt、Svelte
• 勉強中 • Rust • Flutter(Dart) • インフラ、Grafana等
自己紹介 • 経験してきた言語 • C言語、C++、C# • PHP、Laravel • JavaScript、TypeScript Vue、Nuxt、Svelte
• 勉強中 • Rust • Flutter(Dart) • インフラ、Grafana等 Vim経験:0秒
プライベート • 趣味 • プログラミング • 車の競技(参加者側) • DIY •
好きなもの • キングサーモン • アトランティックサーモン • トラウトサーモン • 信州サーモン • 推し • 檜山沙耶さん • アトランティックサーモン
Nostr とは
Notes and Other Stuff Transmitted by Relays リレーによって通信される ノートやそれ以外のもの
NIP という Nostr Implementation Possibilities プロトコル仕様を 管理する仕組みがある
NIP-01 という仕様で 単一の JSON 構造を 定義する
複数のサーバーと同時接続 冗長化される
複数のサーバーと 複数の管理者が 存在する
接続は WebSocketを 使用する
究極の分散
真の 分散型SNS
日本国内での Nostr
日本国内での Nostr • 2月 : 凍結祭りのときに Damus がリリースされる • 2月
: Nostr 勉強会(日本初)を開催(以降、定期的に開催) • 5月 : 技術書典で Nostr の本を出版した • 7月 : X(Twitter) の API リミットでユーザー数が大幅増加 • 11月 : Nostrasia イベントが開催 Twitter 創設者のジャック・ドーシーが来日 • 11月 : 技術書典で Nostr の本(二冊目)を出版した
SoftwareDesign 誌への連載
技術書典で本を販売 • 物理本:200冊 完売 • 電子版:160冊 販売中 • 物理本:150冊 完売
• 電子版:128冊 販売中
Nostrasia での一幕
Nostrの 耐障害性
Nostrの特徴:冗長性
Nostrの特徴:冗長性 EMERGENCY
Nostrの特徴:冗長性 DOWN DOWN
DOWN DOWN Nostrの特徴:冗長性 つながる!
通信の仕組み
WEB Socket を 使用する
一度接続した コネクションを
無限に 使い倒す
再接続をしないので
爆速!! 鬼速い!!
駅で・・・
街中で・・・
つながる!
{ "id": "シリアライズされたイベントデータのSHA-256(32バイト)を 小文字の16進数で表記したもの", "pubkey": "公開鍵(32バイト)を小文字の16進数で表記したもの", “created_at”: “秒単位の生成時刻", "kind": "イベントの種類",
"tags": [ ["e", "..."], ["...", "他の種類のタグが後に追加される可能性がある"] ], "content":"任意の文字列", "sig": "シリアライズされたイベントデータのSHA-256 (IDフィールドと同じ)に対する署名を16進数で表記したもの" } NIP-01 に基づく JSON 構造
データ種別の定義 • Kind 0 : ユーザーのプロフィールなど • Kind 1 :
みんなの投稿 • Kind 6 : リポスト • Kind 7 : いいねなどのリアクション • Kind 40 : パブリックチャット(チャットルームなど • Kind 42 : パブリックチャットのコメント
Kind 30023 Long-form content
Habla
Nosli
Kind 30078 Application-specific data
野洲田川 定点観測所
流速ちゃん Bot
活用事例の 提案
通信の軽さ
即時性
耐障害性
災害時 情報配信サービス
2024/1/1
能登半島地震
起きていたこと •インターネットが繋がらない • 被災地周辺でのパケ詰まり
実際に 作ったもの
気象 警戒 システム
仕組み 緊急地震速報
WEB クライアント 仕組み 緊急地震速報 Kind 1 投稿 Kind 1 投稿
Kind 1 投稿 Kind 1 投稿
補足 https://www.docswell.com/s/matsuu/KNRMQG-2023-02-23-002146
リアルタイム 緊急地震速報 表示システム
https://github.com/ShinoharaTa - eew2nostr - eew2nostr-viewer
緊急地震速報表示システム WEB クライアント 仕組み 緊急地震速報 Kind 1 投稿 Kind 1
投稿 Kind 1 投稿 Kind 1 投稿 Kind 30078 アプリ利用 データ
今後やりたいこと •Information Dashboard • 災害情報、警戒情報 • 津波、震度情報 • 潮位、河川水位 •
etc
開発の協力者も 募集してます
大量の情報社会
確実に情報を 届けるための 手段
必要なくなる日を 期待します
最後に
#とは
None