趙治勲 vs Zen

第2回囲碁電王戦が開催されることになりました。

第2回囲碁電王戦
http://denou.jp/go/

記者発表会が行われると発表された時に、ある程度予想できた内容と言えるでしょうか。前回の囲碁電王戦の時も、発表から開催までの間隔が非常に短かったのですが、こうした方が注目を集めやすいという判断なんでしょうね。それにしても、世間一般的に囲碁は全く話題になりませんね。ただ、AlphaGoの時も一回始まってからがすごかったので、まだ今のところはっきりとは言えませんが…

ZenはKGSで10dですから、もちろん勝機は十分にあるでしょう。記者発表会で出てくる12.4というバージョンから、どれだけ上積みがあるのかはちょっと分かりませんが、CGOSとか見てる限り、むちゃくちゃな進歩は無さそうでしょうか?

おそらく、来年の柯潔-AlphaGo戦はすでに決まっているのだと思いますが、ここまでくるとGoogleは一番手直りでやりたいぐらいでしょうから、柯潔先生にそれを受けてもらえなければ、とりあえず今回Zenにがんばってもらって、その後Zenと一番手直り十番勝負ぐらいやればいいんじゃないかと思います。

[追記 2016/11/20]
ということで、第一局は趙治勲名誉名人の中押し勝ちでした。実力が拮抗してそうなので、残り2局もかなり楽しめるんじゃないかと… ただの勘で本当に適当なことを書きますが、右下を黒にコスミできっちり取りきっててもらえれば、Zenが勝てたような気がしないでもないです。できれば、Zenにも一つ勝ってもらいたいですね。

しかし、COSUMIには本当に人が来ないですねえ。第1回囲碁電王戦の時は、(たしかものすごい突貫工事で作った)囲碁のルール説明の動画を流してたのに、なんで今回はそういうの流さないんだろうと思います。考えがあってそうしているのならまあなんですが、ただうっかりしているだけっぽいのがなんとも…

[追記 2016/11/20]
第二局はDeepZenGoの中押し勝ちでした。対局内容が、なんだかものすごくZenな感じでした。これで両者とも一つは勝てて、良かったのではないでしょうか。第三局も楽しみです。

[追記 2016/11/24]
第三局は趙治勲名誉名人の中押し勝ちとなり、第2回囲碁電王戦は趙治勲名誉名人の勝利となりました。おめでとうございます。

ここからは、少し話題になっているZen開発者の加藤さんの判断による投了について、私の考えを書いてみたいと思います。

まず第一に、あんな局面で投了するなんてありえません。趙先生も井山先生も全然しっかりとした見通しが立っている感じではないですし、なによりもZen自身の白番のwinrateが50.1%のタイミングで投げるなんて、正気の沙汰ではない(ちなみに、手元の天頂の囲碁6だと62%ぐらい、山下さん曰くAyaは72%!)。しかし、以前、将棋電王戦で話題になった時にも感じたことですが、そもそも大会レギュレーションで開発者判断の投了が許可されているのがおかしな話で、「本当にドワンゴは学習能力ないわ。五目ナカデで死ね」って最初思ったのですが(笑)、一応念のために、今回の第2回囲碁電王戦の対局ルールを確認してみると、これって開発者判断による投了を認めていない気が…

囲碁電王戦 趙治勲名誉名人 vs DeepZenGo 対局ルール
http://denou.jp/go/pdf/denou_go_rule201611.pdf

ゆっくりと順番に読んでいきますと、まず今回の大会では対局ルールを

対局は日本囲碁規約に準ずるものとする。

としています。日本囲碁規約とはこれのことです。

日本囲碁規約(全文) | 棋戦 | 囲碁の日本棋院
http://www.nihonkiin.or.jp/match/kiyaku/zenbun.html

この日本囲碁規約の第十一条でこのように定められています。

第十一条(投了)
対局の途中でも、自らの負けを申し出て対局を終えることができる。これを「投了」という。その相手方を「中押勝」という。

素直に読めば、負けを申し出ることができるのは対局者のみ、今回の場合はDeepZenGo(と趙治勲名誉名人)のみです。そして、先ほどの「囲碁電王戦 趙治勲名誉名人 vs DeepZenGo 対局ルール」にはこれを上書き、または補完するような規定が見つかりません。このようなレギュレーションで行われていた対局にもかかわらず、開発者の判断で勝手に投了するのは無理があると思われます。

開発者の判断で投了することの是非が、過去に大きく話題になったのは、なんといっても将棋電王戦FINALでの、AWAKE開発者、巨瀬亮一さんによる21手投了でしょう。あの投了に対して様々な議論があるのは致し方ないことですが、ただ間違いなく言えるのは、レギュレーション的には問題なかったということです。

将棋電王戦FINAL 対局ルール
http://ex.nicovideo.jp/img/denou/final/pc/Rules_denousen_final.pdf

着手確定について」の項目には、こう書かれています。

ソフト開発者には「投了する」の権利を認める。

ドワンゴはしっかりとした意図を持って、このような権利を開発者に付与することを今回は止めたのではないかと推測するのですが、もし仮にそうだとしたら、運営としてレギュレーション違反だとちゃんと指摘しようよ…

長くなりましたが、まとめます。

  • 開発者の判断による投了は、レギュレーション違反。運営も含めて、なぜみんなそれを指摘しない…
  • 仮にレギュレーション的に問題なくても、あんな所で投げるな!(怒)

以上です。

13路盤にレベル4を追加しました

COSUMIの13路盤に、レベル4の強さ設定を追加しました。

オンライン囲碁ゲーム COSUMI
http://www.cosumi.net/

ただし、今回もサーバの負荷が高い時に対局が開始できず、9路盤レベル5や11路盤レベル4よりもさらに早い段階で、対局開始不可能になりますのでご了承ください。今現在は、一日の内、1/5ぐらいは動かない感じなんですが、今後は正直ちょっとよくわかりません。「打てればラッキー」ぐらいでお願いします。棋力は、囲碁クエだと1700にはちょっと足りないくらいでしょうか? 自分でも何局か打ちましたが、まだ少し調整が必要な気はしています。

今回の13路盤レベル4ははっきり言って重いです… あまりに重いので、一局あたりサーバ代がいくらになるのかを試しに計算してみると、サーバのリソースをきっちり使い切ったとして、0.15円ぐらいでした。最初、「意外と安いな」と思ってしまった自分がいて怖かったのですが、いやいやぜんぜん安くないから!(笑) でも、サーバの負荷が高い時間帯に止めれば、実質タダであります。

今回はRay先生のお世話になろうかと、当初考えていたのですが、とりあえず実績のあるFuegoでいってみます。あと、今回の13路盤レベル4の棋譜がある程度たまったら、後日まとめて公開したいと思います。

Amazon EC2でDarkForestを動かしてみた

Amazon EC2のg2.2xlargeでDarkForestを動かしてみました。G2はGPUなインスタンスファミリーです。基本的にドキュメントどおりで、あまり中身のある内容ではありませんが、以下、簡単に手順を書いていきたいと思います。

まずはともあれ、DarkForestのドキュメントに目を通しておきます(g2.2xlargeはそんなに安くありませんので(笑)、インスタンス立ち上げる前に準備をしっかりしとかないとね!)。

darkforestGo/README.md at master ・ facebookresearch/darkforestGo ・ GitHub
https://github.com/facebookresearch/darkforestGo/blob/master/README.md

EC2は初めて使ったのですが、インスタンスの使用数に制限があって、私の場合は、なんとg2.2xlarge0(!)でした。制限緩和のリクエストは可能ですが、承認されるのに私の場合で半日ほど掛かりましたので、使用の予定がある時は、早めに確認しておくことをお勧めします。

OSは、Ubuntu 16.04で今回はいきたいと思います。Ubuntu初めて触りました。初めてだらけです。こちらのページで、Version16.04 LTSを選び、Instanch Typehvm:ebs-ssdを選びして(他との違いがよく分かりませんが…)、最後にZoneus-west-2(オレゴン)なami-191fd379に決定しました。

インスタンスを起動したら、まず最初にこちらに書かれていることを全部やります。ただし、cuDNNはcudnn-7.5-linux-x64-v5.1-rc.tgzを使用してみました。cuDNNのダウンロードには、NVIDIAのAccelerated Computing Developer Programへの登録が必要です。

Ubuntu 16.04へのCUDAインストール方法 – Qiita
http://qiita.com/yukoba/items/3692f1cb677b2383c983

次にTorchです。こちらを参考にします。

Torch | Getting started with Torch
http://torch.ch/docs/getting-started.html

言われるようにやっていきます。

$ git clone https://github.com/torch/distro.git ~/torch --recursive
$ cd ~/torch
$ bash install-deps
$ ./install.sh
$ source ~/.bashrc
$ luarocks install class
$ luarocks install image
$ luarocks install tds
$ luarocks install cudnn

そして、本題のDarkForest。まずはコンパイル。

$ git clone https://github.com/facebookresearch/darkforestGo.git ~/darkforest --recursive
$ cd ~/darkforest
$ sh ./compile.sh

次に、モデルファイルを用意します。

$ mkdir ~/darkforest/models

作ったmodelsディレクトリにこちらのファイルを(よく分からんから全部)入れておきます。

Dropbox – df_models
https://www.dropbox.com/sh/6nm8g8z163omb9f/AABQxJyV7EIdbHKd9rnPQGnha?dl=0

次に、pipeファイル用のディレクトリをどこか適当な場所に作ります。

$ mkdir ~/df_pipe

ここまでで、準備は完了です。そして、実際にDarkForestを動かすためには、まずGPUサーバを動かします。ここで、先ほどのpipeファイル用のディレクトリを指定してください。

$ cd ~/darkforest/local_evaluator
$ sh cnn_evaluator.sh 1 ~/df_pipe

そして、本体を動かします。再度、先ほどのpipeファイル用のディレクトリを指定してください。

$ cd ~/darkforest/cnnPlayerV2
$ th cnnPlayerMCTSV2.lua --pipe_path ~/df_pipe

これでGTPコマンドを受け付けてくれるようになります。cnnPlayerMCTSV2.luaにはオプションがいろいろあるので確認してみてください。ただ、MCTSではないPure-DCNN playerCNNPlayerV3.luaっていうのもあるのですが、こいつが動いてくれません(本当は、こっちに興味があったのですが…)。df.binは、代わりにdf2.binとかを使えばいいのかもしれませんが、value_model.binっていうのがどこにも見当たりません。残念です。

最後に、gogui-twogtpで取った棋譜を3局載せておきます。3局とも、黒が--time_limit 10で、白が--time_limit 20です(実際の消費時間は、白が黒の約1.37倍)。


Sorry, your browser doesn’t support WGo.js.

Sorry, your browser doesn’t support WGo.js.

Sorry, your browser doesn’t support WGo.js.

はっきりとは棋力が分かりませんが、とりあえず私よりは間違いなく強そう…(笑) とはいえ、私はこの3局以外にも何局か棋譜を確認しましたが、あきらかにおかしな手が結構あります。一種の攻め合いのような時が多いように思えますが、例えば、3局目の291手目(同じく292手目、293手目、ついでに295手目!)とかやばすぎる… 「MCTSは攻め合いが…」とかそんなレベルではないと思うし、というか、これはもうただのアタリアタリですしね。なんか致命的なのが、コードに残っているような気がします。

あと、部分部分でDarkForestがものすごく好む形っていうのがいろいろありますね。いくつかの棋譜を続けて見ていたら、「あれっ、これ今さっき見たやつじゃない?」ってなるぐらい、部分的に同じような形のオンパレードになります。ひとつだけ例をあげると、星に小ゲイマに掛かられた時、ほぼ例外なくケイマか一間に受けて、周りの状況がどうであれ、ハサミ返すことはしません(私がざっと見たかぎり、約20回中0回でした)。モデル、ひいてはそれを作成するのに使った棋譜によるところが大きいのだろうし、これをDarkForestの特徴とは言っていいのかよく分かりませんが、Fuegoなどでは、あまり感じない傾向だと思います。

先ほどの3局は、並列ではなく一局ずつ打たせてて、全部で3時間以上掛かっています。そして、あまりよく分からないですが、GPUはだいたい使い切っているように見えます。もちろん、消費リソースをもっと絞って打たせることはできますが、やっぱりお金が掛かりますね。「DarkForestを、なんらかの形でCOSUMIで使えたら…」と思ったのですが、簡単ではないなあ… また、しばらく考えておきます。

強豪囲碁ソフト「Ray」のソースコードが公開されました

先日の第9回UEC杯コンピュータ囲碁大会でも7位になった、とても強い囲碁ソフト、「Ray」のソースコードが公開されています。

Ray – Computer Go Program
http://computer-go-ray.com/

すばらしすぎる話です。現時点で、オープンソース最強は間違いないところでしょうか?

ということで、とりあえずFuegoとたくさん対局させてみました。まずは19路盤、Ray 5,000playoutとFuego 5,000playoutで先後を換えて50局ずつ計100局やってみました。Windows用のバイナリも公開されていて、ただなぜか動作がすごく遅いらしいのですが、今回はLinuxで動かしてます。

Rayは--playout 5000というオプションと付けただけ。Fuegoはこれだけ。

uct_param_search number_threads 1
uct_param_player ignore_clock 1
uct_param_player max_games 5000

結果は、

Ray 5,000po(443.5sec) 89勝 – 11勝 Fuego 5,000po(211.5sec)

カッコ内は一局あたりの平均消費時間です。この設定だとRayがFuegoの2倍ほど時間を使うので、次にRayのみ2,500playoutにしてさらに試してみます。結果は、

Ray 2,500po(210.9sec) 81勝 – 19勝 Fuego 5,000po(198.9sec)

Ray強い…

次に13路盤で、Fuego 10,000playoutに対してRay 5,000playout、3,000playout、2,000playoutでも試してみました。結果は、

Ray 5,000po(69.0sec) 76勝 – 24勝 Fuego 10,000po(59.5sec)
Ray 3,000po(42.1sec) 56勝 – 44勝 Fuego 10,000po(58.7sec)
Ray 2,000po(27.8sec) 50勝 – 50勝 Fuego 10,000po(57.7sec)

13路盤では、Fuegoの倍ほど速そうです。COSUMIでは、Fuegoを動かすためだけに、だいたい年50万円ぐらい掛かっていると思うので、それが半分になる計算に…(ニヤリ) などという皮算用をついしてしまいますが、実際はまたいろいろ大変かな? さらに強くなったバージョンを、いつか公開していただけたら、かなり真剣に考えると思います。

それにしても、このRayに勝てる方って囲碁ファン全体の何パーセントぐらいなんでしょうか? たぶん、大半の人はもう勝てないと思うのですが、そんなソフトが自由に使える訳で、なんかすごいですね…

井山棋聖の七冠挑戦とCOSUMI

昨日の第54期十段戦第3局は、黒番伊田十段の中押し勝ちとなり、井山棋聖の七冠達成は次局以降へと持ち越しとなりました。私は、「井山七冠」を何とか一度見てみたいと思っている人間なんですが、昨日の結果はまあこれで良かったのかなと思っています。伊田先生の意地を強く感じましたし、なんだか盛り上がりに欠けるなあと思っていた今回の七冠挑戦ですが、一回世間の注目を大きく集めることができたような気がしてます。

ここでは、井山棋聖の七冠挑戦関連の話題にCOSUMIがどんな影響を受けたのか、書いていきたいと思います。

囲碁ブラウザゲーム COSUMI
http://www.cosumi.net/

とりあえず、昨日は言うほどたいしたことはなかったような気がしますが(AlphaGo騒動で感覚が麻痺しているだけかも(笑))、それでも一瞬凄いことに…

PM5:26、たぶんテレビ? 4桁は初めて見ました…

続きの情報は、おいおいここに追記していきます。

[追記 2016/4/24]
ということで、井山七冠が誕生したわけですが、COSUMIへの新たな人の流入はほとんど無いと言っていい状況です。いろんな意味でこれは結構まずいと思いますが、無駄に毒吐いてもしかたないので、もう別に何も言いません。一週間後ぐらいに、年始からのアクセスの推移を追記して、AlphaGoの時との比較なんかが分かるようにしたいと考えてますので、興味のある方はぜひご覧ください。

[追記 2016/5/2]
年始から4月末までのCOSUMIへの1日単位のアクセスの推移です。

次に、COSUMI開始時から4月末まで。

最後は、「AlphaGo vs セドル」の時と「井山七冠誕生」の時とでの、COSUMIへのアクセスの質的な違いが一番よく分かる気がしているグラフを載せておきたいと思います。3月1日から4月末までの、1時間単位の新規セッション率の推移です。

このグラフについて少しだけ補足しておくと、右側「井山七冠誕生」の方の一番大きな3つのスパイクは、左から順に、「新・情報7daysニュースキャスター」(ダイヤモンド囲碁サロンとかが出てた?)、「アッコにおまかせ」(碁的の話などをしてた?)、「プロフェッショナル 仕事の流儀」(約2年前の再放送。今日もまた放送してました)で間違いないと思います。一番最初の「新・情報7daysニュースキャスター」ですら、井山七冠誕生の瞬間から丸3日以上経っての話というのも、なんだか凄いです。これ以上のことは、もうノーコメントで…(笑)

[追記 2016/5/6]
PM10:42、報道ステーションです(報道ステーション多いなあ)。

