四国だんだん分散しつつ

http://mshe.skr.jp/

分散サーバをしたいという方がある程度集って、50戦ちょいくらいはプレイされ、だんだんと当初の予定っぽい雰囲気になってきました。がほとんど同じシステムで、かつ連携しながら動いてて、結構素敵感。江戸とか最高。要は違うサーバの雰囲気の異なるCGIが微妙に協力しながら(戦績などは全サーバ共通)動いてる、ってのがやってみたかった。

人狼BBSも審問もどうにもこうにも負荷が大変らしく、こんなもんソースばらまいて分散すればいいじゃないか、とはもともとある程度思っていたことでして、特に審問の方は短期決着の人狼(せいぜい3時間程度の勝負で負荷がデカい)があったために長期の方に影響を与えたりして、結局負荷の問題で短期ができなくなってしまったとかいう話だったので、内々に作っていた短期向けクローン(250戦以上プレイされてる模様)に分散仕様を加えて公開したのでした。

特に面白くもないのですが技術的なことなど…

最初のコンセプトとして、とりあえず高速に、役職追加などしやすく、カスタマイザブルな村が作れるように、人狼BBSをベースに審問などの欲しい機能(アンカーとフィルタ)をひっこ抜いてくる、あと設置を簡単に、っていう感じがあって、まぁそのへんはたいてい実現した。というかその他もろもろ、気の向くままに機能はつけたした。

最初は ERb 使ってたけどどうにも遅くて ERbLight に乗り替え、果ては ERbLight 依存部分も極力減らした。人狼BBSRuby&MySQL 、審問は Perl&BDB とのことだったんですけど、ややこしいこと考えず Ruby&PStore 。他所は cron で更新が多いみたいだけど、 cron は使わず、おかげでまぁ設置はそれなりに簡単みたい。

で、その当初の四国を分散させようと考えた。

分散させようと考えた時に共有データの同期が大変なわけですが、これは大元のサーバにロック専用のCGIがあって、そこにアクセスすることによってロックを取得、そんでから各サーバに更新したデータを送信、んでからロック解除、っていう感じでやってます。サーバが落ちてた時は、古いデータを持ったままになってしまうので、落ちてるサーバがあったら凍結するようにする、つもり(実装はできてるけどまだ動かしていない)。

それと国ごとの特色を出せるように、っていうのも分散時のコンセプトとしてありまして、画像だけじゃなくてメッセージなんかもカタログを分離してカスタマイズできるようにしてみたり。 http://mshe.skr.jp/catalog.rb

あとは簡単に設定できるように初期化CGIを加えたり、その他もろもろと。認証を各サーバ共通でやるのは大変だな、と思ったので TypeKey を導入したりもした。

データのバックアップをするシステムと、そのバックアップデータからランキングを生成する機能をつけることによって、高速なランキングを実装したり(もし毎度全ユーザデータをなめるととても遅い)、 Hyper Estraier 使って過去ログ検索つけたり。このあたりの機能は mshe.skr.jp に一点集中させている。他で設置するのはめんどうだし。

9州ssなんかは見た目以外にも、システム的にかなり改造されていて、キャラに表情があったりとか、色々面白い。自分のコード改造してもらうのは嬉しいもんだ。ラクに盗める機能は盗んだりもした。

ただ正直四国のソースは悲惨。なんていうか、速度優先な部分が多くて、ソースはコンパクトなもののどうにもこうにもヒドい部分が多い。ダメに作った部分にダメな泥縄対処があいまってどうしようもなくなったりしてたり。

全体的に基本的にはそれなりにうまくいってるのかな、という印象なのだけど、後悔があるのは分散態勢に入るのが早すぎたこと。もともと、もっとゆっくりデバッグしてから分散を募集するつもりだったんだけど、なんか分散してくれるという申し出が予想以上に早く来たため、見切り発車で分散してもらった。ひとつ村のデータが破損した以外は極端に大きな問題は出てないものの、細かい不具合なんかは結構残っていて、それを手元で修正しても各サーバが追従が大変で遅れる、ということが少し問題にはなっている気がする。ソースをリモートで更新させる機構をつけることは考えたものの、それってつまり私が発狂したらサーバに対してヒドいことできるよね、っていうことでそういう機構はあえてつけなかった。おかげでみなさんに最新ソースへの追従の手間取らせてるのは微妙に思う。

本当はできたシステムに全然機能追加とかせず、ひたすら保守保守…に回ればお互い手間は少ないのだろうけど、残念ながらそれは私の好みと正反対。バグ恐れず変えまくれ、っていう気質なのでそれはまぁ迷惑かけてる感。

後悔と言えばもう一つあって、公開寸前にトップの一番上の画像に人狼BBSって書いてあって、人狼BBSは固有名詞クサいから変えた方がいいよね、って話でじゃあBBQでいいじゃんみたいな議論をノリでオッケしたら、みんな人狼BBQとか呼びやがるんですよ…htmlには一言も人狼BBQなんて書いてないのに。このへんにw3mで見ている人間との温度差を感じたり。推奨名称は四国とかTSSとかなんだ…

それでまぁ、どうやら審問でやってたハリセン短期なんかも復活しているらしく、内輪だけって感じでも無い感じにはなってきたので、興味ある人は適当にプレイされてみてはいかがですかみたいな。短期は30分〜3時間程度で終わるのでラクチンですし。

まぁ RubyCGI ってのは飽き飽きなんですよ、ええ…

なにかあれば下記メールアドレスへ。
shinichiro.hamaji _at_ gmail.com
shinichiro.h