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
P2P分散型SNS “D-Twi”
Search
shinyoshiaki
November 04, 2018
0
2k
P2P分散型SNS “D-Twi”
WebRTCハッカソン
2018/11/4(日) 株式会社エウレカ会場
shinyoshiaki
November 04, 2018
Tweet
Share
More Decks by shinyoshiaki
See All by shinyoshiaki
CPaaS「SkyWay」を作るために 必要なスキルの身につけ方
shinyoshiaki
0
1.1k
TypeScriptとNode.jsでWebRTCを実装してみた
shinyoshiaki
1
3.2k
ANYハッカソン 時間差パズルVRゲーム
shinyoshiaki
0
2k
サーバレス な マルチユーザVR システム
shinyoshiaki
0
1.9k
Featured
See All Featured
GraphQLとの向き合い方2022年版
quramy
43
13k
Adopting Sorbet at Scale
ufuk
73
9.1k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
364
24k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
6
410
Rebuilding a faster, lazier Slack
samanthasiow
79
8.7k
For a Future-Friendly Web
brad_frost
175
9.4k
Designing on Purpose - Digital PM Summit 2013
jponch
115
7k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
42
9.2k
The Language of Interfaces
destraynor
154
24k
Thoughts on Productivity
jonyablonski
67
4.3k
Fireside Chat
paigeccino
34
3k
How STYLIGHT went responsive
nonsquared
95
5.2k
Transcript
学部3年 チーム「分散型」 ShinYoshiaki WebRTCハッカソン 2018/11/4(日) 株式会社エウレカ会場 P2P分散型SNS “D-Twi”
D-Twiとは「Distributed Twi◦◦」の略 要するにP2P分散型のTwi◦◦風SNS
P2P分散型システムのメリット •止まらない •負荷分散 実装方法にもよるが、負荷分散につながる場合もある 今回、用いる「Kademlia」という分散ハッシュテーブルは負荷分散の効果がある 例 ・サーバクライアントな Github や Twitter
はちょくちょく止まる ・ P2Pな Bitcoin や Torrent は止まらない
Kademlia •分散ハッシュテーブル •Torrent , IPFSといった有名プロジェクトに採用されている実績 •効率の良いノードと値の探索が可能 •Churn耐性、スケール可能 •実装が簡単 今回はWebRTCの DataChannel
で Kademlia を実装する
Kademliaネットワークの構成 Kademliaネットワークは ポータルノードと呼ぶ外部からアクセス可能な端末 の Node.js 上で動作する物と ブラウザ上で動作する一般のノードから成り立つ 一般のノードは Kademliaネットワークに接続するた めにまず、ポータルノードとシグナリングをする
一般のノードはその後、Kademlia のアルゴリズムに 従い他のノードと接続(シグナリング)する ポータルノードとノードは Kademliaネットワーク上で は、対等に振る舞う
WebRTCを使うメリット • NAT越え(STUN) • Ping処理(生存判定)の実装が不要 ・・・・・・・・ Iceが切れたら教えてくれる • ブラウザで動作(マルチプラットフォーム) • 多機能
• 使いやすい
“D-Twi”の機能紹介 • ログイン画面 アカウントは公開鍵/秘密鍵で管理 アカウント作成時に公開鍵ファイルと 秘密鍵ファイルが保存される ログインは先ほどの鍵ファイルを ファイル選択して行う
• メイン画面 Twitterでいうタイムライン。文字と画像が投稿できる フォローしている人の投稿がタイムラインに表示される。また他人の投稿がランダムに表示される 文字と画像はKademliaのアルゴリズムに従って分散保存される
• ユーザ検索 相手のIDを知っていれば、Kademliaの 探索アルゴリズムによって、 そのIDの相手と直接、接続することができる また、この機能を用いてダイレクトメッセージ 機能を実現している
• ダイレクトメッセージ オンライン状態のユーザ同士はDMを 送りあえる DMはKademliaネットワークとは別の DM用のDataChannelでP2P通信する 任意のファイルを送受信できる (完全P2Pだから匿名性がある!) 当然、リアルタイム通信。通知も来る
• ビデオチャット 本家にはないビデオチャット機能もWebRTCなら簡単に実装可能!! DataChannelでStreamをシグナリングして実現
技術仕様 プロダクト ツール フロントエンド React / Redux storybook Javascript 周辺ライブラリ(自作)
Kad-rtc (kademlia for webrtc / ポータルノード機能付き) Typescript Webrtc4me (webrtcのラッパー) Typescript
まとめ • WebRTCでP2P分散型SNSのプロトタイプを作れた • WebRTCでP2P分散型プラットフォームは作れそう • WebRTCは全部入り(映像、データ、リアルタイム通信)
↓質問はTwitterでも受け付けます @ShinYoshiaki