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.2k
TypeScriptとNode.jsでWebRTCを実装してみた
shinyoshiaki
1
3.4k
ANYハッカソン 時間差パズルVRゲーム
shinyoshiaki
0
2.1k
サーバレス な マルチユーザVR システム
shinyoshiaki
0
2k
Featured
See All Featured
Designing for Performance
lara
610
69k
Raft: Consensus for Rubyists
vanstee
140
7.1k
VelocityConf: Rendering Performance Case Studies
addyosmani
332
24k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
Six Lessons from altMBA
skipperchong
28
4k
Writing Fast Ruby
sferik
628
62k
A Modern Web Designer's Workflow
chriscoyier
696
190k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
33
2.4k
Balancing Empowerment & Direction
lara
3
600
What’s in a name? Adding method to the madness
productmarketing
PRO
23
3.6k
RailsConf 2023
tenderlove
30
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