これもまた、二度とはお目にかかれなさそうな数字です。この「現在★人のアクティブユーザーがサイトを訪問しています」ってやつは、その時たまたまGoogle Analyticsの管理画面を見ていないかぎり確認できないんですが、実は、自分の知らない時にもっとすごい数字になっていることがあるんでしょうか? ちなみにこういう数字になる時は、大半が囲碁のルール解説のページ(http://www.cosumi.net/learn.html)へのアクセスで、さらにいつもはけっして多くはない、スマホからのアクセスだらけになります。

サーバの負荷が高い時に9路盤レベル5と11路盤レベル4の対局が開始できなくなりました

COSUMIのサーバの負荷が高い時に、9路盤レベル5と11路盤レベル4の対局が開始できなくなりました。

囲碁ブラウザゲーム COSUMI
http://www.cosumi.net/

現時点では、これは予防的処置なので、実際に対局が開始できない時間帯はほとんどないはずです(井山七冠が誕生したら知りませんが…)。ただ、もし今後、対局ができない状態がある程度常態化しても、それがもうよっぽどではないかぎり、サーバの増強は控えさせていただきます。実は、この一年間にお支払いしたサーバ代が160万を超えていて、いくらなんでもさすがにやりすぎだったので、ちょっと自重します。私はここ何年もの間、「朝起きたら、GNU GoとFuegoが二子ずつ強くなっていないかな」と思いながら床に就く日々を送らせていただいております(笑)。

というマイナス方向の改変のお知らせでしたが、今回のような対策をすれば、今度は逆に今後13路盤レベル4が追加できるかもしれません。せっかく高いお金を出して買ったリソースなので、できるだけ全部使い切りたいですしね。状況見ながら考えておきます。

という訳で、井山七冠対策はこれにて終了。何とか間に合いました(結構早い段階からいろいろがんばっていたおかげで、AlphaGo騒動も乗り切ることができました。何もしていない時にあんなの始まったら、どうにもなんない(笑))。「ここまでやってだめならもう知らない」って感じなんですが、しかし、今のところなんだか盛り上がりに欠けますねえ。AlphaGoのインパクトが強すぎたせいもあるんでしょうか?

セドル vs AlphaGo

本当に楽しみです。関連する内容はここに書いていきたいと思います。

対戦条件を確認しておくと、

  • 全部で5番勝負
  • 日程は3月9日、10日、12日、13日、15日。開始は午後1時
  • 対局ルールは中国ルール、コミは7目半
  • 持ち時間は2時間+1分*3回

マイケル・レドモンド九段の解説(お相手は、Chris Garlockという方)が、YouTubeで生放送されます。あと38時間

Match 1 – Google DeepMind Challenge Match: Lee Sedol vs AlphaGo – YouTube
https://www.youtube.com/watch?v=vFr3K2DORc8

ただし、英語の解説なので、今回初めて囲碁に興味を持った方も対象にした感じになるのかな、という気がします。日本語の解説は囲碁プレミアムで無料で見れるようです。

[追記 2016/3/9]
ということで、第1戦は白番AlphaGoの中押し勝ちとなり、歴史的な日となりました。以前、「羽生よりセドルが先にコンピュータに負けるよ」と言っていた人がいて、深い読みだなあと妙に感心したことがあったのですが、単に深いだけはなく、正確でもありましたね。私の「Xデーは2018年」という予想は、残念ながら外れてしまいましたが、まあでも結構いい線いっていたほうでしょうか?


Sorry, your browser doesn’t support WGo.js.

私は今日、天頂の囲碁3に手を入力しながら観戦していたのですが、かなり最初の方から形勢はAlphaGoがいいと言い続けていて、コンピュータ同士気が合うのか面白いなと思いました。最後の方の石田先生が首をひねっていた手などは、例のモンテカルロ特有の緩みだと思われますので、そういう意味ではまだもっとやれるのでしょう。とはいえ、今日の一局でセドル先生もAlphaGoに対して変な恐怖心は無くなったのではないかと思うので、AlphaGoの5-0は相当難しいように感じます。あまりあの人をなめないほうがいいです(笑)。

あと一点だけ気になったのは、対局者の手前に置かれたパネルに国旗が表示されていたり、YouTubeの放送の対局前の映像がこんなだったりと、イギリスvs韓国というのを強調していたことです。

これは、Googleが極度にコンピュータvs人間という構図になるのを避けたかったからなのか、(別の参加者の?)別の思惑があったのか、ちょっと興味深いところです。とりあえず、あきらかな意図は感じました。

COSUMIへのアクセスも一日中物凄いですが、とりあえず今のところは耐えています。さっき、COSUMIが「新参者を返り討ちにしてやる」と生意気なことを言っていたので、みんなでぼこぼこにしてあげてください(笑)。

[追記 2016/3/9 23:45]
22:45。また報道ステーションみたいです。

ただ、この時間帯が今日一日の中で特別多かったってことはなくて、対局開始からこの時間まで、平均して500はありました。Google Analytics使ってない人には伝わりにくいかもしれませんが、これかなりすごいです。

[追記 2016/3/10]
第2戦も黒番AlphaGoの中押し勝ち。個人的には昨日より今日の方が衝撃的でした。AlphaGoは間違いなく本物ですね…

私は今日も、天頂の囲碁3に手を入力しながら観戦していたのですが、やはり結構最初の方からAlphaGo持ちだと言い続けていました。強いのか、AlphaGoと気が合うだけなのか、いまいち判断ができません。

今回、セドル先生の前に座ってAlphaGoの手を打っているのが、Aja Huangさんですね。対Fan Hui戦の時も、映像をよく見るとAjaさんが担当されているようです。この方、碁がめちゃくちゃ強いんですよね。手つきが怪しいのは、こういう場合セドル先生的にちょっといやだと思うので、適任者なんでしょう。Ajaさんが昔作っておられたEricaというソフトがコンピュータオリンピックで優勝し、エキシビションマッチで藤沢里菜三段と対局することになった時、「尊敬する秀行先生のお孫さんと対局できてとてもうれしい」いう旨のコメントをされていた記憶があるのですが、セドル先生と碁盤を挟んで座り、こんな大きな対局を行うっていうのは、一体どんな気持ちなんでしょうか?

[追記 2016/3/12]
今日もAlphaGoの勝ち。もう怖いです… この感じだと、Zenはレートで500どころか1000でも足らないんじゃないでしょうか?

[追記 2016/3/13]
今日はイ・セドル九段の勝ち。セドル先生が0-5はちょっとなあと思っていたので良かったです。ただ、AlphaGoが暴発するのがなんか早過ぎないですかね? それだけちゃんと先が見通せているだけなのかもしれませんが、ボロ勝ちさせようと、「今日はコミが20目だからね」と言われていたりはないですよね?(笑)

[追記 2016/3/18]
第5局はAlphaGoの勝ち。通算成績はAlphaGoの4勝1敗でした。もうすでに今後のAlphaGoの動向が気になってしかたありません。

今回のAlphaGo騒動で、COSUMIへのアクセスもすごいことになりました。とりあえず、今年に入ってからのアクセスの推移です。中央やや左が最初にAlphaGoの話が出てきた時で、右端が対セドル戦です。

次に英語ページ限定で。

どんなグラフが今回のすごさを一番理解してもらいやすいのかよく分からないんですが、例えばこんなのはどうでしょう? COSUMIスタート時からの約8年間のアクセスの推移です。一番右端がおかしなことに…

3月14日月曜日(ちなみにこの日は、第4局と第5局の間の日で対局は行われていません)の238,901pvという数字は、今後、記録更新することができないと思われます(とか言っていたら、井山七冠がぶち抜いたりして…(笑))。この後の推移もまだ気になりますし、このあたりの数字はCOSUMIがどうとか抜きに、もうほとんど歴史的資料なので、またこのブログで後日談が書けたらと思います。

COSUMIのサーバは、今日も元気よくロードアベレージが200を超えたりしてますが(笑)、基本的にずっと問題なく動いてました。良かったです。ただ今後は、9路盤のレベル5などをサーバに負荷が掛かっている時間帯に対局が開始できないようにするなど、なにかしらの対策が必要ですね。最初からやっとけよって感じで、今までちょっとずぼら過ぎたような気がします。

COSUMIに最大何目差で勝つことができるか? その2

[以前の関連記事] : COSUMIに最大何目差で勝つことができるか?

以前、「COSUMIに最大何目差で勝つことができるか?」という記事を書いたのですが、その時は15路盤までだったので、再度、19路盤でも調べてみました。

囲碁ブラウザゲーム COSUMI
http://www.cosumi.net/

調べたのは、直近約3ヶ月の対局のみ。まずは互先から調べてみましたが、COSUMIの石を全滅させた対局が何局かありました。その中で一番大差で勝っている対局は、夢の400目(?!)オーバーを達成されています。


Sorry, your browser doesn’t support WGo.js.

GNU Goが謎です…(地の計算も1目ずれてる(笑))

続いて、COSUMIに9子置かせた対局です。これは全滅させた対局は無いようです。それではベスト3を順に紹介していきます。まずは第3位、284目勝ち。


Sorry, your browser doesn’t support WGo.js.

最初に7回パスしているので、実質16子局(!)になっています。凄過ぎです。

次に第2位、290目勝ち。


Sorry, your browser doesn’t support WGo.js.

そして第1位、315目勝ち。


Sorry, your browser doesn’t support WGo.js.

うーん、GNU Goはもうちょっとがんばったほうがいいね(笑)。

衝撃のAlphaGo

「今年のUEC杯はすごいよ。保木さん、山本さん、西海枝さんのコンピュータ将棋開発者組に加えて、あのFacebookもいるよ!」って感じのブログ記事書こうかと思っていたら、とんでもないニュースが飛び込んできました。

Google Japan Blog: AlphaGo: マシンラーニングで囲碁を
http://googlejapan.blogspot.jp/2016/01/alphago.html

AlphaGo | Google DeepMind
http://www.deepmind.com/alpha-go.html

いろんな情報が一気に出てきて、把握できていないことも多いのですが、すごく簡単に書くと、

  • Googleが開発した囲碁ソフト「AlphaGo」が、ヨーロッパチャンプに互先で5戦5勝
  • 他の強豪ソフトに対しても、495戦494勝!
  • 今年3月に、イ・セドル九段と対決。賞金100万ドル。たぶんYouTubeで生で見れそう

今回、AlphaGoと対戦したFan Hui二段は、Remiさんのレーティングによると、阿部良希初段髙嶋湧吾初段後藤俊午九段万波奈穂三段あたりと同格で、イ・セドル九段とのレートの差は599。現時点では、まだAlphaGoはトッププロの域に達していないのではないかと私は思っているのですが、大橋先生曰く、「3月はあぶないそうです。なんだか、たった一日で世界が変わってしまいましたね…

COSUMIも今日は本当に大盛況で、アクセス数の最高記録を大幅に更新することは間違いありません。特に海外からのアクセスがすさまじく、中でもアメリカ、イギリス、カナダ、オーストラリアなどの英語圏が相対的に多いですね。一次ソースが英語だと、こんな感じになるんですかね? 英語圏の人に刺さりやすい話題だってことは、特にないですよね?

あと、ここ最近COSUMIのレスポンスが悪い時間帯が多くて申し訳ありません(たぶん今日はひどかったですね…)。理由は分かっていて、サーバのリソースが足りていない訳ではなく、ウェブサーバの設定が悪いだけなのですが、このとおり24時間ものすごいアクセスなので、直すタイミングが無くなってしまいました… 適当な時を見計らって直しますので、もうしばらく我慢していただけたらと思います。

最後にAlphaGo vs Fan Huiの全5局の棋譜を置いておきます。


Sorry, your browser doesn’t support WGo.js.

Sorry, your browser doesn’t support WGo.js.

Sorry, your browser doesn’t support WGo.js.

Sorry, your browser doesn’t support WGo.js.

Sorry, your browser doesn’t support WGo.js.

[追記 2016/1/28]
なにこれ…(絶句) 22:55ぐらいです。報道ステーションらしい。ルール解説のページだけで457。しばらくこんなのが続くのか…

[追記 2016/1/30]
書き忘れたこととか、後で知ったことなど書いていきます。

このペーパーがとても面白いので、がんばって読んでみるんですが、対Fan Hui戦は、公式には5勝0敗ですが、それ以外に非公式な対局が5局行われていて、結果はAlphaGoの3勝2敗だそうです。この非公式な対局は、3 periods of 30 seconds byoyomi のみの時間の短かい碁だったみたいですね。このあたりをどう見るのか… そして、Ericaの作者、Aja Huangさんのお名前を発見! DeepMindでお仕事されているんですね。あんなに強いソフトを作っておられたのに、もうやめちゃったのかと勝手に思っていました。私が知らなかっただけのことですが、なんだかちょっとうれしかったです。

対イ・セドル戦は3月8日~15日に行われ、先に3局勝った方が勝ちの5番勝負と言うことですが、途中の結果にかかわらず5局全部打つらしいです。セドル先生の対コンピュータ戦が5局も見れるなんて本当に夢のようですね。結果の予想については、当初、私はセドル乗りだったのですが、いろいろ考えているうちになんだかイーブンな気がしてきました。とりあえず5局も打ったら相当な確率で1発入りそうな気がします。そしてもし本当にそうなれば、まさに歴史に残る大偉業と言えるでしょう。しかし、3月8日~15日ってUEC杯の前に差し込んでくるんですね(笑)。なんか「UEC杯が霞んだ」みたいなこと言う人が多いですが、実際は、UEC杯と電聖戦はそれはそれでかなり面白いと思います。

ここからしばらく、囲碁関係の大きな話題が続きそうなので、私はCOSUMIが安定して動きつつけるようにだけはがんばってみます。ひとまずウェブサーバは新しい設定で再起動したので、今はサクサクかな?

[追記 2016/2/7]
対セドル戦の日程は、3月9日、10日、12日、13日、15日と決まりました。もう、ほんの一ヶ月後のことですね。もしタイムマシンがあったら、一ヶ月前に戻って「二ヵ月後、100万ドルを賭けた、コンピュータとセドルの5番勝負があって、戦前の予想はけっこう拮抗してるよ」って言って回りたいですね(笑)。まあ、誰も信じてはくれないでしょう。私が思うに、このタイミングでのAlphaGoの出現って、いわゆるブラックスワンじゃないかと。2016年(違った。2015年だった)にAlphaGoが存在していることを、「予測可能だった自然なもの」として受け止め始めている世間(もしかしたら私も)の現状に、なんというか軽い狂気を感じます。

もう一方のZenはというと、4子で伊田先生に勝ったようです。

[追記 2016/2/7]
今年に入ってからの、COSUMIのアクセスの推移です。まずは全体。

そして、英語ページ限定。

どーんと来た後、元の水準まで完全に戻りきらなかったことは、今までちょっと記憶にありません。AlphaGoは囲碁普及に大いに役立ったのではないでしょうか?

COSUMIに纏わる数字の話

COSUMIを始めて7年ちょっと経ちました。今では、当初は想像もしなかったようなたくさんのアクセスがあって、本当に驚くばかりです。Googleで「囲碁」という単語で検索しても、当然環境には左右されるのですが、一番上に表示されることが多くなり、そうなってくると、もはやCOSUMIの様々な統計情報も、自分で眺めてニヤニヤするだけではなく(笑)、囲碁普及に努めておられる方々と、ある程度共有していかないといけないような気がしますので、今日はCOSUMIに纏わるもろもろの数字を、まとめて公開していきたいと思います。

オンライン囲碁ゲーム COSUMI
http://www.cosumi.net/

今回の記事はかなり長めになりますが、いきなりハイライトです(笑)。Google Analyticsでの平均セッション時間、直帰率、新規セッション率がとにかくすごいです。

平均セッション時間 12分9秒
直帰率 37.17%
新規セッション率 14.77%

(データは直近一ヶ月)

これから分かることは、「COSUMIはアブノーマル。でもたぶん嫌われてはいない」(笑)。アクセスがそれなりにあって、こんな数字になるサイト、実際のところ他にどれだけあるのでしょうか?

次は、COSUMIが打っている手数(ユーザが打っている手数は含まず)です。これも現在なかなかどえらいことになっていて、例えば、6/28~7/4の7日間では計26,386,121手でした(実際はもうほんの少しだけ(1%以下)多いですが、正確にカウントできるのだけに限定しました。以下、COSUMIが打った手数についてはすべて同じ)。平均して3,769,446手/日、157,060手/時間、2,618手/分、43.6手/秒になります。同じ期間中の、1分単位で見た一番のピークは7/4(土)の17:46台で、4,854手/分、80.9手/秒。COSUMIが手を打った後、同じ対局の次の手を打つまでの間隔(要するに黒白1手ずつ計2手対局が進む時間)は平均10秒ぐらいなので、このピーク時は800面打ち(!)ぐらいになっている計算に…(いや、何て言うか、囲碁が不人気だとかオワコンだとか、絶対嘘でしょ?(笑)) あと、COSUMIの2台のサーバもちょっとすごい。1台で400人相手できるとか、なんかもうかっこいい。現在メインで使用しているサーバはレンタル開始から2年半ぐらいになりますが、歴史上、囲碁の手を一番たくさん考えたコンピュータじゃないかと、本気で思っています(笑)。

続けてCOSUMIが打っている手数を時間帯別に見ていきます。次のグラフは7/1(水)の0時~24時の24時間を1分単位で見たものです。

典型的な平日の推移となっていて、昼・夕方・夜の3つの山が確認できると思います。その中でも、特に注目していただきたいのは、昼の山(ピークは12:41台)で、このいかにも「隙間時間に何とか碁を打ちたい」って感じは、これからの囲碁普及の結構重要なポイントではないでしょうか? 時間さえ許せば、みんなきっと碁を打ちたいんだと思います。

さらに今度は碁盤サイズ・レベル・置石の数などの対局条件別にCOSUMIが打っている手数を見ていきます。次のグラフは、6/28~7/4の7日間のデータです。Lはレベル、Hは置石の数、Hの後の-(マイナス)はCOSUMIが石を置いていることを意味します。ちょっと見にくいかもしれませんが、グラフをクリックしていただくと、たぶん大きく表示されます。

ひとつだけ、なんだかおかしな数字になっている項目があるので、スケールを変更したグラフも用意しました。

実は今回いろいろ調べていて、一番驚いたのがこの数字です。見ていただいて分かるとおり、19路盤の互先がなんかもうよく分からないぐらい多いです。19路盤が多いと言うのは、ある程度分かっていましたが(それも正直想像以上ですが…)、それはともかくとして、互先と置き碁にこんな差があるというのは、今の今まで全く知りませんでした… 15路盤にも全く同じ傾向が見られるのですが、これはCOSUMI固有の現象なのでしょうか? それとも、みんな置き碁が好きではないのでしょうか? 9路盤~13路盤では、レベルが一番低いのと一番高いのが人気なのが見てとれると思いますが(個人的には、これは理解できます)、それと比較すると、ちょっと異様な感じがします。あと、9路盤・13路盤・19路盤という昔からよく打たれていた碁盤サイズの手堅い人気も見てとれます。11路盤・15路盤は、打てる環境が無いから打たないのではなく、打つことができても打たないのですね。とは言え、その大本の原因は、「元々打てる環境が無かったから」でしょうから、これから時代が進むにつれ、このあたりも少しずつ変わっていくのでしょうか? ちなみに、大きな碁盤サイズの方が、一手に掛かる時間が短い傾向がありますが、程度としてはあまり大きなものではないので、「COSUMIが打った手数」を「ユーザが対局している時間」に置き換えて上のグラフを見ていただいても、特に問題はありません。

今回調べていて、もうひとつ初めて気がついたことがあります。それは、囲碁のルール解説のページ(http://www.cosumi.net/learn.html)へのアクセスが、日曜日だけ少し多いということです。ある程度落ち着ける休日に、新しい趣味を始めたいのかもしれませんし、それならそれで感覚的にも分からなくはないですが、しかし、土曜日は特にアクセスが多かったりはしませんね。日曜日ですか… これは怪しいですね(笑)。ということで、6/28(日)~7/4(土)の7日間を1時間単位で見たグラフを用意しました。比較対象としてFlash版の囲碁対局ページ(http://www.cosumi.net/play.html)へのアクセス数に[learn.htmlへの7日間の総アクセス数/play.htmlへの7日間の総アクセス数]を掛けたものも表示しています。

日曜日のお昼がおかしいですね。ピークは13時台、その次は多いのが12時台。もうお分かりだと思いますが、NHKの囲碁の時間ですね。先ほど、初めて気がついたと書きましたが、今まで、NHKの囲碁の時間の影響を気にしたことが無かった訳ではありません。むしろとても興味のあるところなので、今まで何度か調べてみたことはありましたし、その上で特に大きな影響は無いんだなと判断していました。実際、囲碁対局ページへの影響は特にあるように見えませんし、これは囲碁のルール解説のページだけに顕著なようです。あの放送を見て、囲碁に興味を持つような人が毎週毎週これだけいるのならば、この人たちを丁寧に掬い上げてあげられたら、それだけで囲碁人口は結構増えていきそうなものですが… 個人的に面白いなと思うのは、テレビを見て囲碁に興味を持った人って、ほとんどリアルタイムでウェブ検索するんですよね。今の人って、「後で、誰かに聞こう」とか、「今度、本を買ってこよう」とかではなく、「今、ぐぐってみよう」になるわけで、ウェブ上に、しっかりとした入門者向けのコンテンツがあるというのは、当たり前のこととはいえ、ものすごく大切なことだと思うのですが、しかし実際は、今ある囲碁関連のウェブコンテンツって、ものすごくしょぼく感じます。いや、本当に「お前が言うな」ですけど(笑)、もうちょっと何とかならないでしょうか?

次は、モバイル関連の話です。Google Analyticsでの全セッションに対する「デバイス カテゴリ」ごとの割合はこんな感じ。

desktop 78.26%
mobile 15.66%
tablet 6.08%

(データは直近一ヶ月)

そうなんです、モバイル端末からのアクセスがちょっと少ないです… たぶん、「囲碁のゲームがやりたい」ってなったら、ウェブなんか調べず、アプリを探すんでしょうね。囲碁のゲームぐらいネイティブアプリじゃなくてもと、私なんかはつい思ってしまうのですが、うーん、これはどうしたものか…

次は、国別の利用状況です。Google Analyticsでの全セッションに対するアクセス元の国ごとの割合はこんな感じ。

日本 81.90%
中国 7.37%
アメリカ 4.20%
韓国 2.06%
カナダ 0.66%
台湾 0.37%
オーストラリア 0.30%
イギリス 0.28%
香港 0.19%
ドイツ 0.18%

(データは直近一ヶ月)

意外に思われるかもしれませんが、海外からのアクセスも決して少なくありません。中国からは結構以前からアクセスが多かったのですが、ここ最近は他の海外の国からのアクセスが増えました。とは言え、海外からのアクセスは伸び悩んでる感じもあって、ちょっと寂しいです。伸び代はまだまだあるはずですが…

ということで、たくさん調べて、たくさん文章書きました。うーん、疲れた…

[追記 2015/7/12]
iPadだけとiPhoneだけに限定した、対局条件別のCOSUMIが打っている手数のグラフも作ってみました。期間は6/28~7/4の7日間。まずはiPad。

そしてiPhone。

タブレットなら碁盤サイズを好きに選べるけれども、スマホではさすがに19路盤は厳しいということでしょうか? スマホを触っているときはあまり時間が無いってこともあると思います。

悪手の指摘が少し正確になりました

COSUMIの5路盤~9路盤(レベル0)の対局リプレイでは、ユーザの打った悪手を指摘する時がありますが、これが少しだけ正確になりました。

オンライン囲碁ゲーム COSUMI
http://www.cosumi.net/

今までは、Fuegoに初手から調べさせて、ユーザから見たwin rateが下がったところを悪手としていました。ただ、これだと勝っている局面で、不必要な手入れをした方がいいと言うことがたびたび起こり、ちょっとみっともないことになっていました。そこで、今度からはさらにGNU Goの意見も聴くようにし、GNU Goが「確かにFuegoの指摘する手の方が得だ」と判断しないかぎり、COSUMIとしてはその手を悪手とは指摘しないようにしました(実際は、今までも今現在も、そこまで単純ではありませんが…)。

例えば、次の棋譜は実際にCOSUMIで打たれたものですが、最後に2回、自陣に手を入れろと指摘が入っています。Fuego的にはそうした方がだいぶwin rateが高くなるようですが、正しくはこれらの手は不必要な手入れであり、かなり問題のある指摘になっています。逆に、GNU Goはこういうところであまり不正確にならないので、Fuegoの主張をいい感じに却下してくれます。という訳で、今現在は、同じ棋譜の対局が行われても、悪手の指摘はしなくなっています。

[9路盤 レベル0] 黒(You)12目勝ち – オンライン囲碁ゲーム COSUMI

今回は同時に、Fuegoが悪手と判断する基準も緩くしたので、COSUMIが悪手とする回数自体はあまり変わっていないと思います。

ということで、今回の変更でなかなか良くなったのではと思っているのですが、サーバの負荷がしゃれになっていないので、これから何とかチューニングしてみます。なんだったら最後はお金の力で…(笑)

チャレンジモード

COSUMIに、勝敗に応じて段級位が昇降格する「チャレンジモード」というのを作ってみました。

チャレンジモード
http://www.cosumi.net/mobile/challenge.html

COSUMIでは初めて、持ち時間のある対局ゲームとなっていて、方式は個人的に大好きなフィッシャーです。囲碁ではこれに限ると思っています。対局条件やコンピュータの強さは、もしかしたら比較的早い時期に微調整するかもしれません。もうあまりFlashはやりたくないので、今回はHTML5版のみです。

間接的にでも、他の人と競えたら面白いかなという発想で作ってみました。ぜひ、家族や友達といっしょに挑戦してみてください。

[追記 2014/11/2]
現時点では、六段になった人がまだいないみたいです。実際、そこまで難しくはないと思うのですが、必要があれば対局条件などを微調整したいと思います。

[追記 2014/11/9]
とりあえず六段になられた方はいるみたいなので、上の方はもういいかなと思うのですが、十五級の人の作り碁になった対局の勝率が62%程度しかなく、こっちはちょっとまずそうです… ということで、十五級はコミ15目ではなく20目でスタートとし、そこから十級まで、級位がひとつ上がるごとに2目ずつ減っていくということにします(そこから上は今までどおり)。対局条件などを変更することは、おそらくもうありません。

変更前までの、それぞれの段級位の人が打った、作り碁になった対局の数のグラフを載せておきます(作り碁だけに限定しているのは、それがすぐに調べやすかったからです。それ以外の理由はありません)。

どんなに強い人でも最初は十五級ですから、左側のボリュームが大きくなるのは当然です。またさらに、強い人ほど負けている碁を作らないで投げる割合が多そうですので、だとすればこれも右側のボリュームが減る原因になります。というようなことを考慮しつつ見ていただくとして、やはり気になるのは、二級をピークとした小さな山ですね。まあ、ここが平均的な囲碁プレーヤーなのでしょう。ざっくり言って、COSUMIのチャレンジモード二級は、KGSで同じく2kぐらいでしょうか?

[追記 2015/3/26]
ちょっと気になったので、もう一度、最初から現在まで全期間のデータでグラフを作ってみました。

やはり、ピークは二級ぐらいのようです。

置かせ碁

COSUMIの15路盤と19路盤で、相手に石を置かせた対局ができるようになりました。

オンライン囲碁ゲーム COSUMI
http://www.cosumi.net/

COSUMIがもっと強くなるのが本当は一番いいのですが、15路盤と19路盤ではもうそれはちょっと無理だと思うので、こういう形でお茶を濁しておきます。

祝1000万敗!!

COSUMIが1000万敗を達成しました!

オンライン囲碁ゲーム COSUMI
http://www.cosumi.net/

もう何を見ても驚かなくなりました。とりあえず続けてさえいれば、1億敗だってありうるんじゃないかという気にすらなっています…(笑)

今日のGoogleトップページのロゴは本因坊秀策です

今日のGoogle(google.co.jp)のトップページのロゴは本因坊秀策です。

https://www.google.co.jp/

最初見た時、碁石の意味するところがすぐに分からなかったのですが、普通に「Google」でした(笑)。どうしても、「Go」の部分が瞬時に「碁」に変換されてしまって… しかし、そうなると秀策と碁盤を、「Google」の4文字目のgに見立てていることになりますが、いつも感じますがちょっと無理筋ですねえ… 碁盤の上で、初手の小目から最後は「秀策のコスミ」までがアニメーションで打たれるのですが、「秀策のコスミ」は7手目で、それがアルファベットで7番目の文字、gを表しているということかもしれません。

さらに、本当に毎度のことですが(笑)、すばやくCOSUMIのアクセス解析もチェックしてみると、英語ページへのアクセスが見たことない数字になっています(それ以外も多め)。てっきり日本だけでの表示だと思い込んでいたので少しびっくりしたのですが、こちらのページに今回のDoodleの詳細が載っていて、表示地域は日本、台湾、インドネシア、ラトビア、ウクライナ、ギリシャ、ドイツ、アイルランド、ポルトガル、コロンビアとなっています(たしかにこれらの国々からのアクセスが多い)。もう少し多くの地域で表示してもらえたら、囲碁の普及に大変役立ったのではないかと思うと同時に、どのような理由で、これらの国々だけに限定されているのかという疑問も少し湧いてきます。

[追記 2014/6/10]
6月1日から6月9日までの、COSUMI全体のアクセスの推移です。

そしてこちらが、英語ページのアクセスの推移です。

11路盤にレベル4を追加しました

COSUMIの11路盤に、レベル4の強さ設定を追加しました。

オンライン囲碁ゲーム COSUMI
http://www.cosumi.net/

9路盤はレベル5、11路盤はレベル4、13路盤はレベル3までという現状は、かなり限界に近いです。少なくとも当面の間は、これ以上はありません。

FAQページを用意しました

このブログのコメントや、その他ネット上でよく見られるCOSUMIに関する質問に対する回答ページを用意してみました。

よくある質問 – オンライン囲碁ゲーム COSUMI
http://www.cosumi.net/faq.html

このブログにご質問いただける場合は、事前に一度、こちらに目を通していただけるとありがたいです。

COSUMIで打たれた9路盤の棋譜を公開します

COSUMIの9路盤レベル5の対局の内、ユーザが勝った棋譜を、黒番白番それぞれ5000局ずつ、計10000局分公開します。

オンライン囲碁ゲーム COSUMI
http://www.cosumi.net/

人間が打った9路盤の棋譜を大量に入手するのは、意外と難しいように感じたので、なにかの役に立つかと思い公開することにしました。大量の棋譜をひとつのSGFファイルにまとめたら面白いかなとか、Fuego使って名局を探してみようかなとか、以前ちょっとだけ考えたことがあるんですが、なかなか腰が重くて未だできてませんので、もし誰かがやってくださるとうれしいです。もちろん、マンパワーで「COSUMI名局100選」を選出していただいても(笑)良いと思います。

今回公開する棋譜は直近の対局分なのですが、具体的にはだいたいここ20日間ぐらいの間に打たれたものになります。

http://www.perfectsky.net/misc/cosumi_9x9level5.zip

少し話は変わりますが、以前にも書いたとおり、白番よりは黒番持った方がほんの少し勝ちやすい傾向が今もあるようです。

[追記 2014/1/13]
公開した棋譜を少し眺めていたんですが、かなり頻繁にGNU Go先生が終盤でファンタしてますね(笑)。まあこれは、以前から分かってたことではあるんですが、でもこんなに多かったかなあ? ということで、少し調べてみることにしました。

COSUMIの9路盤レベル5では、まず独自のオープニングブックを使い、それが切れると38手目までFuegoが打って、その後GNU Goが終局まで打ちます(とは言っても、実際はいろいろ例外があります)。それを踏まえて次のグラフを見てください。

今回公開した棋譜の内、ユーザが黒番だった対局の、総手数が50手以上の対局(4202局)の30、34、38、42、46手目終了時点の形勢を、Fuegoを使って調べてみました。win rateが100%に近いほど黒番の人間ユーザが優勢ということになります。

まず驚くのは、34手目終了時まではやや左に偏っていることです。9路盤で34手目といえばだいぶ後の方ですが、ここから最終的には右端に張り付くんだと考えると、これはかなり特異な印象を受けます。そして、その前と比較して、38手目終了時以降は急に差が大きくなっているような気がしますので、これはやはり、GNU Go先生はファンタジスタと言わざるを得ませんね(笑)。個人的には46手目終了時のグラフを見ただけでも、ちょっと悲しくなります。30%以下からなんて、普通はそこからひっくり返らないんですが…

Fuegoにヨセを打たすとかなり不自然になるのでGNU Goを使っている訳ですが、GNU Goの手を一度FuegoでチェックしてだめそうならFuegoが打つとかは、した方がいいかもしれません。一番いいのは、GNU Goが後ほんの少しでいいので、強くなってくれることなんですが…

[追記 2014/1/14]
昨日のグラフに、10手目と20手目終了時点の形勢も調べて追加してみました。

さらに9路盤のレベル1も調べてみました。レベル5と同じくユーザが黒番で勝った直近の対局5000局の中から調べたのですが、総手数がレベル5の時より大幅に短いものが多いので(碁盤を真っ二つに分けたような分かりやすい対局が多いんです)、総手数は50手以上ではなく40手以上の対局(それでもたったの2217局しかありません)としました。ちなみに、レベル1ではまず独自のオープニングブックを使い、それが切れるとそこから終局までGNU Goが打ちます。要するに、レベル5のFuegoが打っているところをGNU Goが打つのと同じことになります。

うーん、これが普通だと思います。レベル5の方はちょっと問題がありますね…

ただの碁盤

単純に石を順番に碁盤の上に並べていくことができるだけの、「ただの碁盤」を作ってみました。

ただの碁盤 – オンライン囲碁ゲーム COSUMI
http://www.cosumi.net/mobile/goban.html

COSUMIに再利用できそうなコードがたくさんあったから作ってみました。というか、COSUMIで使っていたコードを削り倒しただけです。友達が「囲碁のルールを教えて」って言ってきたけど、手元には囲碁アプリなんか入っていないタブレット端末しかないって時にでも使ってみてください。

Flash版は無し。HTML5版のみです。使える時がかなり限定される、機能の少なさですが、これ以上作り込む気はありません。

9路盤に対局条件が定先のレベル0を追加しました

COSUMIの9路盤に、対局条件が定先のレベル0を追加しました。

オンライン囲碁ゲーム COSUMI
http://www.cosumi.net/

「9路盤はレベル1でもそこそこ強いです。ルールを覚えたばかりの方は、5路盤から順にやってください」っていうのが、COSUMIのスタンスなんですが、「初心者は9路盤から」(多くの場合、その意味は「初心者は小路盤から」のような気もしますが…)と他の人に言われているからか、ルールがあやふやな状態でも9路盤から始める人が多いように感じたので、それに対する簡易な対策です。

この9路盤のレベル0では、8路盤以下と同様に悪手の指摘をするようにしましたが、はっきり言って精度が悪いです(この辺りのこともあるので、初心者の方には8路盤以下をしていただきたかった/していただきたい)。そしてサーバ的にもめちゃくちゃ重いです。精度に関しては、今後の課題とさせてください。今はwin rateの推移を見てるだけって感じなんですが、何目ぐらい損したかって観点も絡めないと、どうも不自然になってしまいますね。

COSUMI 5周年

COSUMIをスタートさせてから、今日で5年になります。

オンライン囲碁ゲーム COSUMI
http://www.cosumi.net/

この5年間の、1日あたりのCOSUMIが負けた数の推移はこんな感じ。

中央付近で0になっているのは震災の時に一時止めてたからで、最後のほうでぐっと伸びているのは19路盤をメインの対局ゲームに統合したからです(メインの対局ゲームの負けた数しか数えていません)。この数が増えていくのが、私にとって一番うれしいことです。なので、これからもみなさんどんどん負かしてください(笑)。トータルでは今現在4,620,131敗です。ものすごい数ですね…

当然のことながら、COSUMIが打っている手の数もものすごいことになっていて、1日あたり約1,900,000手ぐらい。平均して、79,167手/時間、1,319手/分、22手/秒(!)ぐらいになりますね。以前から漠然と思っていたのですが、今までGNU Goが生成した手(これを正確に定義するのはちょっと難しいんですが…)のほとんどは、「COSUMI上で」ではないかなと思っています。もしそうだとすれば、COSUMIは「GNU Goというすばらしいソフトを世に広めるのだ」と作り始めたサイトですので、こんなにうれしいことはありません。

COSUMIを最初に作っていたのが、本当に昨日のことのようです。もちろん、あの時は5年後にまさかこんなにたくさんの人に遊んでもらえるようになるとは思っていませんでした。どちらかというと、あの時はウェブサイトが完成しない可能性を心配していたのですが…(笑) 今まで、COSUMIで遊んでくださった方々、本当にありがとうございました。すばらしいソフトウェアをこんなに自由なライセンスで公開してくださっている、GNU GoとFuegoの開発者の方々にも改めてお礼申し上げます。あと5年はCOSUMIを続けていると思うので、その時どうなっているのか今から楽しみです。

jQuery 2.0を使い始めます

COSUMIのHTML5版ではjQueryを使用しているのですが、先日正式にリリースされたバージョン2.0に切り替えました。

オンライン囲碁ゲーム COSUMI
http://www.cosumi.net/

jQueryは現在、1.9系と2.0系という2つの系列があって、1.9系が通常版で2.0系がIE6~8に非対応なスペシャル版的な位置付けになっているんですが、COSUMIのHTML5版はもともとIE6~8では動かなかったので、割り切って2.0系を使い始めることにしました。たぶん、なんの問題も発生しないと思いますが、なにかあってもすぐに直せると思います。

オンライン囲碁ゲーム GUZUMI

COSUんでばかりではつまらないので、昨日はGUZUんでみました。

黒番、黒番、黒番、黒番、また黒番…

COSUMIの囲碁対局ゲームで、1局目の自分の石の色が、ページをリロードなどしない限り、2局目以降もずっと続いたり、1局目で白番が当たった後、8路盤以下や置き碁など自分が必ず黒番になる対局を行おうとするとエラーが発生してしまうバグを修正しました。

オンライン囲碁ゲーム COSUMI
http://www.cosumi.net/

このバグは、Flash版では先日19路盤をメインの囲碁ゲームに統合した時から、そしてHTML5版では最初からずっと(←おいっ!)あったようです… ほんとひどいですね。ごめんなさいです。

COSUMIのサーバを交換しました(4回目)

一昨日、COSUMIのメインのサーバを新しいのに交換しました(変えたとたん、ハードウェアの障害でさんざんでしたが、たぶんもう大丈夫です)。

オンライン囲碁ゲーム COSUMI
http://www.cosumi.net/

新しいサーバは、「さくらの専用サーバ」のエクスプレスG2シリーズの一番高いやつ。Xeon E5-2670が2発のモンスターマシンで、/proc/cpuinfoがすごいことに…(笑)

$ cat /proc/cpuinfo | grep processor | wc -l
32

COSUMI的な性能は、以前のと比べて2.5倍ぐらい。今回のサーバは5代目なんですが、初代との比較なら100倍(!)ぐらい速いんじゃないでしょうか?

なぜここまでのスペックが必要になったかというと、それはもうすべて9路盤Level5のせいです(笑)。さすがにちょっと調子に乗りすぎました…

今までは専用サーバ1台、VPS4台だったんですが、これからは専用サーバ2台でやっていく予定です。

現在COSUMIが止まっています

ごめんなさい。今のところ、いつ復旧できるかわかりません…

[追記 2013/2/6 9:30]
復旧しました。5日22時ぐらいから6日9時15分ぐらいの間止まってました。サーバのハードウェアの障害です。また今夜メンテナンスで少し止めます。

一昨日の「情熱大陸」は井山裕太五冠でした

[以前の関連記事] : タモリ倶楽部がCOSUMIにたくさんの人を連れてきてくれたかもしれない

この手の話大好きなので、またさせて頂きます(笑)。

一昨日の13日、TBS系列で放送されているテレビ番組「情熱大陸」で、井山裕太五冠が特集されていました。事前に井山先生が出演されるのを知っていたので、とても楽しみにしていたのですが、放送終了後すぐに、こちらもちょっと楽しみにしていた(笑)COSUMIのアクセス状況を確認したんです。

オンライン囲碁ゲーム COSUMI
http://www.cosumi.net/

いやー、びっくりしましたよ。Google Analyticsのリアルタイムのアクティブユーザーが300オーバー!(200オーバーはちょくちょく見るのですが…) ただ、通常はこの数字が200を超えるとサーバ負荷が危険な状態になるので大急ぎで確認しましたが、そっちはぜんぜん大したことはなかったです(これは対局している人が多くないことを意味します)。そして、10分そこらでまた200を切ってました。普段は決して多くないトップページ囲碁のルール解説のページへのアクセスが、とても多かったですね。

13日~14日のアクセスの推移です。もう一目瞭然です。

あと、1日単位で見たアクセス数で14日(13日ではなく)が過去最高でした。これについては、今回の放送との関連がいまいちはっきりしません。

COSUMIは数ある囲碁関連サイトの中のひとつにしか過ぎないわけで、そう考えるとなんかすごいですね。NHK杯だとかヒカルの碁だとかではなく、いつもは囲碁の話が出てこないテレビ番組で囲碁の話が出てくると大変なことになりやすいようです。

[追記 2013/1/15]
14日のアクセスが多い理由、今気づきました。大雪の影響です。まず間違いありません。COSUMIは以前から台風の日にアクセスが多い傾向がありましたが、それと同じことだと思います。ちなみに、今までで一番アクセスの多かった日は去年の9月30日だったのですが、この日も台風だったようです。

[追記 2013/1/16]
昨日書き忘れましたが、14日のアクセスの多さが大雪だったからだと気づいたのは、パズドラが(おそらく大雪の影響で)ダウンしたというニュースを見たからです。暇つぶし系は、基本的にどこもこういう傾向があるんだと思います。

[追記 2013/1/22]
井山先生は、先週金曜日のNHKのニュースウオッチ9でも特集されていたようです。

史上初 囲碁六冠に挑む | NHKニュースウオッチ9 ピックアップ
http://cgi2.nhk.or.jp/nw9/pickup/index.cgi?date=130118_1

ということで、18日~19日のアクセスの推移です。

情熱大陸ほどではないですが、これも結構すごく思えます。

WebKit系ブラウザでcanvasタグがborder-radiusを無視する時がある

非常にささいな話なのですが、COSUMIの囲碁対局ゲームの碁盤は、ほんの少しだけ角を丸めています。ところが特定の環境では、HTML5版の方の碁盤の角が全く丸くならないことに気づきました。

オンライン囲碁ゲーム COSUMI
http://www.cosumi.net/

少し調べたところ、このバグが原因のようです。

css – How to hide canvas content from parent rounded corners in any webkit for Mac? – Stack Overflow
http://stackoverflow.com/questions/10616668/how-to-hide-canvas-content-from-parent-rounded-corners-in-any-webkit-for-mac

要約すると、「WebKit系ブラウザにおいて、指定されたwidth属性とheight属性の積が66000以上のcanvasタグが、border-radiusを無視する時がある」ということのようです。リンク先では「canvasタグの親要素に指定されたborder-radius」という話になってますが、COSUMIではcanvasタグ自体にborder-radiusが指定されています。ちなみに私の環境では、Win7+ChromeとNexus7+Chromeはだめ、iPad3+SafariとiPad3+Chromeは大丈夫でした。

COSUMI側でも簡単に修正することができますが、これは明らかにブラウザ側のバグだと思われますので、とりあえずこのまま放置します。たぶんそのうち直るでしょう。

COSUMIのFlashがきれいに拡大・縮小するようになりました

COSUMIの囲碁対局ゲームでページ全体を拡大・縮小した時などに、Flashががたがたせずに滑らかに拡大・縮小するようになりました。

オンライン囲碁ゲーム COSUMI
http://www.cosumi.net/

「なんでこんなにがたがたしちゃうんだろう」と、以前からかなり気にはなっていたのですが、「できることは全部やってるはずだし、こんなものなのかな」と、もうほとんどあきらめてました。ところがここにきて、その理由がわかった!

ActionScript 2.0のMovieClip.attachBitmapメソッドは、4番目の引数smoothingで、画像を滑らかに拡大・縮小するかを指定することができます。この項目は省略可能なんですが、省略した時のデフォルトはtrueだと自分の手元にあった日本語の公式のリファレンスに書いてあるんですよ。で、これが嘘でした…(泣) デフォルトはfalseです。公式のリファレンスにもいろいろなバージョンがあるのかもしれませんが、ちゃっと調べた感じ、英語の方には正しく載ってるみたいなんですけどね。ほんと、なんでこうなるの…

Fuegoの最新開発版が強い

以前からCGOS見ていて思っていたのですが、Fuegoの最新開発版は結構強そうな感じです。ということで、現在COSUMIで試しに使っています。

オンライン囲碁ゲーム COSUMI
http://www.cosumi.net/

使用しているのは、Rev 1604。正式版のバージョン1.1とそれぞれ20k playoutの設定で9路盤の対戦をさせると、勝率約78%。Rev 1604の方のplayoutを6kに絞ると、これでだいたいイーブンです。いい感じですね! COSUMIはできるだけ安全運転・保守的にと、いつも気をつけているのですが、さすがにこれだけ違うと我慢できませんでした(笑)。COSUMIではplayoutを調整したので、基本的に強さはこれまでと変わりませんが、もし安定して動作し続けるようなら、まず9路盤にレベル5を追加して、そのあと11路盤と13路盤もレベルを選択できるようにしたいと思っています。

最新開発版を使ってひとつ気になったのは、Fuego起動時、オープニングブック以外にpatterns9.datpatterns19.datという2つのファイルを読み込むようになっていることです。これはRev 1588で追加された機能のようで、Greenpeepというのはそういう名前の囲碁ソフトのことみたいです。ちなみにpatterns9.datpatterns19.datのファイル名の919というのは、当然のことながら9路盤と19路盤の意味だと思いますが、といっても9路盤専用と19路盤専用ということではなく、15路盤未満はpatterns9.dat、15路盤以上はpatterns19.datを使用しているみたいです。でもって、この2つのファイルの読み込みがけっこう重い… 通常Fuegoは1プロセスで1局とか100局とか打つのが普通だと思うので、そういった場合はほとんど問題にならないんだと思いますが、1プロセスで1手なCOSUMIではちょっと無視できない感じです。無くても大して弱くならないかなと9路盤で「patterns9.datあり」と「patterns9.datなし」を対戦させてみると「patterns9.datあり」の勝率が7割近くなるので(すごい!)、外すわけにもいきません。とりあえず、COSUMIでは使わないpatterns19.datの方は空にしておきましたが、ちょっと頭が痛いです。

[追記 2012/11/19]
9路盤にレベル5を追加しました。

[追記 2012/11/30]
11路盤と13路盤でも、コンピュータの強さが選べるようになりました。

iOS6ではページをスクロール中に発生したタッチイベントからJavaScriptのタイマーがセットされない?

このブログ記事で問題にしているiOSのバグは、iOS6.1ですでに修正されています

– – – – – – –

先日公開したCOSUMIのHTML5版には、「iPad3でページをスクロール中に碁盤や碁盤の周りのクリッカブルな所をタップするとその後の動作がおかしくなる」という不具合がありました。私もいまだによく分かっていないところがたくさんあるのですが、原因とそれに対してとった対策を簡単に書いておきたいと思います(このブログ記事には私の勘違いが含まれている可能性が高いです。すべてを鵜呑みにはしないでください)。

この不具合に気づいた時、まず最初に思ったのは、これはフェードイン・フェードアウトが絡んでいるのでは、ということでした。スクロール中のフェードイン・フェードアウトは、描画がたいへんなのではないかなと。しかし、必ずしもそうだと言い切れないような感じだったので、少しネットで検索してみると、こんな情報が見つかりました。

javascript – setInterval pauses in iphone/ipad (mobile Safari) during scrolling – Stack Overflow
http://stackoverflow.com/questions/11177774/setinterval-pauses-in-iphone-ipad-mobile-safari-during-scrolling

おおこれだと思いました。jQueryの.fadeIn()/.fadeOut()はJavaScriptのsetIntervalを使っているようです。しかしちょっと腑に落ちないのは、なぜタイマーが止まっただけで、その後の動作がおかしくなるのかです。再開さえしてくれれば問題無いはずですが… そこで、もう少し調べてみると、こちらのブログのコメント欄に、ちょっと気になることが書いてありました。

There is one more bug I haven't seen anybody writing about. If a touch event causes a setTimeout, but that same touch event causes scrolling, that timer will never fire.

More information and a workaround here: https://gist.github.com/3755461

あれっ? なんかおかしい… 「止まる」のではなく「発火しない」と書いてあります。そしてリンク先のios6-timers.jsをCOSUMIのに試させてもらうと、不具合が完全に起こらなくなりました。

簡単なサンプルページを用意してみました。モバイル端末から試してみてください。Startボタンをタップすると、赤と青の四角が右に動きます。赤い方はJavaScriptのsetIntervalを使っていて、青い方はCSSのtransitionを使ってのアニメーションです。

http://www.perfectsky.net/misc/20121002.html

<!DOCTYPE HTML>
<html>
<head>
<meta name="viewport" content="width=640px">
<title>iOS6 Timer Test</title>

<style>
div{
  position : absolute;
  left     : 20px;
  width    : 100px;
  height   : 100px;
}
#div1{
  background-color : #ee4444;
  top              : 20px;
}
#div2{
  background-color : #6666bb;
  top              : 140px;
}
button{
  display   : block;
  margin    : 300px auto 0;
  font-size : 200%;
}
</style>

