トップページ⇒tech
1001コメント429KB

P2Pでサーバに依存しない掲示板を作るの巻

■ このスレッドは過去ログ倉庫に格納されています
0001101/08/27 21:33ID:Uofeyeso
この掲示板コミュニティをずっと私たちのものにするために、P2Pでサーバに
依存しない掲示板を作るの巻。

クライアントサーバ型BBS、ハイブリッドP2P型BBSでは、サーバを必要とするために
運営に費用がかかります。掲示板では利益を生み出すことができない以上、これら
のサービスは持続可能なものではありません。

2ちゃんねるライクな掲示板を持続可能なものにするためには、コストがかからず、
誰にも依存しない、純粋なP2P型ネットワークを開発する必要があるように思われます。
0002101/08/27 21:34ID:Uofeyeso
PureP2P型掲示板では、以下の良いところがあります。

■ サーバを必要としないため、掲示板が完全にダウンするリスクがありません。
■ 運営にコストがかからないため、お金を儲ける必要がありません。
■ 運営者が不要になります。
■ 多機能化が可能です。

PureP2P型掲示板では、以下の悪いところがあります。どのようにして補うのか。
できるだけ

■ 特別なプログラムをサーバントとして動作させる必要があります。
■ カキコを完全に削除することが出来なくなります。
■ 誰も管理できないのでは?。危険だ。
■ 完全な匿名化を行うことが出来ないのでは?
■ スレッドやレスの取得もれ、消滅が起きる可能性があります。
■ 中央サーバ型に比べ、速報性に欠ける(カキコが全てのユーザに伝わるまで
に時間がかかる)可能性があります。
0003101/08/27 23:11ID:Uofeyeso
■アイデア
例えば、他の人がたてたスレッドをn個ローカルのディスクにおいて
共有しないと、スレッドが立てられないようにする。

ネットワークへの参加費用=帯域とCPUとディスクの提供という考え方。
最初はROMから。
0004デフォルトの名無しさん01/08/27 23:16ID:kDLbYqTE
■ サーバを必要としないため、掲示板が完全にダウンするリスクがありません。

システムの設計よる。

■ 運営にコストがかからないため、お金を儲ける必要がありません。

運営には個人レベルで金はかかる。

■ 多機能化が可能です。

安易に多機能化していくと互換性が乏しくなり、ユーザが離れるだろう。

■ 特別なプログラムをサーバントとして動作させる必要があります。

ソフトウェアによる。

■ カキコを完全に削除することが出来なくなります。
■ 誰も管理できないのでは?。危険だ。

システムの設計による。

■ 完全な匿名化を行うことが出来ないのでは?

完全な匿名なんてあったのか。

■ 中央サーバ型に比べ、速報性に欠ける(カキコが全てのユーザに伝わるまで
に時間がかかる)可能性があります。

ていうかすべてのユーザに通知するような設計にした時点で破綻。


P2Pとキャッシュ混乱してないか?
0005デフォルトの名無しさん01/08/27 23:18ID:fftmjbdI
設計的にはNNTPに近いものになるの?

んで、2ch型の掲示板にするならユニークな発言番号が必要だけど、どうするのかな?
0006 01/08/27 23:20ID:Uofeyeso
>■ サーバを必要としないため、掲示板が完全にダウンするリスクがありません。
>システムの設計よる。

ちょっとわからない。PCが何台かP2Pでつながれば、それでネットワーク成立。
スパムやP2P破壊を試みるクライアントの登場?

>■ 運営にコストがかからないため、お金を儲ける必要がありません。
>運営には個人レベルで金はかかる。

具体的にどのような費用?

>■ 多機能化が可能です。
>安易に多機能化していくと互換性が乏しくなり、ユーザが離れるだろう

互換性?バージョン間の?クライアント間の?

>■ 特別なプログラムをサーバントとして動作させる必要があります。
>ソフトウェアによる。

ソフトウェアは必要です。ブラウザのみでは実現できない。

Gnutellaのプロトコルはご存知?
0007101/08/27 23:22ID:Uofeyeso
>2ch型の掲示板にするならユニークな発言番号が必要だけど、どうするのかな?

前のスレッドでは、「時計を合わせて、時間軸で発言順」というアイデアが
出ていたっす。

これは意見のわかれるところだと思いますが、私はかならずしも2ちゃんねる
と同じスタイルにこだわる必要はないとおもっているんだ。
0008デフォルトの名無しさん01/08/27 23:39ID:kDLbYqTE
>>6
■ サーバを必要としないため、掲示板が完全にダウンするリスクがありません。

掲示板全体では確かにダウンしないが、個々の掲示板レベルでは?
コピーをばら撒けば理論上はダウンはしないだろうが、
個人的にはコピーをばら撒く方法は成功しないと思ってる。

■ 運営にコストがかからないため、お金を儲ける必要がありません。

常時接続のパソコン。通信費。電気代。
ま、これは余計なお世話か。スマ。

■ 多機能化が可能です。

というかIPv4とv6が例で、非互換が頻繁に発生してはならない。

■ 特別なプログラムをサーバントとして動作させる必要があります。

サーバントとクライアントの両方の機能を持てれば
ユーザから見れば分離した概念ではない。
0009501/08/27 23:49ID:fftmjbdI
>>7

時間軸ソートですか。

