読者です 読者をやめる 読者になる 読者になる

Lambdaカクテル

ソフトウェア開発者です.玉石混淆です.

Gitによる分散バージョン管理手法を掲示板分散問題に適用する

git 2ch p2p

前からほそぼそとP2P掲示板を開発していて、いろいろな実装上の問題があったので難儀していたけれど、解決法を見付けたので記録する。

要約

  • 従来の分散型掲示板では、書き込みの内容の同期が困難であるという問題があった
  • Gitをはじめとする分散バージョン管理システムは、分散しながらコミットの順序を保持できる
  • 分散型掲示板の書き込みログの順序保持にGitを利用することで、書き込みの順序がバラバラになる問題を解決できる

P2P掲示板

いわゆる2ちゃんねる型の掲示板をP2P分散掲示板として再構築する場合、ただ内容をDHTなどで分散するというアプローチを採ると、書き込みの内容の同期が取れずレスアンカーにずれが出るなどの問題が発生する。表示される書き込みの順序も受信した順になるので安定しない。

Git

似たような問題はバージョン管理システムにも存在していた。分散バージョン管理システムでは、一度プッシュ先から変更をプルし、それをマージして先方にプルしてもらうというアプローチをとる。変更にコンフリクトがある場合は、プル要求を拒否する。つまりプッシュ先レポジトリさえ分かれば、安全にレポジトリに変更を加えることができる。

P2P掲示板へのGitの応用

この分散型バージョン管理のアプローチは掲示板に適用することができる。書き込みを示すデータ(ファイルの追加でもテキストファイルへの追記でもよい)を追加してこれをコミット、基幹となる上位レポジトリにプルしてもらう。書式等のチェックを行い、問題無ければプルリクエストを受け入れる。これでスレッドが分岐する心配が無くなった。