<script src="http://code.jquery.com/jquery-1.8.2.min.js"></script>
<script>
$(function(){

  var pos = 20;

  $("#div2").css("transition", "left 10s linear");

  $("button").on((window.ontouchstart === null) ? "touchstart" : "mousedown",
                 function () {

                   $(this).remove();

                   var timerId = setInterval(
                     function(){
                       $("#div1").css("left", ++pos);
                       if(pos >= 520){
                         clearInterval(timerId);
                       }
                     }, 20);

                   $("#div2").css("left", "520px");

                 });
});
</script>

</head>
<body>
<div id="div1"></div>
<div id="div2"></div>
<button type="button">Start</button>
</body>
</html>

まず最初は、Startボタンをタップして赤と青の四角が右に動き始めたらそこでページをスクロール(ピンチイン/ピンチアウトでもいいです)してみてください。たぶん、両方の四角が停止すると思います。そしてスクロールしていた指を離すとまた動き始めます。これは、iOSやAndoidではよく知られた挙動のようです。

そして次は、まずページをスクロールし、その指を離さないままStartボタンを押して、最後にスクロールしていた指を離してみてください。私の持っているiOS6のiPad3では(SafariでもChromeでも)、下の青い四角は動きだしますが、上の赤い四角は動き始めません。これはどうやらiOS6のバグのようです。そして先ほどのios6-timers.jsを使うとこの不具合は起きません。