う〜ん、時間強制合わせはイヤだけどなぁ・・・
0010101/08/27 23:55ID:Uofeyeso
>>8
>コピーをばら撒けば理論上はダウンはしないだろうが、
>個人的にはコピーをばら撒く方法は成功しないと思ってる。

参考にさせていただきたいので、なぜそう思われるのかをそことなく
カキコしていただければありがたいです。


>う〜ん、時間強制合わせはイヤだけどなぁ・・・

SNTP。 PCの時刻じゃなくて、アプリ内で別の時刻を持つというのが
前のスレッドで出ていたよ。
0011501/08/28 00:02ID:GXEcccJ6
なるほど、書き込む前にSNTPで時刻を取得するんだ。
0012 01/08/28 00:29ID:IRApeeyY
このシステムを一年くらい続けたとして、昔のスレッドを保存してる人が
いなくなったらその内容はもう取得できないよね。
アクセスは少ないけど、検索対象としてはほしいときなんかは
やっぱWebが適してるような。
0013 01/08/28 00:40ID:IRApeeyY
あ、でもその人にとって興味のあるスレッドはずっと所持しつづけるかな?
それだと優良スレだけ残っていくから逆に効率いいかも?
0014 01/08/28 00:44ID:IRApeeyY
ところで、Webだと、リソースを表すためにURLを使って指定できるけど、
P2Pだとできないよね?
リンクとかを貼って「前スレ」とか「参照スレ」とか示したいとき
どうするんだろ?
0015連続カキコすまん01/08/28 00:45ID:IRApeeyY
やっぱNNTPみたいにメッセージIDかな?
0016 01/08/28 00:46ID:N/BUjlEA
>>12
そうですね。 過去のスレッドがいつまでも残っているかは全く保証され
ませんね。 ウェブではないので、例えばGoogle等の検索エンジンでも
検索できません。

今で言う「実況スレ」のようなもの?
00171201/08/28 01:07ID:IRApeeyY
いきなりこのP2Pネットワークだけで始めるとあまり広がらない気がする。
P2P-cacheじゃないけど、2ch本家とこのネットワークとでメッセージの交換が
あればかなりイイと思う。
0018デフォルトの名無しさん01/08/28 01:08ID:lGTCN/0o
コーディングにどのくらい時間かかるんですか?
0019デフォルトの名無しさん01/08/28 01:27ID:ayAzes6Q
http://www.hotwired.co.jp/news/news/Technology/story/3849.html
完全な匿名を保証しているらしいです。
こういうの、使えませんかね?
0020 01/08/28 01:46ID:IRApeeyY
>>19
たしかフリーネットっていくつかのマシンを経由してデータを転送してもらうから
匿名性が高いんだよね?んで、その分転送に時間がかかるんじゃなかったっけ?
とりあえずグヌテラ形式でいいんじゃない?
0021デフォルトの名無しさん01/08/28 02:26ID:CmtHTuM.
>>20
経由して、経由した全ノードにコピーを残して行くから、
みんなが読むようなコンテンツだと猛烈な勢いで複写が
行われてそのコンテンツが多数のノードに存在すること
になるから、そういうのへのアクセスだとgnutellaより
はるかに高速になる。
0022デフォルトの名無しさん01/08/28 08:20ID:uwDaUMvk
サーバントとクライアントを上手に別けるのに
 サーバント+プロキシ方式はどうだろう?
  つまり普通のWebブラウザを最終インターフェースにする

 こうしとけば家庭内LANでもパソコンが走っていればゲーム機でもブラウジング出来る
 誰かが鯖をたてればいいだけだし
0023デフォルトの名無しさん01/08/28 11:07ID:u.nsLDdo
>>22
freenet にはそういうのありますよ。freenet 独自の URL のようなものが
あって、Web ページも作れるし、freenet 上に NNTP や Mail のようなもの
もある。
なりすまし対策とか、荒らし対策みたいなのもいろいろと考えられてるよう
です。
00242201/08/28 11:24ID:fuFoxE4A
こういう奴ですね >23
ttp://www.geocities.co.jp/SiliconValley-Oakland/9423/
ttp://www.geocities.co.jp/SiliconValley-Bay/7325/Freenet/FAQ.html
0025デフォルトの名無しさん01/08/28 11:30ID:fuFoxE4A
23 下のリンクから

>今のところFreenetから文書を削除する方法はない。全く要求されない文書は、最終的には使われないことで削除される。

という事で、どうやって削除するかはやはり難しい問題のようですね
でも、このスレの議論のタネとしてはfreenetはよい教材のようです
0026__01/08/28 13:19ID:aE5uBalY
前スレの1さん
http://piza2.2ch.net/test/read.cgi?bbs=tech&key=990334284&st=88&to=88&nofirst=true
http://sourceforge.net/projects/p2pbbs/

前スレの113さん
http://piza2.2ch.net/test/read.cgi?bbs=tech&key=990334284&st=113&to=113&nofirst=true
>こういうスレあったんですね。偶然にも同じことやっています。
>こっちはSOAPでやるっす。
>しかも、メッセージが投票で衰退してくあたりまでアイデア
>同じ:)
>もっと斬新なこと考えないと...

