geek な日々: 2017

級位者の愉快な対局 次の一手 △横歩取り3三歩戦法

もう級位者でもなくなったのだが、当時のテイスト溢れる対局を経験したので報告する。
横歩取りで▲3四飛とした後、後手も△7六飛としてしまうと、▲2二角成の強襲があって、△同銀でも△同金でも金銀の連結が外れ、飛車が成りこんでゲームセット、という「だから後手も先手の真似して横歩を取ってはいけませんよ!」的な進行がよく紹介されているが、このときの飛車の成りこみを防ぐ驚愕の
面白戦法が以下の△3三歩。

正直、指されて驚いた(笑)。
さて、どう対応したらいいだろう?


次の一手的には▲3二馬が正解だが、▲3一馬や▲8四飛車、▲2一馬なども先手勝勢~優勢(elmo 2017 調べ)。
▲3二馬△3四歩と飛車を取れば、▲3一馬で先手金銀得。▲5三馬の狙いも残っている。
▲3二馬△同銀と馬を取れば、▲2四飛△2三歩打。▲2八飛とひいても金得の上に▲2二歩打の狙いが残る。
やはり、「横歩を取るのは先手の権利」なんだろうが、相手が高段者の場合、ここからでも勝ち切るのは大変なんだろうなあとは思う。

ボヤ騒ぎと著作権

さきほどの週末、twitter とブログが連動して炎上騒ぎがった。ネットは長いことやっているが、この「炎上」というものに立ち会ったことは一度もないので、若干の興味をもってことのなりゆきをチラチラ眺めていた。顛末を大雑把に言えば、『将棋研究系ブロガーの S氏が、twitter で活躍中の将棋研究家 Y氏が twitter 上で公開している資料を素に Y氏に無断で記事にして公開。S氏や周囲の人から批難された』というもの。
ちなみに、

・無断引用したとされる S氏のブログ記事
http://archive.is/qMHpw

・無断引用されたと主張する Y氏の twitter モーメント
http://archive.is/kpxPH

です。
この件に関しては、直接の何のかかわりもないし、論争となっている素材の質からして特に何も言うことはないのだが、これに関連して言いたいことはそれこそ山のようにあって、それはなにかというとネット上で使える資料に対する日本人の著作権・ライセンスに対する認識みたいなものだ。

以前にも書いたのだが、多くの日本人が
・著作権と特許権(のうち特に排他的独占権に該当する部分)を混同
・著作権の保護対象を勝手に拡大解釈
しているように思えるからだ。「多くの日本人が」と書いたが、ここら辺しっかり認識できている人もいて、それは実は開発系のエンジニアだったりバリ理系の研究者だったりする。まー、仕事のアウトプットが著作物だったり特許だったりするので、当然といえば当然か。

ここらへんわきまえた人たちは「公開していたモノをパクられたとかいうのはナンセンス」ということがわかっているので、おそらくこういったボヤ騒ぎになること自体がない。しかも、表現形式がメモ書き程度のもので、排他的独占権を主張するのはそっちの方が恥ずかしい、ということを経験的に学んでいるので、仮に「パクられた」としても「まあしょうがないか」と思う程度だろう。