肝心のCOSUMIへの対策ですが、最初はjquery.animate-enhanced pluginを使えばそれだけで直るかなと思ったのですが、よくは調べてませんがそれではうまくいかなかったので、最終的にはjQueryの.fadeIn()/.fadeOut()をすべて.show()/.hide()に書き換えることによって解決しました。他にも書き換えないといけないところがありそうでしたが、とりあえずCOSUMIの場合は、すべてjQueryの.fadeIn()/.fadeOut()に絡んでいたようです。ios6-timers.jsの使用は副作用があってもいやなのでちょっと控えました。将来的にはできればもうちょっとましな対策をしたいと思いますが、とりあえず今はこれでいきます。

今回のバグは、ページのスクロール中という限られた状態でしか発生しないためか、当初は全くといっていいほど情報がありませんでしたが、すこしずつ気づいた人がでてきたようです。

javascript – iOS 6 safari, setInterval doesn't get fired – Stack Overflow
http://stackoverflow.com/questions/12683510/ios-6-safari-setinterval-doesnt-get-fired

setTimeout while scrolling in iOS 6 doesn’t work, works in iOS 5 – Google グループ
https://groups.google.com/forum/?fromgroups=#!topic/phonegap/3Xe_M79qHEM

[追記 2013/1/29]
今回のiOSのバグは、iOS6.1で修正されたようです。COSUMIの方もまた今度元に戻しておきます。

[追記 2013/2/7]
.fadeIn()/.fadeOut()に戻しておきました。たったこれだけのことで、リッチな感じになるんですよね。

COSUMIにモバイル端末向けHTML5版ができました

COSUMIに、Flashを使用しないモバイル端末向けHTML5版の囲碁対局ゲームを作ってみました。

囲碁対局ゲーム(モバイル端末向けHTML5版)
http://www.cosumi.net/mobile/play.html

かなり以前から作り始めていたのですが、ちょっと完成までに時間が掛かってしまいました。とりあえずiPadでは動きます。WindowsではChromeとFirefoxは大丈夫です。IEですか? もうよく知りません…(笑) IEが入っている環境なら、きっとFlashも入っているのでそれでもういいかな? 音は出ません。これは宿題とさせてください。とりあえずテスト公開です。しばらくしてから、トップページなどからリンクを張ります。

もし遊んでみて動作がおかしかったら、お使いの環境も含めてぜひ教えてください。明らかバグは大抵直せるはずです(逆に、微妙な不具合は少し難しいかもしれません…)。反対にちゃんと動いたよという報告も、たいへんありがたいです。どうかよろしくお願いします。

