スレッドフロート式掲示板
複数の(通常は、多数の長い)スレッドが存在可能な掲示板であり、
スレッドへの投稿の副効果として
その投稿先スレッドを最上位に浮き上がらせる
(以下の節では、 age機能 という)ようにしてあるもの。
投稿があるごとに スレッド・フローティング が累積
されていくので、
(スレッド一覧などでの)スレッドの並び順は、結局、
最新投稿が新しい順 になる。
日本で現在でも
スレッドフロート式掲示板
といわれている方式の掲示板は、あめぞう氏 が開発したもの。
2ch も、この方式を取り入れて発足した。
ただし、2ch では、後述のように、
投稿時のオプションで、
その投稿先スレッドを最上位に浮き上がらせるのを
さし控える機能(sage機能)
なども、あとから追加された。
基本構成
原始的な方式の難点
掲示板に複数のスレッドが存在できるようにして、
投稿者が既存スレッドに投稿することも、
投稿者が新スレッドをつくる投稿をすることも、
できるようにしたものを、
マルチスレッド式掲示板 という。
マルチスレッド式掲示板 の原始的な方式では、
板にある、すべてのスレッドを単一の掲示板ページに置き、しかも、
各スレッドについて、その全体を掲載するようになっていた。
この方式の難点:
- 長くなったスレッドを掲示板に置くことが困難
- 多数のスレッドを掲示板に置くことが困難
これらの難点は、
この方式に即して age機能 のようなものを導入しただけでは、
避けられない。
難点を避けたページ構成
掲示板の主なページとして、以下のものを作るようにする。
- トップページ
- すべてのスレッドの一覧ページ
- スレッドやスレッドの一部分を指定した閲覧リクエスト
に対応して作るページ
トップページに置くスレッドは、
スレッド・フローティング の累積による順位で、
上位いくつかまでに限定し、しかも、
それらのスレッドについても、
(スレッドを作った、おおもとの投稿とともに)
トップページに掲載する投稿を最新いくつかまでに限定。
これらをトップページに置くのは、
トップページ以外についての閲覧リクエストや
トップページ以外からの書きこみリクエスト
への対応が全面的に正常に機能していれば、
原理的には不必要なこととも考えられるが、
歴史的経緯などを踏まえて利用者に配慮したもの。
(なお、2ch では、
- 削除整理板 の トップページ
http://qb5.2ch.net/saku/index2.html - 削除要請板 の トップページ
http://qb5.2ch.net/saku2ch/index2.html
が、これらをまったく置かないようになっている。)
もしも、トップページに載せておくべきことが、とくにない、
としてしまえるのなら、
トップページ自体が不必要ということになる。
すべてのスレッドの一覧ページ は、
板にある、すべてのスレッドの題名などを
スレッド・フローティング の累積による順位で並べたものであり、
スレッドの題名をクリックすると、
(そのスレッド、または)そのスレッドの一部分を指定した
閲覧リクエストになる。
2ch では、
そのスレッドを作った、おおもとの投稿と、
そのスレッドの最新 50 の投稿
(トップページにスレッドが置かれたばあいに掲載される投稿
より多い)
とからなる一部分を指定した閲覧リクエストになる。
2ch で使ってきたスクリプト
2ch では、主に以下のスクリプトを使って作業が分担されている。
bbs.cgi は、
書きこみリクエスト
に対応し、さらに、
掲示板の トップページ や すべてのスレッドの一覧ページ など
を更新するスクリプトであり、
ここに、 age機能 (や sage機能 など) が実装されている。
read.cgi は、
スレッドやスレッドの一部分を指定した閲覧リクエスト
に対応するスクリプトであり、
スレッドの一部分を指定した閲覧リクエスト として、
下記のようなものが実装されている。
- 指定したスレッドにある投稿ひとつを番号で指定
- そのスレッドを作った、おおもとの投稿なら、番号は 1
- 指定したスレッドにある連続した投稿を始めと終わりの番号で指定
- その上に、そのスレッドを作った、おおもとの投稿を添える指定
- 指定したスレッドにある最新の連続した投稿を始めの番号で指定
- その上に、そのスレッドを作った、おおもとの投稿を添える指定
- 始めの番号として 1 を指定すると、結局、
指定したスレッドにある投稿すべて
を指定したことになるので、
スレッドひとつをまるごと指定した閲覧リクエストと効果は同じ
- 指定したスレッドにある最新の連続した投稿を数で指定
- その上に、そのスレッドを作った、おおもとの投稿を添える指定
なお、 URL では、
おおもとの投稿を添えるほうを単純にしてあり、
添えないほうに (nofirst に由来する) n を加えるように
なっている。
read.cgi は、閲覧リクエストごとに、
スレッドの内部表現ファイル(datファイル)の必要な部分を
整形して HTML に変換している。
2ch専用ブラウザー を使うと、
直接 datファイル を読みに行き、クライアント側で整形するため、
サーバー側で read.cgi を動作させる必要がなくなり、
2ch の負荷削減に寄与できる。
歴史
おことわり
資料による相違 や 再確認が困難な点 が多いため、 本節の内容が正解であることを保証するのは不可能です。
2ch 発足以前
1998年2月
multi2 という掲示板スクリプト(『 Try The Homepage 』で配布)
に、 age機能 の原形が実装された。
1998年3月19日
それまで掲示板を設置していなかった あめぞう氏 のサイト
に、複数の掲示板が開設された。
初期の あめぞう掲示板 は、掲示板スクリプトとして、
minibbs.cgi
という(『 CGIレスキュー 』の)簡易掲示板スクリプトを採用。
age機能 などは、なかった。
1998年9月6日
あめぞう掲示板 は、掲示板スクリプトを
resbbs
という(『 Try The Homepage 』で配布されていた)ものに変更。
age機能 の原形が実装されていたものの、
10件以上のレスがつくと新スレッドがつくられるという仕様だった。
1998年10月ごろ
あめぞう掲示板 では、掲示板スクリプトを改造。
10件以上のレスがつくと新スレッドを作っていたのをやめ、
スレッドにあるレスのうち
(スレッドを作った、おおもとの投稿とともに)
掲示板ページ自体で表示するものを
最新10件に限定する、「裏に回る機能」を導入して、
スレッド自体は長くなってもかまわないようにした。
スレッド一覧 や age機能 も実装された。
(全板に適用されるようになったのは、約半年後 ?)
あめぞう と 2ch との並存期
1999年5月30日
ひろゆき が、2ch を創設。
あめぞう での ひろゆき 自身による報告では、
「あめぞうのセカンドチャンネル」「サブ的な位置づけ」
などとしていたとのこと。
1999年6月…7月ごろ
2ch では、
掲示板のトップページでのスレッド表示のための HTML化 を
あらかじめしておく改造を行い、
あめぞう掲示板 にもフィードバックされる。
2ch では、
- 書きこみスクリプト
- スレッドへの閲覧リクエストに対応して、
書きこみが入っている内部表現ファイルから読み出すスクリプト
を分離した。
1999年8月…12月ごろ
荒らしスクリプトの被害により、結局、あめぞう は壊滅。
犯人は、ひろゆき だったのか ?
あめぞう 壊滅以降の 2ch
2000年ごろ(?)
書きこみスクリプト bbs.cgi と
読み出しスクリプト read.cgi とを
ほぼ完成させる。
前者は従来どおり、 Perl で実装し、後者は結局、 C言語 で実装。
2000年2月1日
(実装で C言語 を使う前の)スクリプトが流出。
(たしか、これが、したらば系 につながっていたはず。)
2001年3月29日
1001 でスレが終わるようになる。
2001年8月25日
夜勤 ★ さん が
転送量増加による破産宣言
をしたことを承けて、
読み出しスクリプトが gzip に対応するように書き換えられる。
現在知られている スレッドフロート式掲示板 は、
この時点で、ほぼ完成した。
2001年9月
上記の作業のために公開されていた read.cgi が
事実上のオープンソース化。
2ch ではクローズドソースで開発が続けられる。
補足 (2ch に即して)
sage機能
レスを投稿する際、メール欄に sage と入力しておくことにより、
投稿先スレッドの順位に影響を生じさせないでおく
(したがって、最上位に浮き上がらせるのをさし控える)機能。
1999年12月3日に導入。
その前日に aburanuki というコマンド名で仮導入されたが、
コマンド名が不評だったため sage に変更された。
sage機能 は、
ふたば☆ちゃんねる や、そのアメリカ版である 4chan にも、
sage というコマンド名のまま導入されているらしい。
age, sage, soko
現運営 では、以下のような板設定も、
SETTING.TXT で、できるようにした。
- レスを投稿する際、メール欄に soko と入力しておくことにより、
投稿先スレッドを最下位に沈める機能
を使える設定 - レスを投稿する際のデフォルトを sage 相当にしたうえ、
メール欄に age と入力したばあいに限って、
投稿先スレッドを最上位に浮かび上がらせる設定
sage 導入時に、コマンド名をもっときちんと考えるべきだった、
ということも、これらによって、さらに明白になった。
実際に導入されている コマンド名 |
age | sage | soko |
---|---|---|---|
もっと適切だった と考えられる コマンド名の例 |
float | stay | sink |
top | asis | bottom |
read.cgi を書く言語
read.cgi Ver.5 までは C言語 で書いてあったのに対し、
Code Monkey ★ は、
read.cgi Ver.6 以降を Haskell で書いている、
……と、いわれている。
外部資料
あめぞうの歴史
http://history.amebbs.com/
あめぞう
https://ja.wikipedia.org/wiki/%E3%81%82%E3%82%81%E3%81%9E%E3%81%86
スレッドフロート型掲示板
https://ja.wikipedia.org/wiki/%E3%82%B9%E3%83%AC%E3%83%83%E3%83%89%E3%83%95%E3%83%AD%E3%83%BC%E3%83%88%E5%9E%8B%E6%8E%B2%E7%A4%BA%E6%9D%BF