Slide 1

Slide 1 text

学部3年 チーム「分散型」 ShinYoshiaki
 WebRTCハッカソン
 2018/11/4(日)  株式会社エウレカ会場 P2P分散型SNS “D-Twi”

Slide 2

Slide 2 text

D-Twiとは「Distributed Twi○○」の略 要するにP2P分散型のTwi○○風SNS

Slide 3

Slide 3 text

P2P分散型システムのメリット •止まらない •負荷分散 実装方法にもよるが、負荷分散につながる場合もある 今回、用いる「Kademlia」という分散ハッシュテーブルは負荷分散の効果がある 例 ・サーバクライアントな Github や Twitter はちょくちょく止まる    ・ P2Pな Bitcoin や Torrent は止まらない

Slide 4

Slide 4 text

Kademlia •分散ハッシュテーブル •Torrent , IPFSといった有名プロジェクトに採用されている実績 •効率の良いノードと値の探索が可能 •Churn耐性、スケール可能 •実装が簡単 今回はWebRTCの DataChannel で Kademlia を実装する

Slide 5

Slide 5 text

Kademliaネットワークの構成 Kademliaネットワークは ポータルノードと呼ぶ外部からアクセス可能な端末 の Node.js 上で動作する物と ブラウザ上で動作する一般のノードから成り立つ 一般のノードは Kademliaネットワークに接続するた めにまず、ポータルノードとシグナリングをする 一般のノードはその後、Kademlia のアルゴリズムに 従い他のノードと接続(シグナリング)する ポータルノードとノードは Kademliaネットワーク上で は、対等に振る舞う

Slide 6

Slide 6 text

WebRTCを使うメリット • NAT越え(STUN) • Ping処理(生存判定)の実装が不要 ・・・・・・・・ Iceが切れたら教えてくれる • ブラウザで動作(マルチプラットフォーム) • 多機能 • 使いやすい

Slide 7

Slide 7 text

“D-Twi”の機能紹介 • ログイン画面  アカウントは公開鍵/秘密鍵で管理    アカウント作成時に公開鍵ファイルと  秘密鍵ファイルが保存される    ログインは先ほどの鍵ファイルを  ファイル選択して行う

Slide 8

Slide 8 text

• メイン画面  Twitterでいうタイムライン。文字と画像が投稿できる  フォローしている人の投稿がタイムラインに表示される。また他人の投稿がランダムに表示される  文字と画像はKademliaのアルゴリズムに従って分散保存される

Slide 9

Slide 9 text

• ユーザ検索 相手のIDを知っていれば、Kademliaの 探索アルゴリズムによって、 そのIDの相手と直接、接続することができる また、この機能を用いてダイレクトメッセージ 機能を実現している

Slide 10

Slide 10 text

• ダイレクトメッセージ    オンライン状態のユーザ同士はDMを  送りあえる  DMはKademliaネットワークとは別の  DM用のDataChannelでP2P通信する  任意のファイルを送受信できる  (完全P2Pだから匿名性がある!)  当然、リアルタイム通信。通知も来る

Slide 11

Slide 11 text

• ビデオチャット  本家にはないビデオチャット機能もWebRTCなら簡単に実装可能!!  DataChannelでStreamをシグナリングして実現

Slide 12

Slide 12 text

技術仕様 プロダクト ツール フロントエンド React / Redux storybook Javascript 周辺ライブラリ(自作) Kad-rtc (kademlia for webrtc / ポータルノード機能付き) Typescript Webrtc4me (webrtcのラッパー) Typescript

Slide 13

Slide 13 text

まとめ • WebRTCでP2P分散型SNSのプロトタイプを作れた • WebRTCでP2P分散型プラットフォームは作れそう • WebRTCは全部入り(映像、データ、リアルタイム通信)

Slide 14

Slide 14 text

↓質問はTwitterでも受け付けます @ShinYoshiaki