最後に、制作中に感じたことなど、ぐだぐだと書いていきたいと思います。

「携帯でCOSUMIが動けばなあ」というのは、思い返せば、一番最初にCOSUMIを制作し始めたころから思っていたことでした。しかし、当時は自分自身のスキルや状況がそれを許さず、どうにもなりませんでした。その内、AndroidでFlashが動くようになり「へへ、やっと時代がCOSUMIに追いついたぜ」と余裕をかましていたら(笑)、そのまま時代に追い抜かれてしまいました(泣)。仕方なく、重い腰を上げHTML5版の制作に取り掛かったという次第です。

当初は携帯電話を常に念頭に置いていたのですが、作っていく内にCOSUMIの主戦場はスマフォではなく、タブレット端末じゃないかと思うようになりました。これについては、今後のアクセス解析がちょっと楽しみです。

技術的なことも少し書いておくと、碁石はCanvasで描いています。画像を貼っているとかじゃなくてグラデーションをつけて丸を描いています。いろいろ試したのですが、これが速くて綺麗でした。絵を手直ししたい時も、少し数字をいじればいいだけなのでものすごく楽です。

それから、動作確認のためにiPad3買ったのですが、Retinaディスプレイが本当に綺麗です。そしてこういったモバイル端末使っていると、画像がドットバイドットで表示されることを期待する時代は完全に終ったんだということを実感します。例えば、どこのサイトを見ていても、画像汚い・テキスト綺麗です。こういうのはものすごく驚きでした。

iPadと言えば、新しいiOS6です。個人的には地図は許せますが(笑)、この仕様(バグ?)は許さん! 少しはまってしまいました。なんでPOSTのレスポンスをキャッシュするんだ… これ、もう少し世間的に大ごとになりそうなものですけどね。

[追記 2012/9/29]
トップページからのリンクも張って、正式公開としました。ウェブサーバのアクセスログを見る限り、Androidでも動いているのかな?

ただ、ちょっとした不具合がひとつだけ見つかりました(正確には制作中になんどか経験していた不具合の再現方法がようやく分かりました)。それは、「iPad3でページをスクロール中に碁盤や碁盤の周りのクリッカブルな所をタップするとその後の動作がおかしくなる」というものです。時間はかなり掛かったのですが、少しずつ原因も分かってきました。この話はこの話だけで一度ブログ記事にしたいと思います。ちなみにこの不具合は、まだちゃんと確かめてはいませんが、たぶん直せると思います。

[追記 2012/10/2]
この不具合を修正しました。技術的な詳細はこちらをみてください。

iOS6ではページをスクロール中に発生したタッチイベントからJavaScriptのタイマーがセットされない?
http://www.perfectsky.net/blog/?p=152

9路盤でコンピュータの強さが選べるようになりました

COSUMIの9路盤で、レベル1からレベル4までコンピュータの強さを選べるようにしてみました。

オンライン囲碁ゲーム COSUMI
http://www.cosumi.net/

今回の変更直前の9路盤の強さは、(常に一定ではありませんでしたが)だいたいレベル3.5相当ぐらいでした。ですので、今回のレベル4は今までよりも少し強く、レベル4以下は今までよりも弱いです。将来的にはレベル5はいつか必ずできそうです。それより上はFuegoの進化しだいですね。それぞれのレベルの強さがころころ変わっては意味が無いと思うので、今後のアップデート時には、できるだけ同じ強さを維持できるように気をつけたいと思います。

一応、どのようにレベルの調整をしているかも、以下簡単に書いておきたいと思います。COSUMIの9路盤は、まず初手からCOSUMI独自のオープニングブックを使い、それが切れるとFuegoに考えさせ、そしてある一定の手数まで来るとGNU Goに考えさせていました(厳密にはもう少しややこしいことをやっていますが…)。今回はこの元々Fuegoに考えさせていた中盤を、GNU Go、Fuego 2000playout、Fuego 6000playout、Fuego 20000playoutにすることで、それぞれレベル1からレベル4の強さに調整しています。ちなみに、GNU GoとFuego 2000playout、Fuego 2000playoutとFuego 6000playout、Fuego 6000playoutとFuego 20000playoutの組み合わせで初手から終局まで丸々一局戦わせると、だいたい後者が勝率8割ぐらいになります。

19路盤で置き碁ができるようになりました

COSUMIの19路盤で置き碁ができるようになりました。

19路盤
http://www.cosumi.net/nineteen.html

例によって石を置くことしかできませんが、まあこれで良いと思います。

とりあえずで作ったこの19路盤ですが、プレイしてくれる人の割合がすごく多くてびっくりしています。このあたりは本当にちょっと認識を改めないと…

COSUMIのサーバを交換しました(3回目)

昨日、COSUMIのメインのサーバを新しいのに交換しました。

オンライン囲碁ゲーム COSUMI
http://www.cosumi.net/

新しいサーバは、「さくらの専用サーバ」のエクスプレスシリーズの一番高いのです。お値段は、35,800円/月から13,800円/月に!(幸せです。いやほんとに) しかも、COSUMI的な性能はそれほど変わらないかなと思っていたのですが、新しいのは倍近く処理能力があるみたいで… 特に意外だったのは、GNU Goを同時にたくさん動かしている時に、Hyper-Threadingで4割ほど多く仕事してくれること。テストする前はゼロみたいなものだろうと思ってました。

サーバのスペックも良くなったので、少し贅沢にリソースを使うようにもしました。Fuegoのバージョンも0.4.1から1.1に変更(ずっとほったらかしだった…)。定石も少しアップデートしました。という訳で、もろもろ結構良くなっているはずです。

あと、今現在COSUMIのHTML5版を作成中です。最初は大変かなと思っていたのですが、作り始めたらそうでもなかった… とりあえず、iPhoneやiPadなどのiOS系で動くようにだけはしたいと思います。

Pachiにたくさんたくさん戦わせてみた

COSUMIの新しいサーバを借りたので、本番に投入する前に、自分のPCでは普段できない、負荷の掛かる重いPachiのテストをいろいろやってみました。とりあえずplayout数を20kにそれぞれ設定してFuegoと100局(以下すべて19路盤、コミ6目半。Pachiのバージョンは9.01、Fuegoは1.1。カッコ内は、一局あたりの平均消費時間です)。

Pachi。

$ pachi -t =20000

Fuego。

$ fuego --config foo.conf

foo.conf。

uct_param_search number_threads 1
uct_param_player ignore_clock 1
uct_param_player max_games 20000

そして結果は、

Pachi(832.2sec) 67勝 – 33勝 Fuego(550.5sec)

消費時間が結構違うので、今度はplayout数を15kと25kにして更に100局。

Pachi(619.4sec) 41勝 – 59勝 Fuego(635.6sec)

うーん、そうなんですよね。私が調べた範囲では、以前から19路盤でもPachiがいまいち冴えないんですよね… 一応、ここにあるextra pattern filesを使うと強くなるらしいですが、言っても50~150Elo程度のようですし、なにか他にしておいた方が良い設定とかあるのかな?

気を取り直して次行きます。今度はplayout数に因る強さの変化を調べてみます。playout数が1kから128kの8つのバージョンのPachiに、Gomillというソフトを使って、1ペアあたり10局の総当たり戦を行わせてみました(このGomillというソフトはすごい便利!)。

                     A    B    C    D    E    F    G    H
A pachi-playout1k        1-9  0-10 0-10 0-10 0-10 0-10 0-10
B pachi-playout2k   9-1       0-10 0-10 0-10 0-10 0-10 0-10
C pachi-playout4k   10-0 10-0      0-10 0-10 0-10 0-10 0-10
D pachi-playout8k   10-0 10-0 10-0      1-9  0-10 0-10 0-10
E pachi-playout16k  10-0 10-0 10-0 9-1       1-9  0-10 0-10
F pachi-playout32k  10-0 10-0 10-0 10-0 9-1       2-8  1-9
G pachi-playout64k  10-0 10-0 10-0 10-0 10-0 8-2       2-8
H pachi-playout128k 10-0 10-0 10-0 10-0 10-0 9-1  8-2

playout数が増えるにしたがってきっちりと強くなっていくのですが、上の方ではその効果が少しずつ失われていくのがわかります。そして問題はこれが最終的にはどのように収束していくのかなので、さらに追加で128kと256kを20局。

                     A    B
A pachi-playout128k      7-13
B pachi-playout256k 13-7

そして、Fuegoでも同じようなことをさせてみました。

                     A   B   C   D
A fuego-playout16k      2-8 2-8 1-9
B fuego-playout32k  8-2     3-7 1-9
C fuego-playout64k  8-2 7-3     2-8
D fuego-playout128k 9-1 9-1 8-2

はっきりしたことを言うには対局数が少なすぎますが、Pachiの時とはちょっと様相が違って見えます。

全体的な結論としては、「playout数が多ければPachiは強いけど、少なければそうでもない」といった感じでしょうか?

最後に、無作為に選んだPachiの128kと256kとの対局を先後を換えて1局ずつ貼っておきます。

19路盤

COSUMIで19路盤の対局もできるようにしました。

19路盤
http://www.cosumi.net/nineteen.html

COSUMIが黒番の時の初手以外は、もう完全に全部GNU Goです。正直、ローカルでお好きなGUI使ってGNU Goと対局してもらった方が何かと良いと思うので、存在意義がちょっと薄い気もしますが、まあとりあえず作ってみました。一応、この19路盤だけはサーバの負荷が高い時は対局できない仕様にさせてもらいますが、実際はたぶん基本的にいつでも動くと思います。というか、いつでも動くようにサーバを増強し続けたいと思います。

今回の19路盤の対局ゲームでは、さくらのVPSを初めて使ってみました。最近になって気づいたのですが、このサービスちょっと安過ぎではないでしょうか? 鯖をたくさん食べたければ(笑)丸ごと一匹買ってくるのが良いに決まってると思ってたのに、この小さい切り身はとってもお買い得に見えます。もし今回これでうまくいくようなら、今後はこのさくらのVPSをたくさん借りて負荷を分散させていく予定です。本当にありがたいことなんですが、現在のCOSUMIのアクセス量は4コアXeon2発ではとても捌ききれません… サーバが複数台の構成になるのは技術的にいろいろ大変ですが、もうこれは避けようがなさそうです。

Yahoo!と囲碁ガール

かなりいまさらな話ですが、先々月の10月24日(か23日)、Yahoo! JAPANのトップページのニュースがいろいろ載っている欄に、「囲碁ガール」がうんたらかんたらというのが出てました。その時のリンク先のページは今はもう消えているみたいなんですが、そのリンク先のページに載っていた記事自体はこちらです。

“囲碁ガール”が増殖中! 知られざる囲碁の魅力とは? | web R25
http://r25.yahoo.co.jp/fushigi/girlscolumn_detail/?id=20111020-00021797-r25

そして、先々月のCOSUMIの(Google Analyticsで言うところの)ユーザー数の推移がこれです。

「囲碁ガール」と「COSUMI」にそこまでどんぴしゃな関連性があるとは思いませんので、Yahooすごいとしか言えません…

Pachiのこと書くのを忘れてた

先日、このサイト内でまだ一度も「Pachi」という単語が使われてないことに気づき、めちゃくちゃ驚いてしまいました。ということで今回はこのすごく強いオープンソースの囲碁ソフトの紹介です。ちょうど9.00という新しいバージョンがリリースされたばかりです。

Pachi: Software for the Board Game of Go / Weiqi / Baduk
http://pachi.or.cz/

Pachiは、かなり以前からKGSでよく見かけたりしたのでそこそこ有名なソフトだと思います。そして、オープンソースのプログラムの中ではたぶん最強でしょう(少なくとも19路盤では間違いないかと)。この周俊勲九段との7子局とかけっこうすごいです。

いつかCOSUMIでもお世話になることがあるかもしれませんが、碁盤サイズが小さいとFuegoもかなり強いんですよね。

15路盤で置き碁もできるようにしてみました

COSUMIの15路盤で置き碁もできるようにしてみました。

オンライン囲碁ゲーム COSUMI
http://www.cosumi.net/

置き碁といっても黒番しか持てませんので、石を置かせたい時は適当な回数最初にパスしてください。1ヶ月ぐらいしたら、この置き碁の対局用の定石をちゃんと作ってみたいと思います。今はとりあえずの分しか用意できてません。

それから、純碁のルール解説のページも作ってみました。まあこっちのページを削り倒しただけなんですが…

http://www.cosumi.net/jungolearn.html

[追記 2011/11/12]
置き碁用の定石をとりあえず一回アップデートしました。1ヶ月後ぐらいにもう一度やると思います。

[追記 2011/12/23]
もう一回アップデートしました。できるだけ早い内にもう一度やります。

定石アップデート 9路盤-30693局面 11路盤-18776局面 13路盤-19523局面 15路盤-20285局面

COSUMIの定石をアップデートしました。今現在、9路盤が30693局面分、11路盤が18776局面分、13路盤が19523局面分、15路盤が20285局面分です。

オンライン囲碁ゲーム COSUMI
http://www.cosumi.net/

当初、かなりあやしかった5路盤も、COSUMIで打たれた棋譜を見ている限り、今はもうかなりまともになっているようです。

サウンドオフと2回クリックの機能を付けました

COSUMIに、サウンドをオフにする機能と、手を打つ時に1回ではなく2回クリックして初めて確定されるようにする機能を付けてみました。碁盤の右上に小さなボタン(というか文字)ができています。

オンライン囲碁ゲーム COSUMI
http://www.cosumi.net/

サウンドオフは、どうせならもっと早くやっておけばよかったかもしれません(あまりごちゃごちゃさせるのは好きではないんですが…)。2回クリックは、最近ものすごくアクセスが増えているスマートフォンでの操作性を考えて付けてみました。これで多少は遊びやすくなったのではないでしょうか? よくアンドゥができる囲碁ソフトがありますが、そんなの囲碁じゃないって思うのと、サーバサイドが絡むと一気に話がややこしくなるので、この形にしました。個人的にはこれで十分だと思います。

あとそれから、Fuegoの考える手に対して簡易的なダイナミックコミも導入してみました。具体的には、前の手を考えた時に返ってきたwin rateに応じて調整したコミで、その次の手を考えさせるようにしました。別に、Fuegoのソースコードをいじったとかそんな高級な話ではありません。この改良で強くなったり弱くなったりはほとんど無いと思いますが、9路盤~13路盤の手が少し自然になっているかもしれません。

それ以外にも、今回はいろいろと細かいところを修正したはずなのですが、もうよく覚えていません(笑)。

祝100万敗!

COSUMIが100万敗を達成しました!

オンライン囲碁ゲーム COSUMI
http://www.cosumi.net/

現在、3000敗/日、COSUMIが打つ手が40万手/日ぐらい。始めたころを思うと、考えられないような数字です。もしいつか、1000万敗までいくようなことがあったら、もう涙が出ちゃいますね。1億敗までいったら、たぶん心臓が止まると思います!(笑)

あらためて、GNU GoとFuegoの開発者の方には、心より感謝です。

7路盤スペシャルバージョンの定石を公開します

[以前の関連記事] : 7路盤スペシャルバージョン

COSUMIの7路盤スペシャルバージョンの定石を公開したいと思います。本当はもう少しちゃんとしたのができてからにしたかったのですが、なかなか終らないので… これからはアップデートするたびに随時公開していきます。

7路盤スペシャルバージョン
http://www.cosumi.net/seven.html

まずはSGFファイル。

http://www.perfectsky.net/misc/kifu/seven-20110608.sgf

ここにも貼り付けておきます。

以下、注意点を箇条書きにしていきます。

  • Bad Moveというコメントがついている手は地を損する手(以下、悪手と呼びます)で、それ以外の手は地を損することのない手(以下、最善手と呼びます)です。悪手・最善手の区別に、コウ材の数や、人間が見て自然な手かどうかなどといったことは一切考慮されていません。COSUMIは最善手だけを打ちます。
  • 悪手となっている手が実際は最善手ということはほとんどないと思いますが、その反対に最善手となっている手が実際は悪手ということはけっこうよくあります。特に、一度悪手を打った後の手順中には多いです。
  • COSUMIでは手順ではなく盤面の形で定石を持っているかどうか調べています。例えば、黒A・白B・黒C・白Dという手順が入っていたら、黒C・白B・黒Aの手順でも白Dと打ちます。ただし、コウは考慮されます。
  • COSUMIでは対称形は考慮されます。
  • GNU Goの尻拭い的な手順がけっこうたくさん入っています。あまり気にしないでください。
  • 棋譜管理ソフトの操作ミスで明らかにおかしな手順が入っている時もあると思います。それもあまり気にしないでください。

一応、現在の7路盤解析の進捗状況はというと、まず、COSUMIが負けたけどまだ定石を修正できていない対局の棋譜が5000局分ぐらいあります。その内の半分ぐらいは、GNU Goが最後に勝手に転んでるだけの対局なのでどうでもいいのですが、残りの半分はちゃんと調べないといけないやつで、これがパターン数で本当にだいたいですが20パターンぐらい。ただ、主だった変化はもう出尽くした感もあるので、この20パターンさえ調べられたら一応終わりかなと思います。

ということで、今回はその中から、比較的やっかいなのを2つ紹介します。興味があったら調べてみてください(何人かでつつくと楽しいかもしれません)。そして、結果を教えてください!

とりあえず、7路盤を調べるならまずはこのサイト。

七路盤の研究
http://olive.zero.ad.jp/qin/7ro/

その1。

先のサイトにはこの局面で、F4にあてて、F5に継ぐ手順が載っていますが、素人目には、C3が良い所に見えてしかたありません(Fuegoもここを曲がりたがります)。単に曲がるのが良いのか、F4に一本あててから曲がるのが良いのかはよく分かりませんが、最低でもどちらか一方は盤面9目ぐらいありそうに思えるのですがどうでしょうか? ちなみに、この形は7路盤調べ始めた時から、自分の中でラスボス的な扱いになっています(笑)。

