Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
P2P分散型SNS “D-Twi”
Search
shinyoshiaki
November 04, 2018
2.1k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
P2P分散型SNS “D-Twi”
WebRTCハッカソン
2018/11/4(日) 株式会社エウレカ会場
shinyoshiaki
November 04, 2018
More Decks by shinyoshiaki
See All by shinyoshiaki
CPaaS「SkyWay」を作るために 必要なスキルの身につけ方
shinyoshiaki
0
1.2k
TypeScriptとNode.jsでWebRTCを実装してみた
shinyoshiaki
1
3.7k
ANYハッカソン 時間差パズルVRゲーム
shinyoshiaki
0
2.1k
サーバレス な マルチユーザVR システム
shinyoshiaki
0
2k
Featured
See All Featured
The browser strikes back
jonoalderson
0
1.8k
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.6k
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
1
910
Fireside Chat
paigeccino
43
4.1k
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
300
Crafting Experiences
bethany
1
370
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
360
31k
Making the Leap to Tech Lead
cromwellryan
135
10k
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
2
6.3k
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
390
A designer walks into a library…
pauljervisheath
211
25k
The Limits of Empathy - UXLibs8
cassininazir
2
710
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