置かせ碁

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にたくさんの人を連れてきてくれたかもしれない

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だけは変更したんですが(ちなみにこれは有意な差がありました)、他に何か無いでしょうか? ここはけっこう切実なんですが…