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
480
0
Share
Nostr x Gorilla Vim Collaboration
Takuma Shinohara
February 10, 2024
More Decks by Takuma Shinohara
See All by Takuma Shinohara
MCPとは?
shinoharata
0
130
BlueskyMeetup in Fukuoka アイデアソン
shinoharata
1
120
BlueskyMeetup in Fukuoka アイデアソン結果発表
shinoharata
1
99
いまのBlueskyってどうなの
shinoharata
0
160
四谷ラボとは ※2025/05/31
shinoharata
0
150
What's is Bluesky
shinoharata
0
1.9k
dissolute fat
shinoharata
0
250
20240520_toranoana_lab.pdf
shinoharata
0
240
民主的なSNSは日本を救う
shinoharata
0
410
Other Decks in Technology
See All in Technology
【社内勉強会】新年度からコーディングエージェントを使いこなす - 構造と制約で引き出すClaude Codeの実践知
nwiizo
33
16k
Move Fast and Break Things: 10 in 20
ramimac
0
100
来期の評価で変えようと思っていること 〜AI時代に変わること・変わらないこと〜
estie
0
130
Oracle AI Database@Google Cloud:サービス概要のご紹介
oracle4engineer
PRO
5
1.3k
AWS DevOps Agent or Kiro の使いどころを考える_20260402
masakiokuda
0
120
Zephyr(RTOS)でOpenPLCを実装してみた
iotengineer22
0
160
MIX AUDIO EN BROADCAST
ralpherick
0
140
Blue/Green Deployment を用いた PostgreSQL のメジャーバージョンアップ
kkato1
0
170
FASTでAIエージェントを作りまくろう!
yukiogawa
4
180
遊びで始めたNew Relic MCP、気づいたらChatOpsなオブザーバビリティボットができてました/From New Relic MCP to a ChatOps Observability Bot
aeonpeople
1
130
Databricks Appsで実現する社内向けAIアプリ開発の効率化
r_miura
0
160
TUNA Camp 2026 京都Stage ヒューリスティックアルゴリズム入門
terryu16
0
640
Featured
See All Featured
How to optimise 3,500 product descriptions for ecommerce in one day using ChatGPT
katarinadahlin
PRO
1
3.5k
Between Models and Reality
mayunak
2
250
Highjacked: Video Game Concept Design
rkendrick25
PRO
1
330
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
1
310
Into the Great Unknown - MozCon
thekraken
40
2.3k
The SEO Collaboration Effect
kristinabergwall1
0
410
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
1.8k
Statistics for Hackers
jakevdp
799
230k
Chasing Engaging Ingredients in Design
codingconduct
0
150
GitHub's CSS Performance
jonrohan
1032
470k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
49
9.9k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
55k
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