前スレの130さん
>130 名前:が〜ん 投稿日:2001/06/10(日) 10:47
>似たこと考えている人いますねぇ〜 > 1と113
>こっちはXML-RPCがベースです。
>openxmlが巨大なのがちょっと…

確認できるだけで3件の別の開発が行われている(いた)ようなのですが、
どのような仕様なのかというのを確認できるURLは、まだないのでしょう
か。前のスレッドはいろいろと参考になりますね。
0027801/08/28 14:28ID:wzFAflj2
>>10
>個人的にはコピーをばら撒く方法は成功しないと思ってる。

ま、理論的裏づけがないのであまり強くはいえないが、
いまの2chが流行っているのはリアルタイム性と、
書き込みの完全な同期だろ?

そうすっと、コピをばら撒いてしまうと、ばら撒けばばら撒くほど
面倒になっていくのはいいよな。しかし、ばら撒きを前提にすると
ばら撒かないわけにはいかないわけで。

でここで思うんだが、ばら撒ける余裕があるからネットワーク上の
共有率を高めたほうがいと思う。つまり、今のgnutllaとかって
端から端まで検索効かないよな。だけどもしユーザの立場なら
見れない掲示板が出てくるのはかなり痛い。
だから、コピーをばら撒くより、リソースの存在をばら撒いたほうが
オレは良いと思う。

漏れが考えたのは
・スレのコピーは作らない
・スレは一台のサーバが完全に管理
・スレに関する要求は該当する唯一のサーバへ
・複数のサーバが集まって板を形成
・板内でスレの存在を可能な限り共有
・板へのサーバの参加について制限を設けても良い
・板外のリソースについては板の存在を共有するに止める
てな感じ。スレ単位でトラフィックが50MBはいかないだろ。
いざとなったらスレ委譲の仕組みを加えればいい。

長所は
・スレ単位で負荷分散ができる
・サーバ内でならフローティングなんとかも可能
・面倒な一意の識別子問題もクリア
・完全な削除ができる

欠点は
・サーバが落ちると関連スレ全部落ちる

だな。ま、参考にしてくれ。個人的に考えてるだけだしな。
0028 01/08/28 14:46ID:IRApeeyY
その案だと結局一台のサーバにスレの転送要求が集中するじゃん。
今の2chの問題点、わかってます?
0029801/08/28 15:38ID:wzFAflj2
>>28
最悪、高負荷のスレ以外を他の空いているサーバに委譲しちゃえばいいと思った。
すべてのスレが高頻度に更新されることはないだろうから。

数個のスレで破綻するようなサーバ、もしくは状況では
コピーをとる方法のほうも破綻するだろうし。
#…しないのかな。

ついでに、コピーを嫌う利用はプログラマとしての経験。
完全同期とリアルタイム性が要求される資源について
安易にコピーを作るとろくなことがない。
0030デフォルトの名無しさん01/08/28 16:39ID:OGjCZfek
基本的には、特定のサーバーに依存しなければいいんであって
サーバの存在は前提にしてもいいと思う。
というかP2Pとしては、皆がサーバーになろうというのが基本概念の様な気がする。

でも利用者が1日中ネットにつなげてるわけにも行かない場合も多い、というか
そのために掲示板システムがあるんだよね。
で、どうすればいいかというと、単純な話、メッセージを預ければいいってだけ。
別に預ける先が、freenetだろうが、2chだろうが、ネットニュースだろうが、
自分の借りたディスクスペースだろうがかまわない。
要は、ネット上に確実に存在して、見せたい相手がそれをすぐ見つけられれば問題ない。
だから、そういう既存のものを利用出来るようなプロトコルがいい気がする。

問題は、問題があって、見せたくない(消したい)場合や発信元を明かしたくない場合はどうすればいいのかって話。
情報は、消えても灰は残らないけど、写しても減らないんだよね。だから、無理に消そうと思っても無理。
一番いいのは忘れてもらう事。思い出せなければ無くなったのと一緒。

どうやって実現するかというと、ブラックボックス化すればいいんじゃないかと思う。
よく、ファイルを間違えて消す事があるけど、普通は消した後でもデータ自体はHDDに残ってるんだよね
ただ、一般的にそれを検索する方法が失われるから、普通は諦めて、消えたものとして扱うよね。
でも、大事な物が消えるのは嫌だし、無駄なものばかりで、どこにあるか分からないのも嫌。

基本的に掲示板に必要なものは、必要な人を集める機能で、
住人が望むのは、都合のいいメッセージやレスが即座に見つかる事だと思う。

これが、アクセスを特定サーバーに集中させずにどうやって実現出来るかを考えるべきかな?
0031デフォルトの名無しさん01/08/28 18:31ID:Ea4J7zus
検索性は有志がエンジンを作ればいいんじゃないかな?
大先生のようなね。

リアルタイム性の問題だけど、リアルタイム性はある程度目をつぶってもいいと思う。

しかし、実際的に運用してみないとネットワークの端と端のアクセス性とかわからんからなぁ。
0032デフォルトの名無しさん01/08/28 18:36ID:/foo1b.s
>>31
その点は netnews っていういい例があるんじゃない?
今の netnews はやたらと早く配送されるんで、もうちょっと
昔の状況を思い浮かべるといいと思う。
0033 01/08/28 22:55ID:aE5uBalY
>>14
>ところで、Webだと、リソースを表すためにURLを使って指定できるけど、
>P2Pだとできないよね?

