Closed yoshinori-koide closed 10 years ago
WebRTC でHTMLベースのクライアント間(P2P)通信が可能になったが、アプリを作る上で気になったことなどを上げていきます。
・プライバシー
クライアントにデータをためる実装にすると現時点のjsでは改ざんが容易。(特にPCではコンソールからデータの操作が出来ちゃう。) クライアント間で信頼できるデータ/サービスを構築するには暗号化やハッシュ化したデータを使ってなるべく手元のデータを出さないようにする、など工夫が必要。これは今後の課題。
・アルゴリズム
サーバーサイドで一元的にデータを管理するのと違い、"部分の集合としての総体"であるのでデータのアトミック性の問題などもあるが、データに則ったアルゴリズムが自立的にならざるを得ないので、サーバーサイドより実装が難しい。これは群知能のアルゴリズムを勉強しないと基本的にキツいんじゃないの?
・P2Pでの通信量/通信回数/頻度に気をつけないと電池を食う
サーバーは前提として電気代を払って常時電源を供給してもらうシステムであるので、サーバーサイドプログラムに関してはCPUの演算量に対する物理的な電気の消費量は考慮しなくても良い。 ただし、モバイルの場合は消費される電力がユーザー負担になるため、できるだけ演算量を減らさないといけない。 とくに"通信"は消費電力の大きいアクションであるので、できるだけ更新頻度、データ量を減らさないといけない。 peeridの全てに対してコールするのは現時点では"技術検証"という視点で致し方ないが、将来的には頻繁にチェックするpeeridと時々アクセスするpeerid、無視しても良いpeeridなどにグループを分けて通信する工夫が必要。
WebRTC でHTMLベースのクライアント間(P2P)通信が可能になったが、アプリを作る上で気になったことなどを上げていきます。
P2Pアプリケーションの実装面
・プライバシー
クライアントにデータをためる実装にすると現時点のjsでは改ざんが容易。(特にPCではコンソールからデータの操作が出来ちゃう。) クライアント間で信頼できるデータ/サービスを構築するには暗号化やハッシュ化したデータを使ってなるべく手元のデータを出さないようにする、など工夫が必要。これは今後の課題。
・アルゴリズム
サーバーサイドで一元的にデータを管理するのと違い、"部分の集合としての総体"であるのでデータのアトミック性の問題などもあるが、データに則ったアルゴリズムが自立的にならざるを得ないので、サーバーサイドより実装が難しい。これは群知能のアルゴリズムを勉強しないと基本的にキツいんじゃないの?
電力
・P2Pでの通信量/通信回数/頻度に気をつけないと電池を食う
サーバーは前提として電気代を払って常時電源を供給してもらうシステムであるので、サーバーサイドプログラムに関してはCPUの演算量に対する物理的な電気の消費量は考慮しなくても良い。 ただし、モバイルの場合は消費される電力がユーザー負担になるため、できるだけ演算量を減らさないといけない。 とくに"通信"は消費電力の大きいアクションであるので、できるだけ更新頻度、データ量を減らさないといけない。 peeridの全てに対してコールするのは現時点では"技術検証"という視点で致し方ないが、将来的には頻繁にチェックするpeeridと時々アクセスするpeerid、無視しても良いpeeridなどにグループを分けて通信する工夫が必要。