もちろん、逆の立場になることもある。公開されているモノでも「素材は良いのに、その良さが活かしきれていない」と感じることはたびたびあり、その場合、その素材を元に適宜改変を加えて活用を図っていく。が、素材そのままを使用するというのは、動機からみてありえない。
ちょっと具体的な話をする。
将棋関連に絡めて言えば、私は、今、JavaScript で動く棋譜再生ビューアーをつくっているが、この元ネタは NHK のサイトにあった JavaScript である。
まず、これをそっくりそのまま使用するのは明らかに著作権に抵触するので、表面的には将棋盤まわりのデザインを変えた。
次に、(これが元ネタを改変しようと思った主な理由なのだが)コメント出力できるように内部ロジックの拡張を図った。元ネタのソースを読むとコメントも定義されているのだが、残念ながらこれを活用するような実装はまったくなされていなかったのだ。
さらに、「NHK が定義するデータ形式(私はこれを nkif と呼んでいる)だけでは実用上役に立たない」と考え、kif 形式をサポートすることにした。
ここまできてようやく「これなら著作権云々に抵触することはないだろう」と改変した JavaScript を使って記事を作成、ブログ上にて公開した。
一応、元ネタもわかるように記載しているが、正直なところ、これも不要だろう。機能拡張まで図ってしまえば、それはもう別のプログラムとみなしてもかまわないだろうから。
実際の開発などというのは、こういった具合に進んでいく訳で、上記のボヤ騒ぎにあったような単純すぎる図式におちこむというのは、諸々の制約を適当にさばいていくとあまりおこらないことは容易に想像がつく。
そして、(こっちの方が重要なことかもしれないので)付け加えておくと、私の JavaScript を誰かが無断で使用したとしてもおそらく私は、何のクレームもつけないだろう。それは、プログラムには著作権があるし、私は著作権を放棄したわけではないが、誰が書いても似たような表現になるプログラムが保護の対象になることはなく、なったとしても相当弱いということを私が知っているからだ。
そもそも、クライアントサイドで動く JavaScript 自体がコピーし放題、ソースも見放題な訳で、その言語を選んで公開した時点で、そうなることもある程度は織り込んでいる。

(地味に続く予定)

nkif ファイルと DB と局面検索

今日は、JSKifuForWP のコードをいじる。
コメント出力も可能になった。
JSKifuForWP は読み込むことのできるデータ形式は、nkif 形式のみである。nkif というのは、私が勝手に名付けた名称で、その出自が某放送局のためこの名前となっている (笑)。
今日の作業でそのデータ構造はほぼ理解した。

nkif は一局面を例えば

p=1b191716101617191b0014000000000012001d1d1d1d1d1d1d1d1d000000000000000000000000000000000000000e000000000000000e000e0e0e0e0e0e0e0003000000000005000c0a08070207080a0c26;
h1=;
h2=;

という形で表す。p は盤面の駒配置、h1 は先手の持ち駒、h2 は後手の持ち駒、である。
p はここでも調べていた。1一が 1b で香、2一が 19 で桂、‥‥というのはわかっていたのだが、これだと 81 * 2 = 162 文字で盤面の駒配置はすべて決定されるはずだが、実際には、164 文字ある。最後の 26 が余計だ。
今までこれがわからなかったのだが、わかってみればなんことはない、これは着手位置を表すマーカー画像の位置そのものだった。初手▲2六歩と飛車先を突いたので、こうなっている次第。余計な情報なので落としてもいいのかもしれない。

そこまでわかったので、テスト的にデータベースも作ってみた。とりあえず三局ほどデータを挿入。

この状態で

SELECT * FROM tbl_kifu where kifu like '%p=1b19171610161719‥(略)‥0a0c26;%'

を実行(SQL文はいつまでたっても慣れないっす)。
結果は、

と同一局面(初手▲2六歩)を正しく2件ひろってくる。
問題の処理時間は、

と約 30 ms 。
これだと100局程度でも、同一局面をひろってくるのに数秒かかりそう。
んー、ちょっと遅いかな。

感想としては

・それっぽいシステムは組めそう
・が、「こなれた」システムをつくるのはそれなりのノウハウが必要

と思った。

むー、私、データベースとか検索とか経験値少ないんだよねー。

blogger で JavaScript その2

このブログって JavaScript 使える? ってことで実際にテスト。
現時点では、たいていの端末・ブラウザで表示されているようですが、android スマフォの chrome で表示できていないようです。(下記参照)

****************************************************************






*****************************************************************
(こんな感じ(↓)で設置が進行)

初期処理の描画もできてるし、タッチに反応もしているが(=JavaScript 自体は読み込まれて一部動いている)、再描画されない(=特定の関数が実行されない?)。
なんでだ?

(本番環境wだが、ソースにデバッグ用のアラート関数埋め込む)
関数実行されてる。
んー、クリック位置取得の座標値がおかしい。
原因はどこ?

ここの情報を元にソースコードを修正。PC の chrome では狙い通りの動きをするようになった。

(出先で、android スマフォからこのページを確認 )
げっ、描画もされてない!
canvas 要素のサイズでかすぎたか????

