JavaScriptな囲碁の棋譜ビューア WGo.js
このブログでは囲碁の棋譜ビューアとしてGoswfという、Flashのソフトを使っていたのですが、自分でiPadを使っている時にも当然見ることができなくて、さすがにそろそろまずいかなあと思っていました。ところが、じゃあJavaScriptなので何かないかと探しても、意外なことに適当なのがぜんぜん見つからないんですね(最初に探し始めたのは、1年ぐらい前だったような気がする…)。せいぜいちょっとオールドファッションなEidoGoぐらいで、これは9路、13路、19路以外はちゃんと対応していないみたいです。というわけで、時間は掛かりましたが、ようやく見つけたのが今回のWGo.jsです(正確には、WGo.jsを利用したWGo.js Playerで棋譜再生ができます)。
WGo.js – javascript library for game of go
http://wgo.waltheri.net/
SGF Player | WGo.js
http://wgo.waltheri.net/player
こんな感じで表示させることができます。
クリックしないと対局結果が表示されないのは気が利いていますし、コメントに座標が含まれていれば、その座標にマウスオーバーすると、その場所が画面に示されるのは、ちょっとおしゃれです。
以下、簡単に使い方の解説をします。
まず、ファイルをダウンロードしてきます。正式版では、パス(着手放棄)の扱いがおかしかったりするので、こちらから開発版を落としてきたほうが良いと思います(最新の開発版はこれはまたこれで、本当はできるはずの碁石の大きさの変更ができないような気がしますが…)。必要なファイルは、wgo/wgo.min.js、wgo/wgo.player.min.js、wgo/wgo.player.css、wgo/wood1.jpgだけです。単色の碁盤、もしくは自前の碁盤の画像を使う場合は、wood1.jpgも必要ありません。その場合は、後で説明するように、碁盤の設定をしてください。
次に、ファイルをサーバにアップロードして、headタグ内で、wgo.min.js、wgo.player.min.js、wgo.player.cssをロードします。
<script type="text/javascript" src="path/to/wgo.min.js"></script>
<script type="text/javascript" src="path/to/wgo.player.min.js"></script>
<link type="text/css" href="path/to/wgo.player.css" rel="stylesheet" />
CMSなどを利用する場合は、絶対パスの方が良いかもしれません。wood1.jpgはwgo.min.jsと同じところに置いておきます(もしくは、後で説明するように、パスを設定してください)。
最後に、ウェブサイトの棋譜ビューアを表示させたい所に、このように記述します。
<div
style="width:650px"
data-wgo="(;GM[1]FF[4]SZ[9];B[aa];W[bb];B[cc];W[dd];B[])"
>
Sorry, your browser doesn't support WGo.js.
</div>
外部ファイルを読み込むこともできます。
<div
style="width:650px"
data-wgo="path/to/sgf-file.sgf"
>
Sorry, your browser doesn't support WGo.js.
</div>
初手以外を初期局面としたい場合は、このように記述します。
<div
style="width:650px"
data-wgo="(;GM[1]FF[4]SZ[9];B[aa];W[bb];B[cc];W[dd];B[])"
data-wgo-move="3"
>
デフォルトでは、碁盤の画像はwgo.min.jsと同じ場所に置かれているwood1.jpgが使用されますが、それ以外の画像を使いたい場合は、このように記述します。
<div
style="width:650px"
data-wgo="(;GM[1]FF[4]SZ[9];B[aa];W[bb];B[cc];W[dd];B[])"
data-wgo-board="background:'path/to/image.png'"
>
Sorry, your browser doesn't support WGo.js.
</div>
碁盤を単色にすることもできます。
<div
style="width:650px"
data-wgo="(;GM[1]FF[4]SZ[9];B[aa];W[bb];B[cc];W[dd];B[])"
data-wgo-board="background:'#bbccbb'"
>
Sorry, your browser doesn't support WGo.js.
</div>
スタイルシートのwidthプロパティで、表示サイズを変更することができます。ただし、レイアウトも変わってしまう時があります(ちゃんと調べてないので、ちょっとよく分かっていません)。
これ以外にも、WGo.jsはかなりいろいろとカスタマイズすることができ、この手のソフトに求められる機能は、ほぼ網羅されている気がします。詳しくは本家サイトで調べてみてください。
WGo.jsは最低でも向こう5年、もしかすると向こう10年、問題なく使い続けることができるソフトだと思います。廃墟(笑)のようになったJavaを使ったウェブサイトとか、もう見たくありません(作られた時はものすごい労力がかかったでしょうに…)。今このタイミングで、Java、Flash、EidoGoからWGo.jsにみんなで移行しませんか?
はじめまして、にしもとと申します。
javascriptで棋譜再現ソフト、いいですね。
今sgf作成機能(自分で編集して、sgfをエクスポートする機能)がWGo内に無いかどうかを調べているのですが、そのような機能ご存知ですか?
また、WGo以外でもWeb経由でSGFを作成できるファイルがないかな、と調べているのですがないでしょうか。
にしもと - 2016/03/17 12:14
見落としていたら申し訳ありませんが、WGo.jsではできないと思います。
使ったことはありませんが、
https://github.com/yewang/besogo
とか
https://github.com/charlesbrandt/go_ginkgo
などはどうでしょうか?
kingfisher - 2016/03/18 22:36
そのあと調べていたのですが、data-wgo-onkifuload属性でHTML上に表示することはできるっぽいです。
http://wgo.waltheri.net/player
besogoやgo_ginkgoはよさそうですね、使ってみます!!
ありがとうございます!!
にしもと - 2016/03/20 16:04
便利に使わせて頂いています。javaアップレットから変換中。助かっています。 質問です。コメント欄のサイズを一行表示にしたいのですが、方法を教えていただけませんか? ありがとうございます。
手嶋利三郎 - 2020/10/27 10:27
「一行表示」というのが正確にどういう意味なのか少し分かりかねますが、
style=”width:650px”
の部分を、少し数字を小さくして
style=”width:640px”
とかにすると、全体が縦長のレイアウトになり、その関係でコメント欄は横長に表示されます。
kingfisher - 2020/11/02 09:09
HTMLで左側にVIEWERを表示、右側の棋譜リストからマウスでドラックし、盤面にドロップして読み込めるソフトご存知でしたらご教示願いたいのですが。
PocketgobanやSabakiなど.exe fileがhtmlに取りこめればよいのですが。 例えば、下記のようなページを作りたいのですが。
http://kyoto.g.dgdg.jp/Go/GameRecord.html
data - 2020/12/09 13:21
申し訳ありませんが、ちょっと思いつきません。
そういったものは、ご自身で全くコード書かずにっていうのは、少し難しいかもしれませんね。
kingfisher - 2020/12/09 22:17
初めまして、碁盤Web公開に挑戦している初心者です。
棋院エディタで作成したsgfファイルをWtgoban.exeにドラッグしてファイルから「名前を付けて保存」で
ファイルの種類をJavascript用Htmlにして保存するのですが碁盤がが表示できません。
保存するとHtmlと同名のJsが作成されますが、Jsの使い方がわかりません。
ソースを見ても碁盤表示の棋譜が見当たりません。ご教授のほどよろしくお願いします。
はるか - 2021/01/28 16:16
すいか
はるか - 2021/01/31 10:54
申し訳ありませんが、WtGobanというソフトは使ったことがないのでよくわかりません。
kingfisher - 2021/02/04 23:44
スマホで棋譜再生したいのですが、サンプルがあれば教えていただけませんか?
15kitayama - 2021/04/22 19:01
動かない環境もあるのかもしれませんが、ほとんどの場合、スマホでも特に何も問題ないのではないでしょうか?
とりあえず私のiPhone 8では、このブログ記事内のは問題なく動きます。
kingfisher - 2021/04/24 21:46