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
2.1k
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.4k
ANYハッカソン 時間差パズルVRゲーム
shinyoshiaki
0
2.1k
サーバレス な マルチユーザVR システム
shinyoshiaki
0
2k
Featured
See All Featured
Thoughts on Productivity
jonyablonski
69
4.7k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
233
17k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
35
2.3k
Speed Design
sergeychernyshev
31
1k
Building Applications with DynamoDB
mza
95
6.5k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
252
21k
Into the Great Unknown - MozCon
thekraken
39
1.9k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
30
2.1k
Large-scale JavaScript Application Architecture
addyosmani
512
110k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
3.9k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
15
1.5k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
31
1.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