その2。

私にはまず気がつかない手なんですが、この局面でC3にこすむ手があるようです。一見、ぬるく見えますが、この手がすごいのは、(相手から対称形で手を渡されたのに対し、さらに)相手に対称形で手を渡しているところで、白は右下半分だけで(左上半分だけで)、なにか手を捜さなければいけませんが、しかし狭い… この勝負どころで、選択肢がほとんどないのは白も怖いです。うーん、これは油断ならない手。一応、さすがにこの手は成立しないというのが私の予想なのですが、Fuegoに打ち次がせると黒の勝率もそれほど悪くないんですよね。ひょっとすると…

7路盤調べていていつも思うのは、「本当にちゃんと調べた人はいないんじゃないかな」ということです。盤面9目という話もまだ怪しい… でも自分が死ぬまでにはきっとはっきりするだろうと思うので、ちょっと楽しみです。

話が少しそれますが、こちらのサイトによると7×4では白は生きないけど、6×5なら生きがあるようです。面白いですね。ここまで来れば、6×6がコンピュータで解析されるのも、もう時間の問題でしょうか? できればそれまでに、ある程度しっかりした7×7の答えを出したいですね。人間様のすごさを見せてやる!(笑)

定石アップデート 9路盤-28937局面 11路盤-16976局面 13路盤-18127局面 15路盤-14549局面

COSUMIの定石をアップデートしました。今現在、9路盤が28937局面分、11路盤が16976局面分、13路盤が18127局面分、15路盤が14549局面分です。

オンライン囲碁ゲーム COSUMI
http://www.cosumi.net/

今回はとにかく徹底的に5路盤を修正しました。それ以外は微調整です。

あと、ごくまれに特に小さい碁盤サイズでコウの時にエラーが起こることがあった不具合も修正しました。

COSUMI APIを停止します

サーバの負荷がかなり増えてきたので、今月末の5月31日をもってCOSUMI APIを無期限停止します。

囲碁Web API 「COSUMI API」
http://www.cosumi.net/api.html

そもそも、COSUMI APIは負荷が高い時には正常にレスポンスを返さない仕様なので、今だって停止しまくりだったりするわけですが、「売り物が無いのに店を開け続けている」のはちょっとなんなので、こういうことになりました。

続けられなくてごめんなさい。もしも再開することがあったら(まずないとは思いますが)、その時は24時間いつでも使えるようにします。そうじゃないと、結局使いようがないと思います。

[追記 2011/6/1]
止めました。

GNU Goに純碁を打たせる

正直、COSUMIを始めるまではあまりそういう認識ではなかったんですが、「囲碁のルールは難しい」と感じる人は少なくないようです。囲碁を始めてみたいと思っても、一番最初のルール覚えるところでつまづいてしまうらしい… 囲碁のルールが「シンプル」なのは間違いないと思うのですが、必ずしもすべての人に「わかりやすい」とは言えないのかもしれません。ただ、難しく感じる原因が、囲碁のルール自体ではなく、人や書籍やウェブサイトなど、ルールを教えるものにあることも多い気がします。じゃあなぜそうなってしまうのかというと、それは囲碁のルールがムズカシイからで…

ということで「純碁」です。もうみんなで純碁をやりましょう!

王銘エン九段著「純碁」
http://park6.wakwak.com/~igo/golax/jungo/ohmei.html

みんなで純碁をやると決まったので(笑)、GNU Goにも純碁を打ってもらうことにします。ここからが今回の本題です。

まず、使えそうな起動オプションを探してみます。とりあえずこのあたりかな?

$ gnugo --chinese-rules --play-out-aftermath --capture-all-dead

これで打たせたのがこの対局。

ちょっぴり感じが出てますが、最後はもっと自分の地に石を埋めていってもらわないといけません。そこで、読めないソースコードを読んだふりして、少し分かった気になってみます。aftermath.cの952行目あたりに以下の赤字部分を追加します(以下、すべてバージョン3.8の話です)。

  /* Case 7.
   * In very rare cases it turns out we need yet another pass. An
   * example is this position:
   *
   * |.....
   * |OOOO.
   * |XXXO.
   * |.OXO.
   * |O.XO.
   * +-----
   *
   * Here the X stones are found tactically dead and therefore the
   * corner O stones have been amalgamated with the surrounding
   * stones. Since the previous case only allows sacrificing
   * INESSENTIAL stones, it fails to take X off the board.
   *
   * The solution is to look for tactically attackable opponent stones
   * that still remain on the board but should be removed.
   */
  for (pos = BOARDMIN; pos < BOARDMAX; pos++) {
    if (board[pos] == other
	&& (worm[pos].unconditional_status == UNKNOWN
	    || do_capture_dead_stones)
	&& (DRAGON2(pos).safety == DEAD
	    || DRAGON2(pos).safety == TACTICALLY_DEAD)
	&& worm[pos].attack_codes[0] != 0
	&& !is_illegal_ko_capture(worm[pos].attack_points[0], color)) {
      DEBUG(DEBUG_AFTERMATH, "Tactically attack %1m at %1m\n",
	    pos, worm[pos].attack_points[0]);
      return worm[pos].attack_points[0];
    }
  }
  
  for (pos = BOARDMIN; pos < BOARDMAX; pos++) {
    if (ON_BOARD(pos)
    && board[pos] == EMPTY
    && is_allowed_move(pos, color)
    && safe_move(pos, color)) {
      return pos;
    }
  }
  
  /* No move found. */
  return PASS_MOVE;
}

ちなみに、is_allowed_moveを付けておかないと、ごくまれに非合法な手を打とうとしてエラーになる時があるようです。で、これで打たせたのがこの対局。

おー、これは純碁っぽいですね。地を埋めていくのがなんだか面白い。ただ、何局も打たせて調べていると、次のような局面で左上の1目の地を埋めてしまうことが判明しました…(それはsafe_moveなのか?(笑))

しかたないので、かなり無理やりですが、先ほど追加したコードの前にさらに以下の赤字部分を追加します。

  /* Case 7.
   * In very rare cases it turns out we need yet another pass. An
   * example is this position:
   *
   * |.....
   * |OOOO.
   * |XXXO.
   * |.OXO.
   * |O.XO.
   * +-----
   *
   * Here the X stones are found tactically dead and therefore the
   * corner O stones have been amalgamated with the surrounding
   * stones. Since the previous case only allows sacrificing
   * INESSENTIAL stones, it fails to take X off the board.
   *
   * The solution is to look for tactically attackable opponent stones
   * that still remain on the board but should be removed.
   */
  for (pos = BOARDMIN; pos < BOARDMAX; pos++) {
    if (board[pos] == other
	&& (worm[pos].unconditional_status == UNKNOWN
	    || do_capture_dead_stones)
	&& (DRAGON2(pos).safety == DEAD
	    || DRAGON2(pos).safety == TACTICALLY_DEAD)
	&& worm[pos].attack_codes[0] != 0
	&& !is_illegal_ko_capture(worm[pos].attack_points[0], color)) {
      DEBUG(DEBUG_AFTERMATH, "Tactically attack %1m at %1m\n",
	    pos, worm[pos].attack_points[0]);
      return worm[pos].attack_points[0];
    }
  }
  
  for (pos = BOARDMIN; pos < BOARDMAX; pos++) {
    if (ON_BOARD(pos)
    && board[pos] == EMPTY
    && (board[SOUTH(pos)] == EMPTY
        || board[WEST(pos)]  == EMPTY
        || board[NORTH(pos)] == EMPTY
        || board[EAST(pos)]  == EMPTY)
    && is_allowed_move(pos, color)
    && safe_move(pos, color)) {
      return pos;
    }
  }
  
  for (pos = BOARDMIN; pos < BOARDMAX; pos++) {
    if (ON_BOARD(pos)
    && board[pos] == EMPTY
    && is_allowed_move(pos, color)
    && safe_move(pos, color)) {
      return pos;
    }
  }
  
  /* No move found. */
  return PASS_MOVE;
}

これで打たせたのがこの対局。

地の埋め方がなんだかいい感じに臆病になっています(笑)。

ところが、これでもうOKかなと思っていたら、さらに別の問題が判明しました。次のような局面で白石を打ち上げてくれません…

これは先ほどのコードを追加したからとかではなく、そもそもGNU Goはこの巨大墓場を打ち上げてくれないようです(そういえば、COSUMIでも打ち上げてないのを見たことがある(笑))。最初は「これは純碁として致命的!」と思ったんですが、よく考えたら致命的なのは中国ルールでも日本ルールでも同じようなもの。ただ、囲碁を知っている人が打てば、普通こんな局面にはなったりしないので別にあれですが、純碁を打つような初心者の人なら、こんな局面にだってしてしまうかもしれないし、このまま終局したらなにかと誤解しかねないのでちょっとやな感じです。で、なんとかならないかなといろいろ試したところ、この局面の後、黒パス白パスとなると、今度は打ち上げてくれることに気づきました(GNU Goの中で、一体何が起こったのかは全くわかりません(笑))。正確には、--capture-all-deadオプションと、黒パスか白パスのどちらかひとつでも最後に付いていれば(2手打ちになるけど)、GNU Goは打ち上げてくれるようです。

ということで、時間のある時にこのあたりを何とかまとめて、COSUMIでも純碁が打てるようにしたいと思います。ちなみに、今回のようなことをしても、切り賃を意識したような純碁的に良い手を打つようになったり、純碁でスコア計算をしてくれるようになったりはしませんので注意してください。あくまでも、最後に上手に地を埋めていってくれるようになるだけです。

[追記 2011/5/13]
COSUMIでも純碁が打てるようにしました。

http://www.cosumi.net/jungo.html

棋譜の最後にパスを付けると、取れないコウが取れるようになってしまうので(気づくのが遅い!(笑))、(盤面全体の)巨大墓場は、GNU Goを使わずに自前のコードで打ち上げるようにしました。なので、純碁以外の対局ゲームでも、今度からは巨大墓場を打ち上げます。少し賢くなりました。

節電にご協力ください

当面の間、COSUMIの囲碁対局ゲームを停止します。

オンライン囲碁ゲーム COSUMI
http://www.cosumi.net/

現在、政府や電力会社が節電を呼びかけていますが、その様な状況で、PCでゲームっていうのはないんじゃないかということです。ご理解ください。

また、他にも身の回りに不必要な電気の使用がないか、今一度ご確認ください。どうかよろしくお願いいたします。

私自身、今回のような判断が正しいものなのか確信は持てませんが、COSUMIと似たようなサイトの運営者の方が、熟慮のうえで追従してくださるのなら、とてもうれしく思います。

[追記 2011/3/22]
昨日21日、再開しました。本当にいろいろなことを考えた結果、このタイミングになりました。ご理解ください。

石が出てこない

COSUMIの対局リプレイ時に、ごくまれに石の表示がおかしくなることがあったので修正しました。

オンライン囲碁ゲーム COSUMI
http://www.cosumi.net/

ちょっとややこしいのですが、「石が取られた後、その石が取られた場所の内、上下左右に石が無い所に打つと、その打った石が表示されず無いものとされる」って感じでおかしくなってました(こんなのの最後に打たれた黒石なんかが出てこなかった)。ちなみにこの不具合は、対局リプレイの時だけ話で、対局中は問題ありませんでした。

このバグはかなり以前から存在していたと思うのですが、何で今まで気づかなかったんでしょうねえ…

一色碁

作ってってコメントをこのブログにいただいたので、COSUMIに「一色碁」の対局ゲームを作ってみました。ていうか、目隠し碁を作った時にいっしょに作っておけば良かったんですが…

一色碁
http://www.cosumi.net/onecolor.html

一色碁って目隠し碁より簡単とはいえ思ったより難しいですね。正直、9路盤なら余裕かと思ってましたが、途中から白の巨大な団子石としか見えなくなってきて…(笑)

話のねたによかったら遊んでみてください。

* * * * * * *

Android 2.2+ではFlash Playerが動くようになったので(端末によっては動かないこともあるらしいけど)、これでこれからは携帯なんかでもCOSUMIで遊んでもらえるなあと喜んでいたんですが、実際に動くかどうかは今まで全く確認していなかったので、少し調べてみました。とりあえずアクセスログを見た感じでは、GALAXY Tab SC-01C、GALAXY S SC-02B、SIRIUS α IS06、GALAPAGOS SoftBank 003SHなどで終局まで打たれている形跡がありました。操作のしやすさなどに関しては全くわかりませんが、一応動くのは動くようです(良かった!)。私もAndroidのスマートフォンが少し気になってるんですが、もう買っちゃおうかな?

/proc/loadavgの謎

CentOS 5.5なCOSUMIのサーバでcat /proc/loadavgとすると、ごくまれに最後の改行が1つではなく2つになっていることがあります。どうでもいいような細かい話ではありますが(笑)、しかしたぶんこれは意図されていない出力形式だと思います。

$ cat /proc/loadavg
5.02 4.74 4.32 4/245 6023
$ cat /proc/loadavg
5.02 4.74 4.32 9/257 6072

$ cat /proc/loadavg
5.02 4.74 4.32 12/267 6146

そもそもなぜこれに気づいたかというと、この出力内容をログに取り続けているからなんですが、最近、そのログを見ていた時に、偶然、改行が2つの時だけに見られる奇妙な規則性に気がつきました。その規則性とは、「4カラム目のスラッシュの左側(実行中のプロセス数)が9」ということです(ほんとよく気がついたと思う(笑))。

5.02 4.74 4.32 9/257 6072

簡単なスクリプトを書いてさらにもう少し詳しく調べたところ、分かったのは、

  • 89の時しか改行が2つにならない
  • 8の時に改行が2つになる確率は、だいたい1%ぐらい。ごくまれ
  • 9の時に改行が2つになる確率は、だいたい50%ぐらい。こっちは多い

ということです。さらにさらに、以前使ってたサーバのログなども調べてみると、同じような条件で同じく改行2つになっている時があるのはあるのですが、発生頻度が今より少なかったです。初代、二代目、三代目(現在)となるにつれて、改行2つになる確率が増えていきます。ついでにいうと、簡単にしか調べてませんが、手元のPCでは改行2つが再現しませんでした。

一体なぜこういうことになるんでしょうか? 皆さんの環境でも同じことが起こりますか? とにかく不思議で不思議でしかたありません…

COSUMIには黒番白番どちらが勝ちやすい?

以前から調べよう調べようと思っていた、コミ6目半なCOSUMIの9~15路盤での手番による有利不利を調べてみました。

オンライン囲碁ゲーム COSUMI
http://www.cosumi.net/

COSUMIでは、ユーザが勝った碁しか正確に把握できないんですが、それらの対局の内、ユーザが黒番だった割合は以下のような感じでした(調査対象期間はここ1ヶ月間ぐらい)。

9路盤 52.2%
11路盤 51.1%
13路盤 53.2%
15路盤 52.6%

一応だいたい私の事前の予想ぐらいでした。最適なコミの大きさの話はけっこう複雑で、あまり簡単にこれという答えが出せませんが、COSUMIは今後も引き続き6目半でいいかなと思っています。いつかCOSUMIがもっと強くなったら、もう一度調べてみたいですね。

COSUMI特有の要因もいろいろあると思いますので、この数字が囲碁というゲームそのものだけから来ているとは考えないで、参考程度に眺めるぐらいにしておいてください。

COSUMIに最大何目差で勝つことができるか?

COSUMIにツイートボタンを付けてから、COSUMIでの対局をつぶやいてくれる人が少しずつ増えてきてとても喜んでるのですが、それらのツイートを見ていると、ものすごい大差でCOSUMIをやっつけている人がちょくちょくいるので、では一体最大何目差で勝った人がいるんだろうと思い、ここ一ヶ月間ぐらいの棋譜をちょっと調べてみました。

オンライン囲碁ゲーム COSUMI
http://www.cosumi.net/

調べ始めてすぐに気がついたのは、COSUMIを全滅させている棋譜がかなりあるということです…(笑) 当然のことながら基本的にそれ以上大差で勝つことはできませんが、9路盤なんかではそんな棋譜が山ほどあり、11路盤、13路盤と、碁盤が大きくなるに連れて数は減っていきますが、ゼロにはなりません。そして、なんと15路盤でもCOSUMIを全滅させている棋譜が3つもありましたので、ここに貼っておきたいと思います。その内ひとつは、なんと白番を持ってCOSUMIを全滅させてます!

まずは、黒番216目半勝ち。

次は、黒番217目半勝ち。

そして最後に、白番223目半勝ち。

ここまで来ると、ハム将棋に裸玉で勝つみたいな趣がありますね…(笑)

[以後の関連記事] : COSUMIに最大何目差で勝つことができるか? その2

タモリ倶楽部がCOSUMIにたくさんの人を連れてきてくれたかもしれない

COSUMIで使っているさくらの専用サーバには、データ転送量をグラフにして見せてくれるサービスがあります。今日、たまたまそれを見ていたら、昨日(日付変わっていたので正確には今日だけど)の深夜に突発的に転送量が増えていた時間帯がありました。

このグラフはサーバ全体のデータ転送量のグラフなので、必ずしもウェブサーバへのアクセスによるものではありません。例えば、自分が大きなファイルをアップロードしたりダウンロードしたりすると、当然こんなものではないぐらい跳ね上がります。ですが、昨日のその時間は暖かい布団の中で夢の中… 自分では何もしていません。また、誰かがどこかでCOSUMIのことを紹介してくれたので、一気にアクセスが増えたってこともありえますが、真夜中のことなのでちょっと考えにくい。うーん、普段から全くないことでもないので、こういうのを気にしすぎてもあれなんですが、気持ち悪いので一応サーバのログなどを調べておいた方がいいかなあなんて考えている時に、ふとあることを思い出しました。

「タモリ倶楽部で囲碁の話題をやるって言ってたけど…」