(iPad Pro 9.7 でも確認 ←今ここ)
問題なく表示できてる。

小型機の表示エリアの問題か? android ブラウザの問題か?


ん、写真が貼れない

記事書いていて写真を挿入しようとしたら、貼れない。
アップロードはできている。
アップした写真類はグーグル・アルバム・アーカイブとかいうところで管理されているようなので、そこにいって確認したら、アップしたファイルがなぜかすべて非公開扱いになっている。

なんでだ?

よくわからないが、最近アップしたファイルをすべて削除。

再度、ブロガーのコンソールに戻ってアップしたら、今度は無事貼れるようになっていましたとさ。

こういうシステムのクセみたいなのは、使いながら慣れていくしかない。


blogger で JavaScript

以前に書いたリバーシプログラム(JavaScript)をここでも使おうと思って、「blogger javascript」などをググる。けっこうみなさん苦労している。
結論としては
「blogger では、javascript のファイルをアップできる場所がないので、
 ・テンプレートに直接書き込む
 ・別のホスティングサイトにファイルを設置し、そこから読み込むようにする」
ということでできることはできるらしい。
前者はメンテが面倒になるのでやりたくない。
後者が有力だが、適当な https のサイトがなかったりする(http だとダメらしい)。

んー、ちょっと課題として残しておこう。

WordPress 最新版がかっこよすぎて嫉妬するレベル

xampp を導入すると格安レンタルサーバの環境にしばられることはないから、ローカルマシンには最新版の WordPress が設置できる。
現在だと最新版は 4.8.1 のようだ。
試しにインスコ。
んー、お洒落。
デフォルトでこのクオリティってのはすごい。
そーいえば、最近、このデザインのサイトよくみかけるわ。

これは、本家サイトサーバの引っ越し考えねば。

xampp が便利すぎて泣ける

今さらながら xampp を導入。
windows 端末などで WordPress で作られたサイトのテストをする場合、確かに便利。

これがローカルでの実行。

で、これがリモート環境。

ノートPCに設置した xampp フォルダは1Gにも満たない。

今まで、手間かけて LAN 内にテスト用のサーバ立ち上げてたのが馬鹿馬鹿しくなる。

将棋 2017上半期

藤井ブームもあって個人的にものっかる。
叡王戦(Ponanza vs 佐藤天彦名人)のインパクトも強かった。

観る将的には、abema TV の将棋チャンネルをよく利用した。

指す方では、将棋ウォーズのエンタメ性の高さに驚いてハマる。

創る方向では、まず評価関数や探索のイロハが知りたくてリバーシの簡単なプログラムを書く。現在は、ニューラルネットも取り込めないか検討中
なお、ブログ用の棋譜再生 JavaScript にもちょっと手を出している


奥が深いなー。

android と Java

まず、OS が 5 → 6 → 7 とバージョンアップするにつれ、どんどん使いやすくなっている。

電池持ちやレスポンスがよくなっているのは、私みたいなライトユーザーには有難い。

個人的には garaxy s8 に注目。↓これです。
デザイン的にも iPhone の先いってる感じがする。これは近秋出る iPhone 8 との比較で考えたいところ。


もちろん、android の良くない点も知っている。garaxy s8 でも重いゲームをしたときダウンロードが iPhone 7 と比べても遅いようだ(処理自体は遜色ないようだが)。比較動画は YouTube あたりによくあがっている。
思うに Java 系の通信ライブラリに難があるのかな?
以前に本家 Java の通信ライブラリを使ったとき、その不安定っぷりに少々驚いた記憶がある。


けっこう放置してましたが投稿再開

諸々の事情があってこちらでも投稿再開。 

このブログでは、主に IT系小噺みたいなことを書いているが、しばらく間を空けて眺めてみると、一年でもゆっくりとしかし着実に変化はおこっていることがわかる。

 まず、いきがかり上、スマフォを iPhone → android に変えたが、今になってみるとこれはけっこう「アリ」な選択だったようで、ここ最近の android 端末の充実っぷりは目を見張るものがある。

 また、将棋ブームや将棋(に限らずボードゲーム全般)と AI との関連性も興味深い。

 細かい話はおいおい。