例えば、スレッドは「掲示板名+スレ立て時間+立てた人のGUID」
スレッド内のカキコは「掲示板名+スレッドを立てた時間+立てた人のGUID+カキコ時間+カキコ者のGUID」

そこをクリックして、果たしてそのスレッドが見つかるかどうかはわからないのですが…

GUIDは駄目?他に何かあるかなぁ…
0034名無し01/08/29 00:02ID:ZgNIazW2
暗号化部分だけ非公開とかどう?>>30
2chも似たようなもんだし。
0035 01/08/29 17:07ID:fbqKB6RI
きょうも 2ちゃんねるは かなりしんでるけど、このいたはまだいきている

ハイブリッド型すごい勢いだなぁ。批判要望板には、2ちゃんねるを買って、
ハイブリッドP2Pやるなんて人が出てきてるよ。

2ch買います
http://teri.2ch.net/test/read.cgi?bbs=accuse&key=999059919

ぼくはゆっくりやることにするよ。 なんか日記みたいで失敗。
0036デフォルトの名無しさん01/08/29 17:26ID:akViQcrc
リソースの存在(ディレクトリサービスみたいなもんか)自体は、
IRCでぐるぐる回せばそれほど遅くならねーべ?

・どういう板があって
・どんなスレッドがあって
・そのスレッドの最近書きこみ時刻はいつで、
・それがどのサーバにあるか?
 (複数サーバが1つのスレッドをストライプでもつかミラーでもつか
  ストライプ+ミラーでもつか程度は対処可能としましょう)
だけ回す。

そうすりゃ、スレッドのデータを保持しているPeerが起動されたときに
「お、起きてきたか?」
ってわかるべ。

NNTPだと差分量がでかすぎて、
パンピーが手出せねーべ?
0037デフォルトの名無しさん01/08/29 17:29ID:akViQcrc
注1:
訂正 それがどのサーバにあるか?×
   それがどのPeerにあるか? ○

注2:
IRCつかったことない人でもIP-Messengerは使ったことあるべ?
あれと同じノリだっぺ。
接続論理は、
・マシンとユーザ名+どんなスレッドのデータを持ってる
これを流すようにするだけ。
0038デフォルトの名無しさん01/08/29 17:32ID:1GuEpsjo
>>36 でもそれは IRCサーバに依存してしまうのでは?
0039デフォルトの名無しさん01/08/29 17:39ID:akViQcrc
で、IRCでリソース(つーかディレクトリサービスか)を
ぐるぐる回しただけでは、ブラウザーで板一覧がみえねぇ。

そこで、
・表示だけをうけもつPeerというのを存在させる

現実的には、ルートノードみたいなのがねーと、
シロートさんがIEとかでペコっと開けねーから、
www.2ch.net/index.html、板一覧、板のスレッド一覧表示を
受けもつPeerはどこかに性的に置く必要があるっぺ。
どこかのレンタルサーバに性的に置くしかねー。

で、シロートさんが、その性的に配置されたPeerに対して
URLを指定してIEなんかでそれらを見に行くと、
性的に配置されたPeerは
HTTPの応答を"Location どこそこ"で、どこかのPeerにすっとばして
表示させる。

# すっとばす先は、IRCでぐるぐる回している情報から取るべ

# その性的なPeerもIRCで自分の位置を知らしめねばならん。
# でねーと「掲示板にもどる」ができなくなるっぺ。

スレッド1つ1つの表示は、スレッドデータを保持している
Peerに直URLで表示できるようにすればええ。
もちろん、一覧表示のスレッド最新10レス表示もそいつにやらせるべ。
なに、一覧表示HTMLをフレームで区切ればできるっぺ。
0040デフォルトの名無しさん01/08/29 17:42ID:akViQcrc
>>38
IRCは桃の例えだっぺ。
要は灯を消した体育館で同じクラスの人間と手をつなぎあう手段が
ありゃーええ おっとヘンなところは触っちゃなんねぇべ。

IP-Messengerだとそれサーバなしでやってるべ。
(SMBのマスタブラウザみたいなのをテキトーに決めてるんだか?)
問題は、そいつのトラヒックがどんだけかっつーのがある。
0041デフォルトの名無しさん01/08/29 20:10ID:mHkvtMJw
概略考えて見ました。こんなんでどうでしょ?
割と普通だと思うんだけど・・・。

■ 特徴

ネットワークはFreenet型(多分)
スレじゃなくてレス単位で保存
匿名性は 2ch.p2p に参加していることが数人にバレる程度
書き込み&スレ取得は誰がやったかバレない(多分)

■ レス単位で保存の意味

スレ単位で保存すると、どれが最新なんだー?と混乱するから。
レス単位なら、内容は永久不変。レスに書き込み日付の情報を
持たせて、スレ取得時に書き込み日付でソート。

#このアイデアは前スレであったような気がしたんだけど、
#ちょっと見つからなかった。。

■ スレ取得

まず、クライアントAが「ID:hogehogeのスレに属するレスをくれ!」
とコネクションを張っている他のクライアントにメッセージを発行。
どんどん回す。

メッセージがスレを持っているクライアントBに辿り付いたら
クライアントBは「レス番号:1-xxxまでなら持ってるよー」と
の情報をクライアントAに向けて返してやる。

