目次
LINEやSkypeはP2Pによって支えられている
こんにちは、技術チームの岩谷です。先日とある方より「P2P(ピアツーピア)って何?いろいろなプロダクトに”P2P対応製品”って書いてあるんだけど?」という質問をいただきました。今回はこのお題についてちょっと説明をさせてください。まず、いつものように本日申し上げたいことを先に述べます。
- P2Pとは複数のコンピュータがかかわる処理における方式の名前である
- LINEやSkypeがP2P方式を用いている代表的なアプリである
- P2Pは通信を行うコンピュータAとBがサーバを介さずに直接通信を行う方式である
- これは「おたがいが対等の役割」を持つといえる(例:Skypeで通話するスマホAとスマホBが対等)
- P2Pのメリットは1つのコンピュータに処理負荷が集中しないことである
- Skype,LINEなどP2P方式を用いたアプリの進歩によって、現在我々は「リアルタイムにコミュニケーションを行うサービス」を利用する事ができる。
Peerとは「同等のもの」という意味
最初に語源から紐解いていきます。P2Pは略語であり「Peer To Peer」が本来の英語です。「Peer」を辞書で見てみると、
意味:
(年齢・地位・能力などが)同等の者; 同僚,同輩,仲間
語源:
ラテン語「平等な(もの)」の意から出展:研究社 新英和中辞典
とあり、P2Pには「同等な者が同等な者へ」という訳が当てはまります。これを説明する上で、以下に「同等ではない状態」と「同等な状態」の両者を説明させてください。
Peer(同等)ではない方式→クライアントサーバ型システム
みなさんがいつもお使いになっているインターネット上のサービスはほとんどこの方式をとっています。ホテルの予約サービスや翻訳サービスなどはクライアントサーバ型のシステムであるといえます。以下にYoutubeを例に説明します。
上記の通り、Youtubeは「Youtubeのサービスを提供するサーバ」と「サービスを利用するクライアント」に役割が分かれており、この両者の関係はPeerではありません。
Peer(同等)である方式→Skype的なP2P型システム
次にP2P方式の例として「Skype的な電話システム」を挙げます。ここで「Skype的な」と表現を曖昧にしているのには理由がありまして、高度な通信機能を持つSkypeのサービスはP2P以外のいろいろな通信方式をサービスの実現のために利用しているのです。
このようにP2Pのシステムには通話をする際に登場する通話者AとBのスマホとの間に役割上の違いはありません。まさに両者はPeerな関係にあるといえるのです。Peerな関係が成立しているということは「結果的に両者の間にサーバが存在しない」と表現できるのです。
お互いがサーバとなりクライアントとなる
また以前執筆させていただいた「サーバとは?」という記事において、
- コンピュータが通信する場合、「クライアントとサーバ」の役割を必要とする
- クライアントとはサービスを利用する役割である
- サーバとは相手に対してサービスを提供する役割である
- サーバは相手が「サービスをしてください」という要求をひたすら待ち続けている
というお話をさせていただきました。P2PでPeerな関係にあるこれらのコンピュータ(=スマホ)もこの例外ではありません。すなわちP2P型のシステムにおいて通信をしているコンピュータは、その時々の状況に応じて自分がクライアントの役割を担う場合とサーバの役割を担う場合を演じ分けているのです。上記の図の中では、電話を掛けるスマホは自らがサーバとなり、発信した通話に対して相手が電話に出るまで待ち続けているのです。通常、クライアントとして振舞うことの多いスマホがサーバとして振舞う場合があるという事はP2Pの方式において、特徴的な振る舞いであるといえるでしょう。
P2Pのメリットはサービスのボトルネックを生みにくいこと
P2Pのメリットは1つのコンピュータに処理負荷が集中しないことです。
IoT時代の到来によってインターネットに接続されるコンピュータの数は激増しました。ここで問題になるのは、クライアントサーバ型のシステムの場合、全ての通信は必ずサーバを経由するという仕組み上の問題です。これはサービス全体のサービス提供能力がサーバの能力に依存してしまうことを意味します。サービス提供者はもし自分のサービスが大人気になった場合、人気に応じたサーバ能力(性能・台数)を用意しなければサーバ処理がボトルネックとなりサービスの提供が滞ってしまうリスクが高いのです。例えば100万人のユーザが同時に通話を行う電話サービスをクライアントサーバ型で構築した場合、サーバには100万の通話データアクセスが同時に発生します。これを処理しきるサーバを用意するには多額の資金が必要です。
これに対してP2P型の場合は各コンピュータが各々Peerな関係で通話相手のコンピュータと直接通信を行うので、もっともデータの多い通話データはサーバを介しません。100万人分の通話がサーバにおしよせることはないのです。これがサービス上のボトルネック回避に非常に有効に作用します。このことがIoTの広まりにともなうP2Pの重要性に直結しているのです。
LINEやSkypeで電話ができるのは、実はすごいことなのです。
昔、出張で海外に行ったとき、緊急の連絡手段は国際電話しかありませんでした。私も通話料金にヒヤヒヤしながら日本の担当者と電話打ち合わせをしました。今はとても便利です。LINEやSkypeはほとんどの場合通話料金は無料なのですから。それらのサービスを支えている通信処理方式が今回説明させていただいたP2Pです。P2PがなければLINEやSkypeも通話ユーザの増大に伴うサーバ投資に耐え切れずに無料通話の提供を続けることができないでしょう。今日は最後にこのP2Pのすごさの一例を紹介させてください。
上記の説明で私は「P2Pにおいてはスマホもサーバになる」と述べました。インターネット上には数多くのクラッカー(=悪意を持った攻撃者)が存在し、そのクラッカーの多くはサーバに向かって攻撃を仕掛けてきます。皆さんがインターネットをお使いになる場合にもそれらからの脅威は存在しますが皆さんのご家庭が被害を受けたという話はあまり耳にしません。これは皆さんに対してインターネットの接続サービスを提供する通信会社や通信機器提供会社がセキュリティ対策を施しているからなのですが、その対策の大きな柱が「サーバに対する通信を遮断する」という対策です。ここでみなさんに気づいていただきたいのです。「P2Pにおいてはスマホもサーバになる」という事実とセキュリティ対策者が「サーバに対する通信を遮断する」という二つの事柄は真っ向から衝突するという事実です。
しかし現実、私も含めてみなさんはLINEやSkypeによる日々の無料通話サービスの恩恵を受けています。これは上記の真っ向から衝突する二つの事実の矛盾をLINEやSkypeのサービスがP2Pを含めた技術によって解決しているのです。技術的な説明は複雑かつ長大なのでこの場では述べません。ただ、このようなサービス提供者の取り組みが我々の便利な生活の縁の下の力持ちになっていることを知っていただきたいのです。
このあたりの説明はまた後日「WebRTCについて」と題した機会を頂戴させてください。