* 気象庁の地震情報を自動でチェック(P2Pで伝達することで気象庁Webサーバーへの負担を減らす)
* ユーザーによる「揺れた」という情報の発信・共有(より早く地震発生を知る)
* 地震に関する情報の共有
 いわゆる「地震情報チェッカー」です。普段はタスクトレイに隠れているので、常駐させておいても邪魔になりません。また、P2Pだからといって「怪しい」「違法」といった心配はなく、むしろP2Pによる様々な利点を感じていただけると思います。
P2P地震情報 – 地震情報を自動でチェック

ちょうどWinnyの技術を読んでるところのタイムリーなネタ。
試みは面白い。
Amazon.co.jp:本: Winnyの技術
Winnyの技術は、技術書なんだけどそれほど難しい概念もなくP2Pを学ぼうとしてる人には読みやすくていいかな。といった感想。
ただ、ありがちな入門書とは違って、技術的裏付けといいP2Pのネットワークシミュレーションといいしっかり書き込まれていて、P2Pを指向しているエンジニアにとっても自身の知識の再確認と言った意味で使える良書かと。


まだ開発日記や本スレ読んでないので多分に想像が混じりますが。
さて、地震情報のP2Pでの公開なんだけど技術的試みとしては見る物も多くどのような結果が出るか興味深く見守りたいとこ。
個人的にこの試みで見るべきポイントは
・データの伝搬速度
・気象庁データとユーザーデータの取扱い
・一部サーバーセントラルとなる部分のピュアP2P化は可能か
・ノードのクラスタ化とか
・データフィルタリング関連
あたりかな。

データの伝搬速度

P2Pではサーバーセントラルとなるスター型のシステムと違い、データソースとクライアント間がnホップのノードを介して接続されます。
そのため、データソースから送信されたデータはノード間を伝搬しながらクライアントに到着するため、どうしても時間的な遅延は免れません。
P2Pにおいて遅延を減らそうと思う場合データソースとのホップ数を減らすことが肝要なわけですが、そのためには各ノードから別のノードへのコネクションを増やす必要があるためネットワーク資源の消費に繋がります。
また、Winnyと違い公開されたデータは全てのクライアントが受け取らなくては意味をなさないため、どうしてもデータはブロードキャスト的に伝搬させる必要があります。
そしてそれもまたネットワーク資源の消費に繋がります。
つまりはデータをより早く正確に伝搬しようとするとネットワーク資源の消費がでかくなり、ネットワーク資源の消費を抑えようとするとデータの伝搬速度か洩れの無い伝搬か、その両者かを抑えなければならないトレードオフの関係になってます。
トレードオフポイントを決定付ける変数はデータの伝搬速度、データの粒度、データ伝搬確立、ネットワーク占有度あたりでしょうか。
このへんをどの当たりに設定しているのかに興味がひかれるとこです。

気象庁データとユーザーデータの取扱い

地震データのデータソースは気象庁のWebPageにある地震情報と、このソフト利用者の出す地震情報の2つとなっているようです。
前者は情報の正確性が高く(もちろんですが)情報公開のスピードは劣ります。
後者は震度などをユーザーの感覚に頼らざるを得ないため正確度は前者に比べ格段に落ちますが情報公開のスピードは前者と比べ圧倒的に早くなります。
いずれもデータとしては必要な物でありながら、情報の質そのものが全く違うため両者のメッセージが同時にクライアントに到着した場合どちらの情報が優先されるのかなど情報の取扱いは難しいと思いますが、その辺をどう処理しているのか(あるいはしてないのか)もチェックしたいポイントでしょうか。

一部サーバーセントラルとなる部分のピュアP2P化は可能か

公式サイトを見る限り初期ノードの公開とネットワークの構築、気象庁Webサイトからのデータ取り込みなどを中央サーバーで担当しているようです。
これはこれで十分効率的な仕組みではあるんですが、中央サーバーがダウンした場合などを考えると欲を言えばP2P型に変更することでネットワーク自体の脆弱性をかなり強化できるんじゃないかと思います。
更には、気象庁へのアクセスノードを複数端末に増やす事でデータソースをその端末数分だけ増やす事が可能になり、(気象庁)データの伝搬性能も大幅に強化する事が出来るんじゃないかと思います。
ただし、全てのノードが気象庁にアクセスしてしまうと気象庁へのトラフィックが集中してしまって、結果全体的なパフォーマンスが劣化しては本末転倒になってしまうので、どのノードが気象庁にアクセスするのかを自律的にもしくは何らかの他の手段で決定する必要がありますが。

ノードのクラスタ化とか

伝搬速度にも絡む話になりますが、地震データの必要度ってのはノードの物理的な地理と震源の距離に比例すると考えるのが妥当なんじゃないかなと思います。
極端な例になりますが、北海道で起きた大地震の情報を最も欲してるのは北海道やオホーツク海を隔てた青森県や岩手、秋田あたりのノードで、沖縄県のノードにとっては多少の遅延が問題になることは少ないでしょう。
そう考えた場合ノード同士は地域ごとに自然とクラスタ化され、地理的な距離を元にクラスターが結合されるような構造をとることがデータ伝搬速度の必要度に応じた最適化の為には肝要なんじゃないかと思います。
とはいえ、震源近くのノードが発信したデータが地震の伝搬速度を超えて遠方のノードに届くかどうかは、震源近くのノードにどれだけ早くデータが入力されるかという大きなファクターを抱えている以上それほど重視する事でも無いのかもしれませんが。

データフィルタリング関連

最も感心があるのがコレで、P2Pでありユーザーがデータを発信できるとなると悪意のあるユーザーによるノイズデータの発信という問題はどうしても付きまといます。
現在の公式の情報を元に考えるとデータの表示レベル(しきい値)を超えるデータが受信されるまでデータ表示が遅延されるとされていますが、用意されている最高レベルでも10であり、10台のPCから偽の地震データを発生させる事で存在しない地震情報をネットワーク全体に伝搬させる事ができてしまいます。
またP2Pの特性として、一度構築されてしまったネットワークはその把握が極めて難しく、そのようなデータを伝搬させるノードを破棄する事も困難です。
つまりはネットワーク全体としてのデータ信頼性という部分に脆弱性を抱えているように見えるわけです。
この問題に対するシステマティックな解法はここ数年の俺自身のテーマでしたが、今のところ有効な解決策は見付かっていません。
これをこのネットワークがどのように考えているのかが非常に気になります。


Winnyの登場によって一般的に広まったP2Pですが、皮肉な事にPCネットワークのアンダーグラウンドを支える技術であるかのように(*1)広まってしまった現在、このような有効な活用方法が出て来るその事自体に大きな意味を持っています。
このプロジェクトがどのような発展を遂げるのか、その技術的手法とともに見守って行きたいと思います。
*1 : ある意味正解ではあるんですが。