クライアントAはいくつかのクライアントから応答を貰えるだろう
から比較して、適当に分散させて「おう!んじゃ、お前さんは
xxからyyまでくれよ、お前はyyからuuまでな」というメッセージを
それぞれに発行。気をつけなきゃいけないのは、各クライアントで
拾ってないレスがあるかも知れないわけで、レス番号はまちまち
かも知れない。その点も受信時に考慮。また、悪質なクライアントが
嘘の情報を流すかも知れないのでこれも考慮。
00424101/08/29 20:11ID:mHkvtMJw
う・・・「改行がおおすぎます」が出ちまった。
続き。

■ 書き込み

書き込みしたいクライアントは、書き込んだぞーメッセージを
他のクライアントに送信。もちろん、匿名性確保の為に、他の
クライアントから伝わってきたんだけど…という顔をして。
書き込みメッセージはネットワークのすべてのクライアントを
駆け巡る(無駄っぽい)。

<書き込みメッセージを受け取ったクライアントの動作>

1:
まず、書き込み日付が、異常に昔だったり、未来だったり
していないかをチェック。もし、チェックに引っ掛かれば、
そのメッセージを他のクライアントに渡したりはしない。
これは、レスをあとから挿入しようと目論んでいる悪質な
クライアントを排除するためである。また、これにより、
クライアントは常に正確な時間を保持することが義務付けられる。

2:
自前でスレのage、sageを行ってスレ一覧を作る。
参加したばかりで、ろくにスレ一覧の出来ていない
他のクライアントから分けてもらいましょう。

3:
ストックに保存
…でも全部のクライアントが保存したら多すぎるよなぁ。

■ レス保存

完全消滅する前に適当にばら撒きましょう。
ライフタイム計算して、適当に消すのも良し。

■ ついでにレス削除

クライアントは、気に食わないレスの(自分を通じての)流通を
拒否することが出来る。つまり、1-xxxは持ってるけど、Id:zzz
のレスはやらん!というように。要求元のクライアントAでは、
「削除された」という形で扱われる。が、
別に欲しければ、「ID:fugahugaのレスある?」と
他のクライアントに聞くことは出来る。が、
別に気にしなければ、クライアントAへは結局コピーされなく、
またクライアントAからそのスレを取得した他のクライアントへも
コピーされなくなるので、完全消滅の日は早まる(気がする)。

■ 補足

スレIDは「板名+ユニークそうな文字列」、
レスIDは「スレID+ユニークそうな文字列」とする。

板を立てること自体はレスIDの板名を変えるだけなんで誰でも出来る。
メジャーな板の一覧はプログラムに埋め込み。
00434101/08/29 20:14ID:mHkvtMJw
何度もゴメン・・・間違えた。

誤:
参加したばかりで、ろくにスレ一覧の出来ていない
他のクライアントから分けてもらいましょう。

正:
参加したばかりで、ろくにスレ一覧の出来ていない
クライアントは、
他のクライアントから分けてもらいましょう。
0044 01/08/29 20:26ID:fbqKB6RI
やはりGnutellaベースで考えると、>>41のようになりますね。

(スレッドのローカルへの保存)
(パケットのルーティングのルール)
(ノード間通信のスレッド共有のプロトコル) の3つに分けて考えたほうが
整理できると思います。

もう一つ、メジャーな板はよいけれど、参加者の少ないマイナーな板は、
特に参加者が少ない時間帯では、共有に失敗する可能性が考えられま
す。 >>3で書いたように、そこで、ランダムな板のスレッドをいくつか、強
制的に、参加者に共有することを義務づける。あるいはスレッドを立てる
こととバーターで、を考えています。

匿名性については、自分が接続しているノードのIPアドレスは分かって
しまいますね。中のカキコの作者はわかりませんが。
あとGnutellaのプロトコルでは、検索クエリーへの答えのパケットに
IPアドレスが含まれているので、そのパケットが通過したノードでは、
「xは、A板のスレッドを持っている、yはB板のスレッドCを持っている」
という情報が漏れてしまいますね。
0045デフォルトの名無しさん01/08/29 21:21ID:7L0go79A
共同作業型のアプリは、どこかで同期化する仕組みが必要だと思うな。
ファイルシェアだけの仕組みの提供だけではまずいような気がするな。
それが鉄則だと思うけど。
0046デフォルトの名無しさん01/08/30 00:33ID:9VE7JjWs
性能について言及するならば・・・
"shared nothing"
1つのrequestが複数ノードに負荷をかけないようにする - これは鉄則だと思う。
0047デフォルトの名無しさん01/08/30 00:36ID:9VE7JjWs
>>41
最新スレあげ程度だったら、
「最新書きこみ時間」を、スレデータを保持するノードにて発信することができて、
それを複数のノードが共有するだけでもいいんじゃないだろうか?
イメージ的には、Windowsのネットワーク共有フォルダを参照したときに、
ファイル名と更新日付がでてくるよね?
あれと同じことを確認できるだけでいいと思うんだけど。
0048 01/08/30 01:37ID:uLXMKjs2
カキコが、そのスレッドを読んでいる全ての人にもれなく配布されたか
どうかをテストする方法として

しりとりが使えないか?