そうなんです! 昨日のタモリ倶楽部は「アンガールズ田中の恋人、友達募集!!ただし囲碁のできる方」という回で、もろに囲碁の話だったんです! 中島美絵子先生が出演されて、例の「碁的」の話なんかもあったらしい… 放送時間は0:20~0:50。上のグラフと比べてみてください。どんぴしゃですね。

ということで、普段は全くないような種類のアクセスがあったようなのでもう少し調べてみます。先ほどのグラフにロードアベレージの推移を重ねてみました。

全体に見られる転送量とロードアベレージとの相関が、例の時間帯では大幅に弱くなっていて、明らかに通常とは異質のアクセスがあったことがうかがえます。COSUMIでは、「ロードアベレージが高い」イコール「囲碁対局ゲームがたくさん行われている」なので(本当にほとんど完全にイコールです)、例の時間帯はウェブサイトには来たけど、囲碁対局ゲームはやらなかった人が多かったと言えそうです(テレビを見てた? 囲碁のやり方がわからない?)。それから、他の時間帯と比べると、Outbound/Inbound比がやや大きいのは、ブラウザのキャッシュにCOSUMIのファイルが無かったからという可能性があります(初めて来てくれた人が多かった?)。ちなみに、昼の12:40ぐらいにあるピークの時は、100面打ちから150面打ちぐらいになっていると推定しますが(昨日はちょっと多かった)、そことの比較で、いかに深夜のこのアクセスがすごいか分かっていただけるでしょうか?(ていうか、ウェブサーバのログ解析してもっとましなデータ持って来いって怒られそうですね。でも、めんどくさいのでやりません(笑))

私は、テレビの将来はかなり暗いと常々思ってますが、直接関係がある訳でもないウェブサイトに、深夜にも関わらずこんなにもたくさんの人を連れてくるこの底力は本当にすごいなと驚きました。タモリ倶楽部は、放送日が地域によってかなりばらばららしいので、うまくいけば、第2波、第3波も観測できるかもしれません。

[追記 2011/1/9]
ウェブな数字を出さないで、話をこのまま終わらすのはあまりにいいかげんなので、1時間単位のデータしか見れないのがなんですが、Google Analyticsのページビューのグラフも貼っておきます。1つ目のが1月5日~1月7日の合計、2つ目のが1月8日分です。放送時間だったのは、2つ目の一番頭の部分です。


明らかにボリュームがありますし、「新規ユーザー」と「リピーター」の逆転も見られます。放送時間終了後も、この逆転がしばらく続いているのも分かりますね。

ということで、この時間ウェブサイトへ多くのアクセスがあったのは間違いありません。後はこれがタモリ倶楽部の影響だったかどうかですが、”tamoriclub”なんてリファラが付いてくるわけでもないので(笑)、正確に調べるのはなかなか難しいですね。上で、放送日が地域によってかなりばらばらだと書きましたが、こちらのサイトを見た感じでは、主だったものは1月22日(正確には23日。放送時間は地域で微妙に違う)の岐阜・愛知・三重・長崎・沖縄と、1月29日(同じく正確には30日)の滋賀・京都・奈良・大阪・兵庫・和歌山・徳島の2日だと思われるので(注意! 放送日が正しいかどうかは私は全く保証できません)、この2日についてはちゃんと調べて事後報告したいと思います。

[追記 2011/1/9]
先ほどページビューのグラフを貼ってた時に、1月8日分の23時台に違和感を感じていたんですが、理由が分かったような気がします。またも似たような話ですが、その時間帯のNHKのトップランナーって番組に、井山裕太名人が出演されていたんだそうです! たまたまかそれともこのブログ記事を書いたからかな、なんて思っていたのですが違いました。っていうかテレビってやっぱりすごいですね。ただ、日本棋院のウェブサイトとかならともかく、COSUMIなんかがこんなに影響を受けるってのが不思議な感じもあるんですが…

とりあえず細かい動きが分かるので、また転送量のグラフを貼っておきます。ページビューのグラフは明日にでもまた貼ります。

書かなくても大体分かりそうな感じですが(笑)、放送時間は23:30~23:59でした。その前の時間帯に軽く谷を感じますが、これは「今から井山君がテレビに出るのに、COSUMIなんかで遊んでいる場合じゃない!」ってことでしょうか? ちょっと面白いですね。

一応、過去の金曜日、土曜日の夜に似たような傾向が無いか調べましたが、はっきり言って皆無でした。明らかにこの2日間は特別だったと思います。

[追記 2011/1/10]
1月9日分のページビューのグラフです。上の1月8日分からの続きにあたります。

トップランナーの放送終了直後の0時台からがなかなかすごいです。「新規ユーザー」と「リピーター」の逆転もまた見られますが、今のCOSUMIではこれは相当珍しい現象です。

[追記 2011/1/22]
タモリ倶楽部の関西圏の放送は、17日の夜だったようです。放送時間は1:42~2:12かな? ということで1月18日分のページビューのグラフです。

かすかに2時台に波を感じますが、首都圏での放送時とは全く様子が違いますね。

[追記 2011/2/7]
タモリ倶楽部の名古屋での放送は、2月5日の夜だったようです(遅すぎ!)。放送時間は0:55~1:24。ということで2月6日分のページビューのグラフです。

関西圏での放送時に同じく、かすかに1時台と2時台に波を感じますが…

GNU Go 3.9.1

GNU Goの最新開発版、バージョン3.9.1がリリースされています。

GNU Go – GNU Project – Free Software Foundation (FSF)
http://www.gnu.org/software/gnugo/

ということで、バージョン3.8と対戦させてみました。

GNU Goは、両方のバージョンとも自分でコンパイルしました。使用したPCのOSはWindows XP、CPUはAthlon X2 BE-2400。それぞれの碁盤サイズごとに、先後を換えて100局ずつ計200局対戦させました。コミは6目半。同じような手順の対局ばかりになってもあれなんで、対局開始局面はGoGuiに入っているテスト用のを使っています。カッコ内は、一局あたりの平均消費時間です。ちょっとうっかりして、付けなくてもいいのに--never-resignオプションを付けてテストしてしまいましたが、結果にはほとんど関係ないと思います。

9路盤 GNU Go 3.9.1(8.2sec) 105勝 – 95勝 GNU Go 3.8(8.4sec)
19路盤 GNU Go 3.9.1(140.6sec) 90勝 – 110勝 GNU Go 3.8(141.9sec)

特に強くはなっていないようです。それより、再現条件がよく分からないんですが、レベルを下げるとたまにエラーを出して死ぬのが… このバージョンは、COSUMIでは使いません。

[追記 2011/2/7]
レベルを下げるとおかしくなるのは、たぶんこれですね。パッチ当てたら直りました。

定石アップデート 9路盤-28405局面 11路盤-15460局面 13路盤-17431局面 15路盤-13397局面

COSUMIの定石をアップデートしました。今現在、9路盤が28405局面分、11路盤が15460局面分、13路盤が17431局面分、15路盤が13397局面分です。

オンライン囲碁ゲーム COSUMI
http://www.cosumi.net/

いつも思うのですが、大変なのでもうやりたくない…(笑) それより、こっちをできるだけ早く何とかしたいと思います。ただ、GNU Goがありえない負け方をしてくれるので、負けた碁を全部修正するのはもうできそうもありません。とりあえず、変化の本線をきっちり調べていきます。

COSUMIにツイートボタンを付けてみました

COSUMIの対局リプレイページに、先日公開された公式のツイートボタンを付けてみました。

オンライン囲碁ゲーム COSUMI
http://www.cosumi.net/

「初心者が負けた対局をつぶやくと、優しい有段者が教えてくれる」って感じの流れが生まれたらいいなと思ってます。Twitterのアカウントをお持ちの方は、ぜひ活用してみてください。

5路盤

COSUMIで5路盤の対局もできるようにしました。

オンライン囲碁ゲーム COSUMI
http://www.cosumi.net/

黒白が共に最善を尽くして生き生きにならない5路盤というのは、囲碁は相手を全滅させるゲームだと勘違いしかねないので、入門者にとってあまり良いものではないと、今までずっと思っていました。ところが、COSUMIの6路盤の対局の棋譜を見ていると、COSUMIが相手を全滅させている棋譜が山ほどあるんですね。あまりしっかりと調べたわけではないですが、1回2回ではどころではなく、10回20回と連続で全滅させられている人だってかなりの数居そうです(完全な初心者には、そんなのぜんぜん仕方のないことですが…)。なので、相手を全滅させるゲームだと勘違いしかねないのは6路盤から始めても同じことのような気がするし、どうせならちょっとでも早く人生最初の勝利を挙げてもらいたいので、今回COSUMIに5路盤の対局ゲームを追加することにしました。本当にこれで良かったのか、自信があるわけではないですが…

明らかにおかしな手を打ったり、諦めが異常に早かったりする時がありますが、ある程度は近いうちに修正しますのでちょっと待っててください。

COSUMIのサーバを交換しました(2回目)

[以前の関連記事] : COSUMIのサーバを交換します

アクセス量が限界に近づいてきたので、COSUMIのサーバを新しいのに交換しました。

オンライン囲碁ゲーム COSUMI
http://www.cosumi.net/

交換したサーバは、さくらのアドバンスドの一番高いのです。前に使っていたさくらのアドバンスドの一番安いのと比較して、4倍弱ほどCOSUMI的に速そうです。ここ最近、止まっている時間の長かったCOSUMI APIも、とりあえず今なら24時間いつでも動くと思います(まあ、言ってる間にまたアクセスが増えそうなんですが…(笑))。

また、このタイミングでかなりの量のコードを書き直しました。新たなバグを仕込んだ可能性も高いですが、ごく一部の環境では、今までより動作が大幅に安定したんじゃないかなと思います。それから、定石も少しアップデートしました。

COSUMIはちょうど2年前の今頃始めたサイトなんですが、当時と今とでは比較にならないほど全体的に良くなりました。棋力も今が一番だと思います。ぜひ一度遊んでみてください。

祝10万敗

COSUMIが10万敗を達成しました! たくさん負けたなあと喜んでおります(笑)。

オンライン囲碁ゲーム COSUMI
http://www.cosumi.net/

次の目標は、志を大きく100万敗です。ちなみに、ハム将棋は今現在、平手だけで(!)2,849,752敗だそうです。うーん、「ハム囲碁」への道のりは遠い…

定石アップデート 9路盤-26383局面 11路盤-12327局面 13路盤-15919局面 15路盤-8017局面

COSUMIの定石をアップデートしました。今現在、9路盤が26383局面分、11路盤が12327局面分、13路盤が15919局面分、15路盤が8017局面分です。

オンライン囲碁ゲーム COSUMI
http://www.cosumi.net/

こっちの方の定石もずっと直し続けていますので、よかったら遊んでみてください。ばかな負け方は、かなり少なくなってきています。ただ、COSUMIが負けたけどどの手が悪かったのか私の棋力ではわからない棋譜が手元に残り始めてますので、そろそろ他人様にすがりたい感じ… また今度、このブログの記事にまとめるので、碁の強い方に教えていただけるとありがたいです。

今回は、定石以外もいろいろ微調整してみました。全体的に良くなったんじゃないでしょうか?

それから、最近アクセスがめちゃくちゃ増えてきました。またサーバを替えないといけないんですが、来月出るらしいWestmere-EPことXeon 5600番台が2発載ったサーバ、良いタイミングでさくらから出てきたりしないですかね? とにかく、安くてCPUが速いサーバが欲しいです。

Fuego 0.4.1リリース

かなりいまさらな話ですが、去年の年末にFuegoの新しいバージョン、0.4.1がリリースされています。

Fuego
http://fuego.sourceforge.net/

Windows用のバイナリが手に入ったら、またテストしてみたいと思いますが、以前のバージョンよりもいくらか強くなっているようです。

COSUMIでも、この新しいバージョンに変更済みです。

[追記 2010/4/4]
バージョン0.4.1と0.4を、13路盤で

uct_param_player max_games 10000

として、先後を換えて50局ずつ計100局対戦させてみました。

結果は、

Fuego 0.4.1 55勝 – 45勝 Fuego 0.4

となりました。実際に強くなっているのは間違いないらしいのですが、この結果はかなり微妙… 消費時間はほとんど変わりませんでした。

目隠し碁

COSUMIに「目隠し碁」の対局ゲームを作ってみました。

目隠し碁
http://www.cosumi.net/blindfold.html

目隠し碁というのは、その言葉どおり目隠しして行う囲碁の対局のこと。NHKの番組でやっている脳内将棋の囲碁版と言えば、分かる人には分かってもらえると思います。チェスでもblindfold chessと呼ばれ、古くからあったみたい。みんな考えることがいっしょですね。

今回のゲームは着手を目で確認するので、本当に目隠しして打つ碁よりは少し楽かなと思いますが、それでも相当難しいです。私も何度かやってみましたが、9路盤ならなんとかなるだろうと思っていたのに、それすらままならない…(泣) 同じ9×9でも、同じ手数なら将棋の方がだいぶ簡単だと思いました。

自信のある方は、ぜひ一度遊んでみてください。挑戦、お待ちしています!

15路盤

COSUMIで15路盤の対局もできるようにしました。

オンライン囲碁ゲーム COSUMI
http://www.cosumi.net/

いろいろ考えてこうしました。本当にいろいろ考えて… 強さは期待しないでください。前も同じことを書いたのですが(笑)、これより大きな碁盤サイズに対応することはたぶんないです。

悪手を指摘してくれる機能を付けてみました

COSUMIの6路盤~8路盤の対局リプレイ時に、どの手が悪手だったか、代わりにどこに打てば良かったかを表示するようにしてみました。

オンライン囲碁ゲーム COSUMI
http://www.cosumi.net/

要するに、こんな感じ。初心者の方に喜んでもらえそうな、かなり良い機能だとは思うのですが、要チューニングではあります。下手すると、左右対称の局面で「右に打つな、左に打て」とか言い出しかねない…(笑) 初手から最後の手まで、きっちりと調べているわけでもありません。あまり信用し過ぎないようにしてください。

COSUMIのサーバを交換します

たいへんありがたいことなんですが、ここ最近COSUMIへのアクセスが急激に増え、サーバの負荷が高い状態が続いています。ということで、来月中をめどにサーバをもっと速いのに交換したいと思います。

オンライン囲碁ゲーム COSUMI
http://www.cosumi.net/

ひどい時には、GNU GoとFuegoのプロセスが10個以上同時に走っているのですが、これは、10面打ちをしている状態ということではなく、15面打ちだか20面打ちだかしていて、COSUMIの手番になっている対局が10局あるということでして、うーん、なんともオソロシイ…

しばらくの間、時間帯によっては遅かったり弱かったりすると思いますが、まったりとお楽しみください(笑)。

[以後の関連記事] : COSUMIのサーバを交換しました(2回目)

[追記 2009/10/16]
交換しました。今度のサーバは、さくらのアドバンスドの一番安いやつです。以前のサーバと比べて8倍くらいは処理能力があるんじゃないかと思うのですが、ここ最近のアクセス数の伸びは、本当に本当に凄まじく、これもいつまで持つやら… 先月1ヶ月の間に、COSUMIが考えた総手数(COSUMIの手だけ。遊んでくれているユーザの手は含まず)は、なんと1,000,000手を超えてたんですよ! 平均すると、33,333手/日、1,389手/時間、23.1手/分、0.386手/秒。ピーク時はこんなものではないですから、GNU Goはどんだけ軽いんだって話ですよね。

でも、今月はもっと凄そうです…(泣)

でも、調子に乗ってFuegoの一手あたりのPlayout数を少し増やしました!(笑) ちょっと怪しそうだったので… それから定石もちょっぴり追加しました。

[追記 2009/11/11]
なにかいろいろと勘違いしていたようで、処理能力は8倍も上がっていません。4倍ちょっとぐらいかな? 困りましたね…

COSUMIでFuegoをテスト中…

現在、COSUMIでFuegoの使用をテストしています。正直、何も問題が起こらないとは思えないのですが、もし、うまく行きそうならこのまま継続してFuegoを使い続ける予定です。

オンライン囲碁ゲーム COSUMI
http://www.cosumi.net/

Fuegoを使うと言っても、基本は今までどおりGNU Goで、特定の場合のみFuegoに考えさせるだけです。どのような条件の時にFuegoを使うかは、今現在、詰めているところです。

しかし、9路盤なんかは相当強くなってるんじゃないでしょうか? Fuegoを使うのならば、サーバを新しいのにしたくなりますねえ…

[追記]
特に何も問題は発生しないようなので、このままFuegoを使い続けようと思います。どういう場合にGNU GoではなくFuegoを使うかの大まかな条件は、

  • サーバの負荷がそれほど高くない時で
  • 9路盤~13路盤で
  • 最序盤ではなくて
  • 終盤でもなくて
  • 形勢がどちらかに大きく傾いていない時

って感じです。ただ、大変ありがたいことに、ここ最近アクセスがだいぶ増えてきたので、サーバ負荷は常にけっこう高めなんですよね…(笑) そろそろサーバを替えなきゃだめかな?

定石アップデート 9路盤-23385局面 11路盤-10051局面 13路盤-10881局面

COSUMIの定石をアップデートしました。今現在、9路盤が23385局面分、11路盤が10051局面分、13路盤が10881局面分です。

オンライン囲碁ゲーム COSUMI
http://www.cosumi.net/

合わせて、対局結果の判定が不正確になりやすかった不具合を修正しました(これは気づいてほんと良かった…)。GNU Goも間違う時はあるので、どうがんばっても100%正確ってわけにはいかないのですが、少なくとも以前よりはましになっているはずです。

定石アップデート 9路盤-20996局面 11路盤-8628局面 13路盤-7672局面

COSUMIの定石をアップデートしました。今現在、9路盤が20996局面分、11路盤が8628局面分、13路盤が7672局面分です。

