JavaScriptによる囲碁の棋譜再生

チェスがあるなら囲碁もあるだろうと探してみたが、多くはJAVA Appletであり、JavaScriptは少なかった。いくつか試してみたのだが、チェスのPGNViewerのように洗練されてない。表示に関してもだが、実装についても。とある新聞社などは、棋譜再生のページ毎に、JavaScriptコードが全部埋め込んであったりする。 😯 いや、ソースコードを研究するには便利なんだが。 :mrgreen:

という状況なので、WordPress用のプラグインなど望むべくもない。うーむ、勉強を兼ねて作ってみるか?いやいや、そんな暇がどこにあろうか。 👿

気が付いたらイマーゴ,あと一週間ですよ!

ずっと先だと思って油断していたら,今度の日曜日に迫っていた千駄木イマーゴ。今回はオルガンマニア祭り :mrgreen: をやろうということで,ワタシもSan Juan Sunsetを弾くことになっているのだが。さっきちょっと弾いてみたけど全然ダメ。orz… 😳 😯 わぁぁ〜ん,どうしよう。

このところロビンちゃんの耳コピにいそしんでいたのだが,アドリブの所であえなく挫折。What’s Going Onもレジストその他の問題があり,とても弾けないし。

PGNViewerメモ(1)

PGNとはPortable Game Notationの略で,チェスの棋譜を記録する一般的な記法。PGNViewerはこれを解析して,JavaScriptを用いて棋譜再生を実現している。WordPress用のプラグイン pgnviewer.php は次のようなHTMLを生成して制御をJavaScriptプログラム jsPgnViewer.js に任せる。



適当に書き直した所もあるが,基本的には,PGNはid付きのdivブロックで囲むことにより JavaScript に渡されるようだ。このブロックはCSSにより表示されないよう設定されている。上の例では id=”9999″ なので,JavaScriptがこれを読めるように,Board(9999, options) と書かれている。JavaScriptはこのようにid付きのブロックの内容にアクセスできる。Board関数はもう一つの引数をもっているが,ここでは駒の画像が置いてあるURLをimagePrefixという名前でJavaScriptに渡している。optionsという引数はこのように連想配列(ハッシュ)になっていて,必要な情報を簡単に渡すことができる。

ネットバンキングの第二、第三暗証

先日申し込んでいたネットバンキングであるが、銀行から手引き書と共に、第2暗証の台紙(?)と第3暗証のカードが届いた。第2暗証はただの文字列であるが、第3暗証はマトリックス(行列)に数字が書かれている。振り込みなどの際には、その度ごとに、(i,j)成分を入力せよ、とか言われるのであろうか。念の入ったことである。それにしては、ログインは第1暗証のみでできるのは、セキュリティが緩くはないのだろうか。

惨敗記

さてさて、改造したチェス・プラグインの試運転である。携帯電話Nokia N73(SoftBank 705NK)上のChess Geniusとの一戦。まあ、いつも負けているのだが、これは正に惨敗。というか、攻めることばかり考えていて、自陣が詰みになっているのをうっかりしたというお粗末。それは別にしても、シシリアン・ディフェンス、特にナイドルフ・バリエーションの黒番は難しいなあと痛感する。

JavaScript事始め

実は、JavaScriptを勉強しようと思ったきっかけは、WordPressでチェスの棋譜を再生するPlugInであった。PGNViewerというのがそれである。運用例はPGNViewerのサンプルページで見ることができる。

素晴らしいプラグインであるが、画像がいささかショボイことは否めない。サンプルページのコメントを読んでいくと、これを改良した人が居るらしい。画像だけで実際に稼働しているページはないのだが、この位の改造なら自分でもできそうだと思ったのが身の程知らずというか、あさはかであった。 :mrgreen:

とりあえず、必要な画像と元々のプラグインのソースコードをダウンロードし、解読開始。pgnviewer.js というJavaScriptプログラムがほとんどの作業を行っているのだが、2500行ほどの規模なのである。もっとも、PGNの解析部分と差し手の表示部分は完全に分離されているので、案外と読みやすい。そうではあるが、それでもさすがに苦労した。試行錯誤を経て、駒の画像と思しき部分を変更し、さらに背景色を設定する部分を背景画像に差し替えることでほぼ目的を達成した。これを通して、JavaScriptの文法やオブジェクト処理についても、基本的な事柄を学んだ。もっとも細部まで完全に理解しているわけではなく山勘で改造しているので、多分まずい点があるとは思う。さし当たっては無事に稼働している。

JavaScript初心者としてはまずまずのスタートだと思うが、一つ困ったことがある。実際のHTML&CSS出力がどうなっているのか分からないので、デバッグに困るのだ。何かツールがあると良いのだが。

今時のプログラム言語

久し振りにジュンク堂に寄って、コンピュータのフロアに行く。目的はJavaScriptの教科書ないし入門書なのであるが、ついでにあちこち眺める。相変わらずCは一定の領土を確保しているが、我が母国語であるPascalは「その他の言語」としてLispやHaskellなどのマイナー言語たち(いや、Lispをマイナーと言っては申し訳ないが)と一緒に小さくなっている。うーむ、悲しい 🙁

こういう古典的な言語ではなく、今の時代はいわゆるスクリプ言語というものが隆盛を極めている。その中でも最初に流行ったPerlは今も廃れることなく活躍している。このWordPressの記述言語でもあるPHPや日本生まれのRubyというのもある。Rubyと言えば、ちょっと前はまだまだマイナーだと思っていたが、驚くなかれ、おびただしい分量のRubyの本、中でもRuby on Railsの本が出版されている。善悪は別にして、Ruby on Railsは正に旬の言語なのであろう。PHPの方でも負けじとRails流のフレームワークCakePHPの本が出ている。

JavaScriptの本を探しに行ったのだが、存外少ない。JAVAの本なら沢山あるのだが。JavaScriptの本の面白い所は、必ずJavaScriptはJavaとは違う言語であること、JavaScript開発ならびに命名の由来などがけっこう詳しく書かれているところだ。どうやら不幸な生い立ちの言語らしいのであった。ブラウザと一体化して便利そうであるのだが、Microsoftが嫌がらせに互換性のないバージョンJScriptを作ったりと、いろいろあった模様。少ない選択肢の中から、オライリーの本を選んだ。

それにしても、よくぞ作ったというか、いろんな言語があるものだ。門外漢からすると、PerlとRubyなど、さほど違わないように思うのだが。

不揃いの上下巻

ボレビッチ・シャファレビッチ「整数論」(吉岡書店)

ただいま本棚整理中。ボレビッチとシャファレビッチ共著の「整数論」2巻本をようやく一緒に並べる。それにしてもこの不揃いなんとかならないか。上巻を買ってしばらくして下巻を買おうとしたときには、既に品切れだった。それから何年経ったろうか。あるとき、オンデマンド印刷とかで復刊していたので購入した。上巻はハードカバーで、しかも箱入り。まあオンデマンドではあるし、ソフトバウンドは仕方ないが、これなら両方ともオンデマンド版で揃えた方がむしろ良いかも。

内容は、代数的数論であるが、p進数や解析的手法を自由に用いていて、ちょっと前の日本の数論の入門書とはかなり異なる印象。Hardy-Wrightを補完するのに丁度良い感じ。もっともHardy-Wrightは間口の広い入門書、こっちは一応は専門書という感じではあるが。