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
Reflections from 52 weeks, 52 projects
jeffersonlam
347
20k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
47
5.1k
Mobile First: as difficult as doing things right
swwweet
222
9k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
48
2.2k
Why You Should Never Use an ORM
jnunemaker
PRO
54
9.1k
For a Future-Friendly Web
brad_frost
175
9.4k
Facilitating Awesome Meetings
lara
50
6.1k
The Art of Programming - Codeland 2020
erikaheidi
53
13k
How to Ace a Technical Interview
jacobian
276
23k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
45
2.2k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
32
2.7k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.3k
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