yyyy/mm/dd hh:ss りんご ごりら
yyyy/mm/dd hh:ss ごりら らっぱ
yyyy/mm/dd hh:ss らっぱ ぱり
…

一般参加者にガンガンしりとりを行ってもらい、そのログを集計する。
書き込むタイミング、配布のタイミングで順序が多少前後したとしても、
書き込み時間で修正できるし、前の単語を書いてもらえば、Treeとして
分析することが可能。 配布漏れが発生するかどうか、もし発生すると
したら、どれくらいの頻度で。

何か矛盾や間違っているところがありますか、もっと良い方法はありますか?
0049デフォルトの名無しさん01/08/30 01:39ID:9VE7JjWs
利用者ベースの確認方法としてはいいと思った。
抜けがあったらすぐわかる(しりとりが破綻するから)

ただ、P2Pって、全部のPeerに均等に同じものを配布せずにすませる仕組みだと思うんだけど・・違う?
それだとNNTPでいーじゃん、ということにはなりゃせぬか?
0050 01/08/30 01:48ID:uLXMKjs2
>>49
プログラムが、実際の使用に耐えうるものかどうかは、ある程度のユー
ザーにテスターとして協力してもらわねばならず。しりとりなら誰でも
参加可能。

>全部のPeerに均等に同じものを配布せずにすませる仕組みだと思うんだけど・・違う?

P2Pの定義によるかもだけど、あなたの意見には同意。
しかし、板単位、スレ単位でネットワークを組むわけではないから。

もう一つは、配布漏れが発生した際に、どのようにユーザーはそれを
知り、リカバーするのか。 「氏ね>>111」 しかし、俺のログには、
>>111のカキコないぞ。では、>>111を検索しよう」 うーむ。
00514101/08/30 02:00ID:UdwDTLPc
レスどうもっす。

>>44

>(スレッドのローカルへの保存)
>(パケットのルーティングのルール)
>(ノード間通信のスレッド共有のプロトコル) の3つに分けて考えたほうが
> 整理できると思います。

そうっスね。ひとまず、クライアント間での通信メッセージは
どういう書式で記述するのがいいんだろう・・・?XML?
だと、無駄にでかいか。Gnutellaはバイナリなんだっけ・・・?

> もう一つ、メジャーな板はよいけれど、参加者の少ないマイナーな板は、
> 特に参加者が少ない時間帯では、共有に失敗する可能性が考えられま
> す。 >>3で書いたように、そこで、ランダムな板のスレッドをいくつか、強
> 制的に、参加者に共有することを義務づける。あるいはスレッドを立てる
> こととバーターで、を考えています。

新しめのカキコ(レスじゃ紛らわしかったですね、すみません)については、
41の案では、マイナーな板でも公平に、書き込みと同時にわさわさと広がって
大量のコピーが作られる予定なので、大丈夫そうな感じです。
古めのカキコは知らん。

> 匿名性については、自分が接続しているノードのIPアドレスは分かって
> しまいますね。中のカキコの作者はわかりませんが。
> あとGnutellaのプロトコルでは、検索クエリーへの答えのパケットに
> IPアドレスが含まれているので、そのパケットが通過したノードでは、
> 「xは、A板のスレッドを持っている、yはB板のスレッドCを持っている」
> という情報が漏れてしまいますね。

えーと、これはその応答に使う経路で直接、
カキコを返すような感じでやれば匿名性は守れると思います。
接続ノードにIPがばれちゃうのは・・・まぁ、しょうがないかと。

>>47

勘違いだったらゴメン。それだと、その板を同時に読んでいる
いくつかのクライアントのIPを取得できちまわないか?

一体、匿名性は、
・2ch.p2pに接続しているがバレる
・板に接続しているのがバレる
・スレッドに接続しているのがバレる
のうち、どのレベルまで確保すればいいのだろうか?
「スレッドに接続しているのがバレる」まで許されるのなら、
割とパフォーマンス良いシステムが出来そうだ。
とりあえず、41の案では、匿名性最優先で考えたつもり。
00524901/08/30 02:19ID:9VE7JjWs
氏ね >>111
の111は、ブラウザ上でURLとして埋めこまれる
→それを受けるサーバが処理する

となれば方策は2つ
1. そのサーバがスレッドデータの保有者となるような構造にしておく
 →必ず返答可能
2. そのサーバは、スレッドデータの表示者となるような構造にしておく
 →検索は、表示者が行う
  行うとすれば、、、
  手順1 スレッドはどこか探り当てる
  手順2 スレッドを保持しているサーバに対してrequestを送り、
     返答内容に差がなければ表示する(返答可能者全員一致採用法則)
0053 01/08/30 02:23ID:uLXMKjs2
gnutellaはガチガチのバイナリだよ。XMLでいいんじゃないの?
前も書いたけど、似たようなことをSOAPでやってる人、XML-RPCが
いるらしいよ。
00544901/08/30 02:24ID:9VE7JjWs
もし、配布という概念を用いるのであれば、
歴史のあるNNTPや、Proxyサーバを使った方が工数も下がるし
プロトコルの不得手としているところもわかるのでいいと思う。

ただ、一般社会のパンピーが、UD-Agentを利用するように
Peerを保持するようなノリに仕向けるためには、
そんな重いものを持たせるのも無理があるかと思う。