オンライン囲碁ゲーム COSUMI
http://www.cosumi.net/

9路(以下)はだいぶましになってきたと思うんですが、11路と13路はもうこれ以上がんばっても無駄かも…

6路盤・8路盤

COSUMIで6路盤と8路盤の対局もできるようにしました。

オンライン囲碁ゲーム COSUMI
http://www.cosumi.net/

うーん、これはもっと早くやっておけば良かった… ついでに、GNU Goを新しく出たばかりのバージョン3.8に変更して、定石も少し追加しました。

定石アップデート 9路盤-19788局面 11路盤-7828局面 13路盤-4144局面

COSUMIの定石をアップデートしました。今現在、9路盤が19788局面分、11路盤が7828局面分、13路盤が4144局面分です。

オンライン囲碁ゲーム COSUMI
http://www.cosumi.net/

ふー、けっこう大変…(笑)

定石アップデート 9路盤-17984局面 11路盤-7514局面 13路盤-3656局面

COSUMIの定石をアップデートしました。今現在、9路盤が17984局面分、11路盤が7514局面分、13路盤が3656局面分です。

オンライン囲碁 COSUMI
http://www.cosumi.net/

COSUMIが負けた棋譜を数百局並べましたが、うーんGNU Goってこんなに弱かったっけ?(笑) まあ、負けてる対局ばかり見ているからかもしれませんが、9路以下はともかく、それより大きな碁盤サイズでは、いくら定石を用意しても後ろのソフトががんばってくれないとどうしようもありません。もうちょびっと強くなってくれるとうれしいんですが…

7路盤スペシャルバージョン

囲碁は5路盤までコンピュータで完全に解析されていますが、それより大きなサイズでは、7路盤までがある程度しっかりと人力で調べられていて、お互いが最善を尽くすと先番9目勝ちだと言われています。ということで、それが本当に正しいのか確かめるためにこんなものを作ってみました。

7路盤スペシャルバージョン
http://www.cosumi.net/seven.html

ただのコミ9目の7路盤ですが、このページでCOSUMIが負けた棋譜は全て保存しています。そして、その棋譜に後から目を通して、同じ間違いをしないように正しい手を定石に追加していきたいと思います。時間は掛かると思いますが、いつか(持碁になる時はあっても)負けなくなるでしょう。可能性はかなり低いですが、もしかしたら新しい妙手が見つかるかもしれません。最終的に、ある程度ちゃんとした定石が出来上がれば、SGFファイルにして公開したいと思います。7路といっても想像以上に難解で、自分の棋力が足りるのかがちょっと心配ですが…

7路盤については、こちらのページがとても詳しいです。

七路盤の研究
http://tokyo.cool.ne.jp/keioigo/7ro/

だいたいこれで、COSUMIでやってみたかったことは全て終わりました。後は、時間のある時に少しずつ定石を増やして、強く・面白くしていきたいと思います。

[以後の関連記事] : 7路盤スペシャルバージョンの定石を公開します

さくら専用サーバエントリープランの使用感

COSUMIは、さくらの専用サーバエントリープランで現在運営しています。このサーバを借り始めてから半年近く経ったので、このあたりで使ってみた感想を記事にしておきたいと思います。と言っても、ごく単純なウェブサーバとして使っているだけなので、高度な内容の話はなにもありません。

専用サーバ|エントリー:月額7800円ではじめられるさくらの専用レンタルサーバ
http://server.sakura.ad.jp/dedicated/entry/

ハードウェアはCeleron 215、メモリ 1GB、HDD 80GBとかなりミニマムなスペックです(なんて言ったら贅沢か(笑))。Celeron 215ってのが調べてもあまりよく分かりませんが、一応こんな感じのCPUです。

$ cat /proc/cpuinfo
processor	: 0
vendor_id	: GenuineIntel
cpu family	: 6
model		: 14
model name	: Intel(R) Celeron(R) CPU          215  @ 1.33GHz
stepping	: 8
cpu MHz		: 1333.439
cache size	: 512 KB
fdiv_bug	: no
hlt_bug		: no
f00f_bug	: no
coma_bug	: no
fpu		: yes
fpu_exception	: yes
cpuid level	: 10
wp		: yes
flags		: fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat clflush
 dts acpi mmx fxsr sse sse2 ss tm pbe nx constant_tsc up pni monitor tm2 xtpr
bogomips	: 2667.65

なにを見てそう勘違いしたのか、借りる前はデュアルコアのCPUだと思ってたのですが、ではないです(泣)。ただしこちらからダウンロードしてきたSuperπでベンチとってみると、そこそこ速そう。

Start of PI calculation up to 1048576 decimal digits
 End of initialization. Time=       0.651 Sec.
 I= 1 L=       0        Time=       2.072 Sec.
 I= 2 L=       0        Time=       2.379 Sec.
 I= 3 L=       1        Time=       2.381 Sec.
 I= 4 L=       2        Time=       2.378 Sec.
 I= 5 L=       5        Time=       2.383 Sec.
 I= 6 L=      10        Time=       2.377 Sec.
 I= 7 L=      21        Time=       2.381 Sec.
 I= 8 L=      43        Time=       2.377 Sec.
 I= 9 L=      87        Time=       2.380 Sec.
 I=10 L=     174        Time=       2.377 Sec.
 I=11 L=     349        Time=       2.380 Sec.
 I=12 L=     698        Time=       2.376 Sec.
 I=13 L=    1396        Time=       2.379 Sec.
 I=14 L=    2794        Time=       2.374 Sec.
 I=15 L=    5588        Time=       2.371 Sec.
 I=16 L=   11176        Time=       2.358 Sec.
 I=17 L=   22353        Time=       2.324 Sec.
 I=18 L=   44707        Time=       2.266 Sec.
 I=19 L=   89415        Time=       2.104 Sec.
 End of main loop
 End of calculation.    Time=      46.937 Sec.
 End of data output.    Time=       0.195 Sec.
 Total calculation(I/O) time=      47.132(       1.321) Sec.

COSUMIはCPUがボトルネックなので、このあたりの数字が結構気になるのですが、とりあえずOKかな? ただ、今現在さくらのサイトでは、CPUはIntel CeleronまたはIntel Atomってなっていますので注意してください。Atomにもいろいろ種類があると思うのですが、どうなんでしょうか?

OSはCentOS 5のみです。上位のプランだともっとたくさんの種類の中から選べるのですが、個人的には他の選択肢があったとしてもCentOS 5を選ぶと思うので、別に構いません。

OSは選択できませんが、パッケージ構成は、「標準構成」と「最小構成」の二つから選べます。うちは最小構成なんですが、今さくらのサイト見てみると、最初はウェブサーバも入ってなかったんですね。自分で入れた記憶がちょっと無いんですが…(笑) 参考までに今現在こんな感じ。

$ rpm -qa | wc -l
478

自分で入れたパッケージはそんなにたくさんはないはずです。

それから、標準サービスとしてトラフィックレポートを見ることができるのがGood! サーバでの設定等は一切必要ありません。

専用サーバ|トラフィックレポート – さくらインターネット
http://server.sakura.ad.jp/dedicated/service/traffic.html

全体的な感想としてはかなり満足です。とりあえず今までのところ安定して動いてますし、サーバのレスポンスも悪くないと思うので。価格もまあ妥当ではないでしょうか? 初期費用が0っていうのは、気軽に始められるのですごくいいです! だめならだめでどこかに乗り換えればいいだけですしね。月額10,000円以下の専用サーバを探している時は、候補に入れてみてはいかがでしょうか?

[追記]
他の方が書かれたこちらの記事も参考にしてみてください。

さくらの専用サーバーエントリープランが良かった6つの理由(+嫌な点3つ)
http://p0t.jp/archives/2008/10/post-35.html

クオリティの高い背景画像がダウンロードできる ava7 patterns

さまざまなテイストのハイクオリティな背景画像がダウンロードできるサイトです。現時点で500種類以上公開されてます。

ava7 patterns | free seamless background patterns
http://patterns.ava7.com/

使用条件は、「ウェブサイトで使う時はリンクしてくれるとうれしいけど、絶対必要ってわけではないよ。でも、売ったり配布したりするのはダメ!」みたいな感じ。さっそく、COSUMIで使わせてもらうことにしましたが、すごくいいです!(色合いは少し変えちゃってますが… 改変はOKだよね?) ずいぶん品が良くなりました。

対局リプレイ

COSUMIで、対局後に対局のリプレイを見ることができるようになりました。

オンライン囲碁 COSUMI
http://www.cosumi.net/

対局リプレイのURLはその対局固有のものになっていて、とりあえずブックマークに入れておいて後からゆっくり見たりすることができます。さらに、他の人に見てもらうこともできるので、友達にメールで送ったり、ブログに載せたりして見てもらうのもいいかもしれません。「そうは言うけど、URLがちょっと長すぎるよ!」って人は、TinyURLのようなURL短縮サービスでも使ってください。余談ですが、この手のサービスが最近ほんとたくさんあるんですね。セキュリティなんかが少し気になるところです。

主なURL短縮サービス14個の長所と短所(その1) | Web担当者Forum
http://web-tan.forum.impressrd.jp/e/2008/10/06/4134
主なURL短縮サービス14個の長所と短所(その2) | Web担当者Forum
http://web-tan.forum.impressrd.jp/e/2008/10/07/4135
主なURL短縮サービス14個の長所と短所(その3) | Web担当者Forum
http://web-tan.forum.impressrd.jp/e/2008/10/08/4136

話し戻って対局リプレイですが、URLのパラメータを変更することで、COSUMIで打った対局以外の棋譜のリプレイも見ることができるようになります。URLを見ればだいたいの意味は分かると思いますが、よければこちらも参考にしてみてください。13路盤までしか対応していないのがなんですが、自由に使っていただいてかまいません。

[追記]
対局リプレイを19路盤にも対応させました。さらに、手持ちのSGF形式の棋譜をこの機能を使って再生できるように、簡単なウェブフォームも用意しました。棋譜を貼り付けて送信すると、その棋譜に応じたURLへリダイレクトします。何かの時に少しは便利かもしれません。

http://www.cosumi.net/sgf2replay.html

自前のSGFのパーサはあまり賢くないので、そこは大目に見てください(笑)。

13路盤

COSUMIで13路盤の対局もできるようにしました。

オンライン囲碁 COSUMI
http://www.cosumi.net/

定石はとりあえず3228局面分用意しました。時間がある時にまた追加します。併せて、COSUMI APIも13路盤まで対応しました。

これより大きな碁盤に対応することは、たぶんもうありません(笑)。

定石アップデート 9路盤-15676局面 11路盤-6862局面

COSUMIの定石をアップデートしました。今現在、9路盤が15676局面分、11路盤が6862局面分です。

オンライン囲碁 COSUMI
http://www.cosumi.net/

全部ではないですが、COSUMIが負けた棋譜をひとつひとつ並べて調べて、定石を追加・修正しました。これで少しはましになったかな? これからも、この方法で少しずつ改善させていくつもりです。

とっても囲碁なWeb APIを作ってみました

囲碁の棋譜を送るとその次の一手を考えて返すという、とっても囲碁なWeb APIを作ってみました。今現在のところ、9路盤と11路盤のみにしか対応してませんので使い道はかなり限られると思いますが、このWeb APIを利用した楽しい「なにか」を、だれかが作ってくれたらうれしいです。

囲碁Web API 「COSUMI API」
http://www.cosumi.net/api.html

このWeb APIは、あくまでサーバのリソースが余っていたら仕事するって感じなので、サーバが過負荷な状態の時は手を考えないでエラーレスポンスを返すようになっていますが、今現在ならほぼ24時間いつでも正常にレスポンスを返せると思います。こういうWeb APIは継続してサービスを提供し続けることがすごく大切だと思うので、約束は一切できませんが、できるだけ長い期間使えるようにがんばります!

「仕様がおかしい!」とか、「仕様どおりに動いてない!」とかがあればぜひ教えてください。それもできるだけがんばって直してみたいと思います。

[追記]
13路盤にも対応しました。

定石アップデート 9路盤-14148局面 11路盤-5246局面

COSUMIの定石をアップデートしました。今現在、9路盤が14148局面分、11路盤が5246局面分です。

オンライン囲碁 COSUMI
http://www.cosumi.net/

気力はあるんですが、棋力がそろそろ限界です…(笑) もう少し詰碁の勉強とかやらないとだめですね。

Flashは動き始めるまでにダウンロードが完了しているとは限らない

以前からたまに、COSUMIのオンライン対局のFlashが動かない時があってちょっと気持ち悪く思っていたのですが、ようやくその原因が分かりました! どうやら、自身のswfファイルのダウンロード完了を待たずして動き始めたFlashが、まだダウンロードできてない部分のデータを必要として問題が起こっていたようです(なので、ブラウザがそのswfファイルをキャッシュに持っている時は問題が出なかった)。うーん、Flashというのは、ファイルがすべてダウンロードされてから動き始めるわけではないんですね! 一度分かってしまえばごくごく単純なことなんですが、Flashは最近初めたばかりなので、このあたりの基本がなってませんでした…

ということで、今回はMovieClip.getBytesLoadedMovieClip.getBytesTotalを使って、自身のswfファイルのダウンロードが完了するまでは、メインの動作を始めないように直しました。たぶんこれで大丈夫だと思います。

回線の速度やブラウザの種類、それからPCのスペックなども関係してくると思うので、はっきりしたことはよく分かりませんが、今までどれくらいの確率で動かなかったのかを考えるとめちゃくちゃ恐ろしい…(笑)

11路盤

COSUMIで11路盤の対局もできるようにしました。

オンライン囲碁 COSUMI
http://www.cosumi.net/

このところ7路盤や9路盤ばかり見ていたので余計にそう感じるのですが、11路盤ってけっこう広いですねー 2路しか違わないのに、明らかに9路盤とは違う感覚が要求されるような気がします。なんだかもう、初手からしてどこに打っていいのかよく分からないような状態なんですが(笑)、とりあえず2590局面分の定石をなんとか用意しました。ついでに9路盤も定石を追加・整理して、こちらは今現在11352局面分です。GNU Goの11路盤はなんだかちょっとあやしい感じがあるので、できるだけ定石でごまかしてしまいたい(笑)。

シックでポップなフリーフォント Fontin

今日3つ目の記事は、Fontinというフォントです。COSUMI全体で多用させてもらっています。

Fontin :: a Free Quality Font from exljbris
http://www.josbuivenga.demon.nl/fontin.html

上品さとカジュアルさが同居した感じの、すてきなフォントですよね! 個人的にかなりお気に入りです。さらに、「Flashにも埋め込み可」という緩いライセンスがほんとありがたいです。

先のサイトでは、これ以外にもいくつかの非常にクオリティの高いフォントを公開されていますので、興味のある人はぜひチェックしてみてください。

xyzzy用のactionscript-mode

今日2つ目の記事は、xyzzy用のactionscript-modeです。これは特に説明は要りませんね!

ActionScript mode for xyzzy
http://shield.jp/~dseg/xyzzy/actionscript-mode/

機能の詳細はリンク先で調べてください。コードヒントが文字化けする場合は、こちらページの一番下を参照のこと。一応ActionScript 2.0までに対応って感じみたいですが、3.0でも重宝するんじゃないでしょうか?

余談ですが、Flash制作のためにFlash Basic 8を購入したのですが、今これを少し後悔しています。と言うのも、本当に買うべきだったのは、Flex Builder 3だったような気がしてならないんですよね… 気分が悪くなるので、Flex Builderでなにができるのかあまり調べていません(笑)。

効果音を作成するのに便利なソフトシンセ Beam2002

今日は、COSUMI制作時にお世話になったソフトなどを3つ記事にします。1つ目は、Flashで使う効果音を作るのに使用した、Beam2002というソフトウェアシンセサイザーです。かなり簡単にいろんな音が作り出せるので、これはけっこうおすすめです。

Beam2002 / Cycle of 5th
http://www.cycleof5th.com/products/beam2002/

次の3つの効果音を、このソフトで作ってみました。

石音
ボタンにマウスカーソルを乗せた時の音
ボタンをクリックした時の音

どうですか? なかなかいい感じでしょ! バリバリとか、ガラガラとか、ドスドスとか、もっと過激な音も、もちろん作成可能です。うーん、こういうソフトは、いじりだすと止まりません…(笑)

「オンライン囲碁 COSUMI」始めました

コンピュータと対局できるオンライン囲碁サイトを、GNU Goを使って作ってみました。かなり以前からやってみたかったのですが、これがなかなかたいへんで、ひとまず公開できて今は少しほっとしています。

オンライン囲碁 COSUMI
http://www.cosumi.net/

とりあえず今は、7路盤と9路盤が遊べます。初心者向けですね。基本はGNU Goなんですが、それとは別に独自に用意した定石からも手を探すので、対局ごとにいろいろな形になる分、普通にGNU Goと対局するよりは面白いかもしれません(たぶん、ちょっぴり攻撃的です)。ちなみに今現在、9路盤の定石が10908局面分入ってます(対称形を重複して数えてますので、実質的にはもっと少ないですが…)。

今後、「定石を充実させてもう少し強くすること」と「11路盤の対局ができるようにすること」の2つは、必ず実現したいと思います。他にもいくつかやってみたいことがあるんですが、自分のスキルの問題もあって(笑)、何ができて何ができないのかまだよく分かりません。とにかく、少しでも多くの人にこのサイトで囲碁を覚えてもらえればと思っています。気軽に遊んでみてください!

それから、英語のページも用意したんですが、英語がおかしかったら教えていただけると助かります。

それからそれから、7路盤や9路盤用のスペシャルGNU Goの作り方を知っていたら教えていただけるとすごーく助かります。board.hMIN_BOARDMAX_BOARDMAX_HANDICAPだけは変更したんですが(ちなみにこれは有意な差がありました)、他に何か無いでしょうか? ここはけっこう切実なんですが…