P2Pでサーバに依存しない掲示板を作るの巻
■ このスレッドは過去ログ倉庫に格納されています
00011
01/08/27 21:33ID:Uofeyeso依存しない掲示板を作るの巻。
クライアントサーバ型BBS、ハイブリッドP2P型BBSでは、サーバを必要とするために
運営に費用がかかります。掲示板では利益を生み出すことができない以上、これら
のサービスは持続可能なものではありません。
2ちゃんねるライクな掲示板を持続可能なものにするためには、コストがかからず、
誰にも依存しない、純粋なP2P型ネットワークを開発する必要があるように思われます。
00021
01/08/27 21:34ID:Uofeyeso■ サーバを必要としないため、掲示板が完全にダウンするリスクがありません。
■ 運営にコストがかからないため、お金を儲ける必要がありません。
■ 運営者が不要になります。
■ 多機能化が可能です。
PureP2P型掲示板では、以下の悪いところがあります。どのようにして補うのか。
できるだけ
■ 特別なプログラムをサーバントとして動作させる必要があります。
■ カキコを完全に削除することが出来なくなります。
■ 誰も管理できないのでは?。危険だ。
■ 完全な匿名化を行うことが出来ないのでは?
■ スレッドやレスの取得もれ、消滅が起きる可能性があります。
■ 中央サーバ型に比べ、速報性に欠ける(カキコが全てのユーザに伝わるまで
に時間がかかる)可能性があります。
00031
01/08/27 23:11ID:Uofeyeso例えば、他の人がたてたスレッドをn個ローカルのディスクにおいて
共有しないと、スレッドが立てられないようにする。
ネットワークへの参加費用=帯域とCPUとディスクの提供という考え方。
最初はROMから。
0004デフォルトの名無しさん
01/08/27 23:16ID:kDLbYqTEシステムの設計よる。
■ 運営にコストがかからないため、お金を儲ける必要がありません。
運営には個人レベルで金はかかる。
■ 多機能化が可能です。
安易に多機能化していくと互換性が乏しくなり、ユーザが離れるだろう。
■ 特別なプログラムをサーバントとして動作させる必要があります。
ソフトウェアによる。
■ カキコを完全に削除することが出来なくなります。
■ 誰も管理できないのでは?。危険だ。
システムの設計による。
■ 完全な匿名化を行うことが出来ないのでは?
完全な匿名なんてあったのか。
■ 中央サーバ型に比べ、速報性に欠ける(カキコが全てのユーザに伝わるまで
に時間がかかる)可能性があります。
ていうかすべてのユーザに通知するような設計にした時点で破綻。
P2Pとキャッシュ混乱してないか?
0005デフォルトの名無しさん
01/08/27 23:18ID:fftmjbdIんで、2ch型の掲示板にするならユニークな発言番号が必要だけど、どうするのかな?
0006
01/08/27 23:20ID:Uofeyeso>システムの設計よる。
ちょっとわからない。PCが何台かP2Pでつながれば、それでネットワーク成立。
スパムやP2P破壊を試みるクライアントの登場?
>■ 運営にコストがかからないため、お金を儲ける必要がありません。
>運営には個人レベルで金はかかる。
具体的にどのような費用?
>■ 多機能化が可能です。
>安易に多機能化していくと互換性が乏しくなり、ユーザが離れるだろう
互換性?バージョン間の?クライアント間の?
>■ 特別なプログラムをサーバントとして動作させる必要があります。
>ソフトウェアによる。
ソフトウェアは必要です。ブラウザのみでは実現できない。
Gnutellaのプロトコルはご存知?
00071
01/08/27 23:22ID:Uofeyeso前のスレッドでは、「時計を合わせて、時間軸で発言順」というアイデアが
出ていたっす。
これは意見のわかれるところだと思いますが、私はかならずしも2ちゃんねる
と同じスタイルにこだわる必要はないとおもっているんだ。
0008デフォルトの名無しさん
01/08/27 23:39ID:kDLbYqTE■ サーバを必要としないため、掲示板が完全にダウンするリスクがありません。
掲示板全体では確かにダウンしないが、個々の掲示板レベルでは?
コピーをばら撒けば理論上はダウンはしないだろうが、
個人的にはコピーをばら撒く方法は成功しないと思ってる。
■ 運営にコストがかからないため、お金を儲ける必要がありません。
常時接続のパソコン。通信費。電気代。
ま、これは余計なお世話か。スマ。
■ 多機能化が可能です。
というかIPv4とv6が例で、非互換が頻繁に発生してはならない。
■ 特別なプログラムをサーバントとして動作させる必要があります。
サーバントとクライアントの両方の機能を持てれば
ユーザから見れば分離した概念ではない。
00095
01/08/27 23:49ID:fftmjbdI時間軸ソートですか。
う〜ん、時間強制合わせはイヤだけどなぁ・・・
00101
01/08/27 23:55ID:Uofeyeso>コピーをばら撒けば理論上はダウンはしないだろうが、
>個人的にはコピーをばら撒く方法は成功しないと思ってる。
参考にさせていただきたいので、なぜそう思われるのかをそことなく
カキコしていただければありがたいです。
>う〜ん、時間強制合わせはイヤだけどなぁ・・・
SNTP。 PCの時刻じゃなくて、アプリ内で別の時刻を持つというのが
前のスレッドで出ていたよ。
00115
01/08/28 00:02ID:GXEcccJ6いなくなったらその内容はもう取得できないよね。
アクセスは少ないけど、検索対象としてはほしいときなんかは
やっぱWebが適してるような。
P2Pだとできないよね?
リンクとかを貼って「前スレ」とか「参照スレ」とか示したいとき
どうするんだろ?
0015連続カキコすまん
01/08/28 00:45ID:IRApeeyY0016
01/08/28 00:46ID:N/BUjlEAそうですね。 過去のスレッドがいつまでも残っているかは全く保証され
ませんね。 ウェブではないので、例えばGoogle等の検索エンジンでも
検索できません。
今で言う「実況スレ」のようなもの?
001712
01/08/28 01:07ID:IRApeeyYP2P-cacheじゃないけど、2ch本家とこのネットワークとでメッセージの交換が
あればかなりイイと思う。
0018デフォルトの名無しさん
01/08/28 01:08ID:lGTCN/0o0019デフォルトの名無しさん
01/08/28 01:27ID:ayAzes6Q完全な匿名を保証しているらしいです。
こういうの、使えませんかね?
たしかフリーネットっていくつかのマシンを経由してデータを転送してもらうから
匿名性が高いんだよね?んで、その分転送に時間がかかるんじゃなかったっけ?
とりあえずグヌテラ形式でいいんじゃない?
0021デフォルトの名無しさん
01/08/28 02:26ID:CmtHTuM.経由して、経由した全ノードにコピーを残して行くから、
みんなが読むようなコンテンツだと猛烈な勢いで複写が
行われてそのコンテンツが多数のノードに存在すること
になるから、そういうのへのアクセスだとgnutellaより
はるかに高速になる。
0022デフォルトの名無しさん
01/08/28 08:20ID:uwDaUMvkサーバント+プロキシ方式はどうだろう?
つまり普通のWebブラウザを最終インターフェースにする
こうしとけば家庭内LANでもパソコンが走っていればゲーム機でもブラウジング出来る
誰かが鯖をたてればいいだけだし
0023デフォルトの名無しさん
01/08/28 11:07ID:u.nsLDdofreenet にはそういうのありますよ。freenet 独自の URL のようなものが
あって、Web ページも作れるし、freenet 上に NNTP や Mail のようなもの
もある。
なりすまし対策とか、荒らし対策みたいなのもいろいろと考えられてるよう
です。
002422
01/08/28 11:24ID:fuFoxE4Attp://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>今のところFreenetから文書を削除する方法はない。全く要求されない文書は、最終的には使われないことで削除される。
という事で、どうやって削除するかはやはり難しい問題のようですね
でも、このスレの議論のタネとしてはfreenetはよい教材のようです
0026__
01/08/28 13:19ID:aE5uBalYhttp://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は、まだないのでしょう
か。前のスレッドはいろいろと参考になりますね。
00278
01/08/28 14:28ID:wzFAflj2>個人的にはコピーをばら撒く方法は成功しないと思ってる。
ま、理論的裏づけがないのであまり強くはいえないが、
いまの2chが流行っているのはリアルタイム性と、
書き込みの完全な同期だろ?
そうすっと、コピをばら撒いてしまうと、ばら撒けばばら撒くほど
面倒になっていくのはいいよな。しかし、ばら撒きを前提にすると
ばら撒かないわけにはいかないわけで。
でここで思うんだが、ばら撒ける余裕があるからネットワーク上の
共有率を高めたほうがいと思う。つまり、今のgnutllaとかって
端から端まで検索効かないよな。だけどもしユーザの立場なら
見れない掲示板が出てくるのはかなり痛い。
だから、コピーをばら撒くより、リソースの存在をばら撒いたほうが
オレは良いと思う。
漏れが考えたのは
・スレのコピーは作らない
・スレは一台のサーバが完全に管理
・スレに関する要求は該当する唯一のサーバへ
・複数のサーバが集まって板を形成
・板内でスレの存在を可能な限り共有
・板へのサーバの参加について制限を設けても良い
・板外のリソースについては板の存在を共有するに止める
てな感じ。スレ単位でトラフィックが50MBはいかないだろ。
いざとなったらスレ委譲の仕組みを加えればいい。
長所は
・スレ単位で負荷分散ができる
・サーバ内でならフローティングなんとかも可能
・面倒な一意の識別子問題もクリア
・完全な削除ができる
欠点は
・サーバが落ちると関連スレ全部落ちる
だな。ま、参考にしてくれ。個人的に考えてるだけだしな。
00298
01/08/28 15:38ID:wzFAflj2最悪、高負荷のスレ以外を他の空いているサーバに委譲しちゃえばいいと思った。
すべてのスレが高頻度に更新されることはないだろうから。
数個のスレで破綻するようなサーバ、もしくは状況では
コピーをとる方法のほうも破綻するだろうし。
#…しないのかな。
ついでに、コピーを嫌う利用はプログラマとしての経験。
完全同期とリアルタイム性が要求される資源について
安易にコピーを作るとろくなことがない。
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その点は netnews っていういい例があるんじゃない?
今の netnews はやたらと早く配送されるんで、もうちょっと
昔の状況を思い浮かべるといいと思う。
0033
01/08/28 22:55ID:aE5uBalY>ところで、Webだと、リソースを表すためにURLを使って指定できるけど、
>P2Pだとできないよね?
例えば、スレッドは「掲示板名+スレ立て時間+立てた人のGUID」
スレッド内のカキコは「掲示板名+スレッドを立てた時間+立てた人のGUID+カキコ時間+カキコ者のGUID」
そこをクリックして、果たしてそのスレッドが見つかるかどうかはわからないのですが…
GUIDは駄目?他に何かあるかなぁ…
0034名無し
01/08/29 00:02ID:ZgNIazW22chも似たようなもんだし。
0035
01/08/29 17:07ID:fbqKB6RIハイブリッド型すごい勢いだなぁ。批判要望板には、2ちゃんねるを買って、
ハイブリッドP2Pやるなんて人が出てきてるよ。
2ch買います
http://teri.2ch.net/test/read.cgi?bbs=accuse&key=999059919
ぼくはゆっくりやることにするよ。 なんか日記みたいで失敗。
0036デフォルトの名無しさん
01/08/29 17:26ID:akViQcrcIRCでぐるぐる回せばそれほど遅くならねーべ?
・どういう板があって
・どんなスレッドがあって
・そのスレッドの最近書きこみ時刻はいつで、
・それがどのサーバにあるか?
(複数サーバが1つのスレッドをストライプでもつかミラーでもつか
ストライプ+ミラーでもつか程度は対処可能としましょう)
だけ回す。
そうすりゃ、スレッドのデータを保持しているPeerが起動されたときに
「お、起きてきたか?」
ってわかるべ。
NNTPだと差分量がでかすぎて、
パンピーが手出せねーべ?
0037デフォルトの名無しさん
01/08/29 17:29ID:akViQcrc訂正 それがどのサーバにあるか?×
それがどのPeerにあるか? ○
注2:
IRCつかったことない人でもIP-Messengerは使ったことあるべ?
あれと同じノリだっぺ。
接続論理は、
・マシンとユーザ名+どんなスレッドのデータを持ってる
これを流すようにするだけ。
0038デフォルトの名無しさん
01/08/29 17:32ID:1GuEpsjo0039デフォルトの名無しさん
01/08/29 17:39ID:akViQcrcぐるぐる回しただけでは、ブラウザーで板一覧がみえねぇ。
そこで、
・表示だけをうけもつ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:akViQcrcIRCは桃の例えだっぺ。
要は灯を消した体育館で同じクラスの人間と手をつなぎあう手段が
ありゃーええ おっとヘンなところは触っちゃなんねぇべ。
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までな」というメッセージを
それぞれに発行。気をつけなきゃいけないのは、各クライアントで
拾ってないレスがあるかも知れないわけで、レス番号はまちまち
かも知れない。その点も受信時に考慮。また、悪質なクライアントが
嘘の情報を流すかも知れないのでこれも考慮。
004241
01/08/29 20:11ID:mHkvtMJw続き。
■ 書き込み
書き込みしたいクライアントは、書き込んだぞーメッセージを
他のクライアントに送信。もちろん、匿名性確保の為に、他の
クライアントから伝わってきたんだけど…という顔をして。
書き込みメッセージはネットワークのすべてのクライアントを
駆け巡る(無駄っぽい)。
<書き込みメッセージを受け取ったクライアントの動作>
1:
まず、書き込み日付が、異常に昔だったり、未来だったり
していないかをチェック。もし、チェックに引っ掛かれば、
そのメッセージを他のクライアントに渡したりはしない。
これは、レスをあとから挿入しようと目論んでいる悪質な
クライアントを排除するためである。また、これにより、
クライアントは常に正確な時間を保持することが義務付けられる。
2:
自前でスレのage、sageを行ってスレ一覧を作る。
参加したばかりで、ろくにスレ一覧の出来ていない
他のクライアントから分けてもらいましょう。
3:
ストックに保存
…でも全部のクライアントが保存したら多すぎるよなぁ。
■ レス保存
完全消滅する前に適当にばら撒きましょう。
ライフタイム計算して、適当に消すのも良し。
■ ついでにレス削除
クライアントは、気に食わないレスの(自分を通じての)流通を
拒否することが出来る。つまり、1-xxxは持ってるけど、Id:zzz
のレスはやらん!というように。要求元のクライアントAでは、
「削除された」という形で扱われる。が、
別に欲しければ、「ID:fugahugaのレスある?」と
他のクライアントに聞くことは出来る。が、
別に気にしなければ、クライアントAへは結局コピーされなく、
またクライアントAからそのスレを取得した他のクライアントへも
コピーされなくなるので、完全消滅の日は早まる(気がする)。
■ 補足
スレIDは「板名+ユニークそうな文字列」、
レスIDは「スレID+ユニークそうな文字列」とする。
板を立てること自体はレスIDの板名を変えるだけなんで誰でも出来る。
メジャーな板の一覧はプログラムに埋め込み。
004341
01/08/29 20:14ID:mHkvtMJw誤:
参加したばかりで、ろくにスレ一覧の出来ていない
他のクライアントから分けてもらいましょう。
正:
参加したばかりで、ろくにスレ一覧の出来ていない
クライアントは、
他のクライアントから分けてもらいましょう。
0044
01/08/29 20:26ID:fbqKB6RI(スレッドのローカルへの保存)
(パケットのルーティングのルール)
(ノード間通信のスレッド共有のプロトコル) の3つに分けて考えたほうが
整理できると思います。
もう一つ、メジャーな板はよいけれど、参加者の少ないマイナーな板は、
特に参加者が少ない時間帯では、共有に失敗する可能性が考えられま
す。 >>3で書いたように、そこで、ランダムな板のスレッドをいくつか、強
制的に、参加者に共有することを義務づける。あるいはスレッドを立てる
こととバーターで、を考えています。
匿名性については、自分が接続しているノードのIPアドレスは分かって
しまいますね。中のカキコの作者はわかりませんが。
あとGnutellaのプロトコルでは、検索クエリーへの答えのパケットに
IPアドレスが含まれているので、そのパケットが通過したノードでは、
「xは、A板のスレッドを持っている、yはB板のスレッドCを持っている」
という情報が漏れてしまいますね。
0045デフォルトの名無しさん
01/08/29 21:21ID:7L0go79Aファイルシェアだけの仕組みの提供だけではまずいような気がするな。
それが鉄則だと思うけど。
■ このスレッドは過去ログ倉庫に格納されています