仕様決定は、現状可能な技術があるからこれで、
というアプローチが経済的であるけれど、
まずは人間本然の論理として、
大丈夫そうかどうかを論じることも亦重要なのではないでしょうか。
把握しやすい論理は実装矛盾を生みにくいのも亦事実であります。
0055 01/08/30 03:18ID:uLXMKjs2
>歴史のあるNNTPや、Proxyサーバを使った方が工数も下がるし

サーバが必要では?概念だけ利用するの?ごめん。頭が動かな
いのでもう寝る。
00564901/08/30 04:08ID:9VE7JjWs
>>55
サーバプロセスをPeerに実装する
というのがNNTPやProxyサーバを使った場合の答

でもP2Pは、カエサルのものはカエサルに、が正道だと思うなぁ・・・
0057デフォルトの名無しさん01/08/30 13:40ID:uLXMKjs2
てすてす。かける?
00583001/08/30 14:41ID:YEMO5.RY
チェーン方式(発言番号ロック制御)について
http://piza2.2ch.net/test/read.cgi?bbs=tech&key=990334284&st=195&to=195&nofirst=true
http://piza2.2ch.net/test/read.cgi?bbs=tech&key=990334284&st=213&to=213&nofirst=true
http://piza2.2ch.net/test/read.cgi?bbs=tech&key=990334284&st=225&to=229&nofirst=true

要は、最新の発言があったサーバンドが、
スレッドのオリジナルを保持しているっていう当たり前の話。
書きこみをする時というか、その依頼があった時は、そこに書き込みをしにいく。
但し、先着1名様限りで、あぶれた場合は、新しくオリジナルになった所を教えてもらって、
もう一度再チャレンジ。成功したら自分がオリジナルの所有者になるというわけ。

そして新しい書き込みが送られてきたら、自分の前の番号のサーバンドにリレーする。
そうすれば、発言のあったサーバンドがミラーとして利用出来る。
行方不明だったり、拒否だった場合はバイパスしてその前に送る。
もちろん、余裕があればその他からのチェーン要求を受け付けてもいい。
まあ、何度も書き込みをしてるとその数だけ何回も送られて来る事になるから
古い方は許否してチェーンを外れておくか、照合用に参照情報だけ送ってもらう。

でこれだと結局オリジナルのサーバに依存だから、
オリジナルが行方不明になったり、トラブった時にも
対応出来る仕組みを考えてたのが上の参照リンクの奴。

基本的には、チェーンの参加者は、再起動時には必ず
最新状況を確認せよって話かな?
0059 01/08/30 14:46ID:XO07jRAQ
正直、複数の人間が思い付きを書くだけでは、まとまらず話しが拡散
しますね。 僕はしばらくコモってまとめることにします。

(でも時々age)
0060デフォルトの名無しさん01/08/30 15:29ID:ZbIqADkA
>>58

でもさ、それだと、カキコをしたやつのIPバレバレじゃない?
同時に最新のカキコをした奴(=オリジナル保持者)から見れば、
それスレにアクセスしてくるやつのIPもバレバレな気がするんだが。

これを回避できれば、リアルタイム性、同期性もあって、
素晴らしいと思うんだけど・・・。
0061デフォルトの名無しさん01/08/31 00:44ID:t1XPYVCw
書きこみ番号なんてすっとんでもいーじゃん 現に今がそうなんだし。
みんなもっと素元的に落としこんで考えろ Learn more,study hard!!
0062 01/08/31 03:30ID:cWzLd3g2
朝起きるのが早すぎるよ。

巨人インテルマンセー。
http://www.watch.impress.co.jp/internet/www/article/2001/0829/intel.htm
http://www.intel.com/pressroom/archive/releases/20010828tech.htm
00635801/08/31 03:52ID:xAV9dT/M
>>60
もし、この書き込みがそうだと仮定すると、
たしかに、62の書き込みがあったサーバンドのipが分からないと
書き込めない事になるし、分かれば書き込んだ方のipも分かってしまう

どうすればいいかというと、2chの管理人を増産するのが一番簡単。
要はIP取らなければいいわけで、そういう信頼出来る?
サーバンドにしかアクセスしなければいい。
で、書き込みしにいく時は、それらの代理サーバンドに全権依頼する。
番号の管理は代理サーバンドが行なう事になる。
つまり、書き込む人と、サーバンドの独立性を確保すればいい。
まあ、要するに普通にユーザーモードで書き込めればいいって話だね。

>>61
レス順序が一定でないと、例えばこの書き込みの方が、61より
速く出回るって事が起こりえる。

ipなんてない昔からそういう転送掲示板はたくさんある訳。
それならnntp(ihave/sendme等)で十分。というかもっと単純化するべきか?
要は設定を自動化して、皆がだれでもサーバー立てられればいいって話。
既存のnntpサーバが、一般の接続を弾くのは、そのように設定してるからってだけだと思う。
つまり車輪の再発明は、ゴムタイヤだから意味があるので、
そうでなければ、滑りを良くして、レールを発明するって方法もある。
p2pなんて、結局ip/dns/サーチエンジンの再発明みたいな話だし。
0064デフォルトの名無しさん01/08/31 04:05ID:g5Kjhjlw
今のGnutellaでファイルの共有は出来る。問題なのは同期を取ることだと思う。
でもこれを実際にp2pでやるのは無理というかその性質に合致しないことのよう
に思える。2chのようなものは中央サーバがどうしてもいるんじゃないだろうか。
だからそういったサーバ単位で不可分散を考えた方がいいと思う。プリミティブ
な意見で申し訳ないが。。
0065 01/08/31 04:28ID:cWzLd3g2
お、ネガティブな意見続出。まぁ、普通そうだろうね。

書き込みの順序については既に前のスレッドでも議論したね。もうお腹いっぱい。
配布の遅延や漏れについては、当然生じるわけですが、これをどのように最小限に
押さえるのかというところが面白いところだと思うYO。

前のスレッドで、SOAP使うと言う人がいましたが、ここはもう見てないですかー?
0066 01/08/31 05:03ID:GoIOYhtI
>>63
こういうのはどうかな?

(1) Gnutella Net 上でニュースグループ名(たとえば2ch.techとか)を
  含むファイルを持っているか検索をする。
(2) 見つかったら、そのファイルをGETする。この時点でGETされた側は、
  GETした側からNNTPで記事を配送できるようにする。
(3) ファイルの中身を見て特定の単語(たとえば「このファイルは2ch掲示板で
  使います。」みたいな単語)が含まれていたら、そのピアとNNTPでやりとり
  を開始する。

こういう感じで自動的に「レス」の配送を行うことってできないかなあ?

んで、このままだと今の2chと互換性がないから、取ってきたレスをまとめて
スレにして、ベアシェアみたいに限定されたウェブサーバ機能(この場合は
MP3ファイルリストの表示じゃなくて、掲示板CGI機能)も持たせてやれば
どうかな?
0067 01/08/31 05:16ID:GoIOYhtI
>>65
レスが途中で抜けても、後からそのレスを検索によって取得できれば問題ないんじゃないかな?
たぶん、今みたいに >>999 とか番号で指定することはできなくなるから、レスIDを
使うことになると思うけど、そのユニークなIDを検索にかけて取得するようにすれば。。

って>>66-67は思いっきりNNTPを使ってさらにレスごとに管理するという前提で話してますが。。
0068 01/08/31 05:20ID:GoIOYhtI
要するに、誰かが >>xxx みたいに参照してないレスは、あってもなくてもいい、
はいいすぎだけど、なくても気づかない、ってことなんで、だれかが参照した時点で
取得すればいいんじゃないかなと思ったんです。
0069 01/08/31 05:42ID:cWzLd3g2
>>67-68
それって、>>50, >>52 と同じ事と考えていいよね?
00706301/08/31 05:48ID:xAV9dT/M
>>64
そんなこともないと思う。

p2pってのは、一番必要な人達が持っていれば
他の人はそこからもらってくればいいから
皆が保存しておく必要がないって所にメリットが有るように思う。

ipが無い時代には、在り処が分かってても、隣までこなければ無理だったけど、
今は場所さえ分かれば、そこへアクセスして取ってくる事ができる。

>>66
で、>>30でも言ったけど、問題は、規模がでかくなると、
索引でさえ膨大になって、その場所を見つけるのが難しくなる。
まあ、ageで書き込むだけである程度それができるのが2chのシステムである訳で。
ただ、書き込みが多すぎて流れてしまうと、スレの中でも見つけにくくなるのと同じ。
要は処理が追いつかなければ全体を見る事が出来なくなって
見つけられない訳だよね。
でも、例えばp2pの掲示板の話題がこのプログラム板にある
っていうことを知ってればここには辿り着けるって話。

結局、何処かでツリー構造に頼るしかないかもしれない。
でも、それでは頂点がパンクするので、依存するのは避けたいわけだよね
それには山の頂上を平らにするっていうのが普通のサーバー分散の発想。

ただ、山を転がせがばいいという考え方もあるんだよね。
要は、ここを知らなかった場合は、誰かがなんらかの形で
教えてくれたから皆ここを見てる訳だと思うし?
00717001/08/31 05:50ID:xAV9dT/M
>>68
逆にいうと皆が参照してくれれば問題ないんだよね。

結局、システム的には、
その場で即座に作れて自動リングする。
勝手に消えない匿名ホームページ群と、

そのリングの負荷分散型ランキングシステム
があればいいだけかもしれないなあ?
まさにこれが問題なんだけど。
007266-6801/08/31 11:06ID:DGb/yr.6
>>71
ニュース読んでると、みんなが興味のある記事には
たくさんの返信がされるじゃない。
ということは、もともとの記事が配信されなくても
それに返信した記事のうちのどれかひとつが届けば
もともとの記事が存在したことがわかるし、
興味なければ返信もないから見つけられない人が
少し増えることになるだけと思う。

その記事に返信された数がそのままランキングに
なってないかなぁ?そういう話じゃない?>ランキングシステム
0073 01/08/31 13:00ID:cWzLd3g2
>>72
多少の遅延が生じるかもしれませんが、ネットワークに参加しているノードが
カキコを持っていれば、いつかは(w、同期が取れると考えています。

問題はその遅延時間を出来るだけ短くすることと、遅延に気づいたユーザーがその
カキコをできるだけ自然に、かつネットワークに負荷がかからないようにして取り
寄せることができるような仕組みかなと思うのです。
■ このスレッドは過去ログ倉庫に格納されています