絶版書籍が電子書籍になるに至るまでの話


紙媒体のほうの拙著『解析魔法少女美咲ちゃん マジカル・オープン!』は一度絶版になったんだ。自分で言うのも何だが、リバースアセンブルの名著であり、教科書的な存在であるから、アマゾンのマーケットプレイスでは長らく定価の数倍というプレミア価格となっていた。


プレミア価格になってからも「再販しないんですか?」とブログの読者の方などから問い合わせを数多くいただき、これは再販すべきだよなぁと思って出版社のほうに増刷するか、無料でPDFか何かを公開させてもらえないかと何度か出版社の編集担当に交渉したのだが、これがどうもうまくいかなかった。


まず、本文の著作権自体は著者(私)にある。だから絶版になったあと本文だけを公開することは出来る。しかし図は、下書きは私が書いたものではあるが、出版社の編集側で手直ししたものが本には使われているし、組版をしたのは出版社である。これらに関する権利が出版社にある。また、表紙イラストは漫画家のS先生に出版社側が依頼したものである。


要するにこの本の権利は私と出版社とS先生の三者にまたがっているのである。そして、販売契約自体は、絶版になるまで有効なわけだが、絶版になった時点で契約自体が終了してしまうのである。絶版になったものを再度増刷しようと思うと再度契約書を交わすところからになってしまう。それは出版社としては嫌だと言う。


また、S先生と出版社も直接つながっているわけではなく、間に仲介してくれた人がいるので、この人を通して改めて話をしないといけなくなる。それから、出版社の編集担当が言うには、私がその人を通じて交渉するのは控えて欲しいとのことで、私が無料公開するにせよ、これでは表紙イラストおよび挿絵を掲載するのは不可能である。


では、この本に関して出版社側の持っている権利(図の清書と組版に関する権利)を私がお金を出していいので買い取らせてくれないかということを出版社にオファーしてみたのだが(買い取ってでも無償で公開しようと思った)、これは条件的に折り合いがつかなかった。


本文だけなら無料で公開できなくもないのだが、本をなるべくそのままの形で公開しようとするとこのように極めてややこしい事態になってしまうのだ。


今後、出版社から書籍を出そうという人は、絶版になったときにこういう事態になって困ると思うなら、イラスト・組版まで丸ごと自分でやってしまうか(自分でイラストを書いてくれる人を連れてきて、直接その人と交渉し、その人に自分の印税のなかからお金を払って書いてもらうか)、あるいは、電子書籍化の契約も同時に取り交わすことをお勧めする。


ともかく、もうこの本については私としては半ば諦めていたのであるが、先日出版社のほうから、電子書籍化しますんで良かったら契約書にサインして返送してくださいと言われた。


「なんや?再販は難しいから現実的には不可能なんとちごたんか?何がどうなったんや?」


私としては狐にでもつままれたような気分であるが、出版社側の編集会議において電子書籍化する本としてノミネートされ、その結果、再契約という運びになったようである。再販に関する問い合わせが多かったのが功を奏したのか、それとも紙媒体のときにベストセラー入りしていたのが功を奏したのかは私には知る由もないが、ともかく応援してくださっている皆様のおかげであることには違いない。皆様、ありがとう&ありがとう。


そして、なんとこの拙著『解析魔法少女美咲ちゃん マジカル・オープン!』のKindle版が2月26日まで半額セールである。「半額で買ったら、やねうらおさんに印税が半額しか入らないのでは?」なんて心配なら無用である。なぜなら、私には満額入るからである。要するに出版社が痛い思いをしているわけである。出版社さまさまである。いま、「出版社さまさま」と入力しようと思ったら何故か「出版社ざまぁ」とか変換候補に出てきて吹き出しそうになったが、そんなことはこれっぽっちも思っていないよ!?本当だよ!?


そんなわけでして、皆様、遠慮せずに一人100冊ぐらい買ってくださっていいんですのよ?(ちなみにKindleは1つ買うと自分のアカウントに紐付けられた6台までの端末で閲覧することが出来ます。)


そういや当時この本の紹介を自分のブログで何度もしてくれてたひげぽんさん(※)は、いまやtwitter社勤務であり、この本の愛読者であった人たちは日本を代表するセキュリティ系のお偉い人になっていたりして、そして私はヒルズにオフィスのあるセキュリティ系企業のCTOとなっているわけだ。時代の流れを感じるな…。


※ 当時のひげぽんさんの記事
http://d.hatena.ne.jp/higepon/20050908/1126177597
http://d.hatena.ne.jp/higepon/20040812
http://d.hatena.ne.jp/higepon/20040823
http://d.hatena.ne.jp/higepon/20040903


解析魔法少女美咲ちゃん マジカル・オープン!

解析魔法少女美咲ちゃん マジカル・オープン!

ブログちょっとだけ移転のお知らせ


完全に移転するわけではないんですけど、専門性のある話題は以下のブログでやります。


・コンピューター将棋関連

やねうら王公式サイト
http://yaneuraou.yaneu.com/

たぶん4月ごろまで日々更新。


・音楽関係

やねうらお音楽理論ブログ
http://music.yaneu.com/

あちこちで紹介された結果、1日のPVが1000を超えてて震えている。ちなみに「音楽理論 ブログ」でGoogle検索すると4位。「音楽理論」では19位付近。もうちょっと上位に来るように頑張るぞー。

週一ぐらいで更新予定。


やねうらおが、面白い出来事を書くブログ

やねうらお.com — やねうらおオモロードキュメンツ
http://rao.yaneu.com/

まだ記事を書いてない。ごめん。ぼちぼち書きます。

これは月2回ぐらいのペースで更新予定。


・このブログの今後

このブログはそれら以外の話題について書いていきます。

時代はまだゲームセンターあらしに追いつかないのか


私が小学生のころに『ゲームセンターあらし』という漫画が流行った。(1979〜1983年)「炎のコマ」と言う「スティックを高速で操作することでプレイヤーの操作するキャラクターが敵からの攻撃を潜り抜ける」というインチキまがいの技が出てくる。


私は小学生にして、その漫画に出てくる平安京エイリアンぐらいのゲームならオールアセンブラで余裕で作れる程度には天才児(?)だったので、「いくらスティックを高速に動かそうと、1回の描画ごとに1回の入力受付しかしないのだから、単に入力が取りこぼされるだけだろ。所詮、漫画だな。」と小馬鹿にしたものだった。


ところが、その考え方は間違いなんじゃないかと最近思うわけだ。


キーボード入力のようなユーザー入力は取りこぼしてはならないのである。ユーザーは1秒間にたかだか10文字程度しか入力できない。キー入力の遅い人は数文字が限界かも知れない。それなのにCPU負荷が高いときやDisk I/Oの負荷が高いときはキー入力を時々取りこぼすわけである。現在、CPUは数GHzというクロックに達しており、1秒間に1,000億回程度の浮動小数点演算が出来るくせに、たかだか1秒間に10回程度の入力を取りこぼすとか、ありえない。そのありえないことが現代においていまだに起こりうるのである。


単にユーザー入力に関する割り込み処理の実行プライオリティを上げれば良いという話ではない。なぜなら、例えば、タブレット端末ではユーザー入力を行なうためにはソフトウェアキーボードの表示処理が必要で、Disk(SSD)への読み書きが忙しいからと言って、キーを取りこぼしたり、英語と日本語のキーボード切り替えに時間がかかったり、日本語変換に時間を要してはならない。ならない…が、実際はそうなるのである。


ゲームセンターあらし』から30年以上経ってるのにユーザー入力すら満足にさばけない欠陥OSが蔓延っているわけである。かと言ってユーザー入力に関するタスクの実行プライオリティを上げれば良いかというと、そういう単純な問題ではなく、本気で解決しようと思うといわゆるリアルタイムOSのように、高優先度のタスクが確実に実行されることを保証するための仕組みが必要になる。


ゲームの場合でも画面描画の更新回数だけしかワールドの更新を行わず、キー入力も受け付けないゲームが多数派であるが、格闘ゲームなんかだと、画面描画は60fpsより遅れようともワールドの更新(と入力)は1/60秒ごとなのを保証する作りになっているゲームもある。(10年ぐらい前に私がSNKKOF作ってたプログラマーの人たちと仕事をしたときも、そういう話が出た。)


もっと繊細なコマンド入力や音ゲーのような超絶タイミングを必要とするゲームならばキー入力だけ画面描画より細かいインターバルで入力を受け付けるのはおかしくはない。(まあ、入力デバイスがUSBでぶら下がってたりするとどこまでの精度が保てるかという問題はあるが…。)


そう考えると、『ゲームセンターあらし』のように開発者の想定を超えた激しい入力がされたときに開発者の想定外の挙動をする(バグる?)ようなゲームがあっても、まあ、おかしくはないのかな…。


ゲームセンターあらし』から30年以上を経て、あの漫画は自分のなかでは「そんなんありえへんわ!」から、「ありえるかも…」に変わりつつある、という話でした。

やねうら王、電王戦バージョン提出しました


電王戦出場バージョンのやねうら王、提出期限が今日までだ。定跡は16手目までしか出来なかった。32手目までの定跡は1/4ほど出来たが、全部作るにはあと1ヶ月ほどかかりそう…。(要するに今回は間に合わない)


部屋のPCはフル稼働で、冬だというのに暖房を入れなくても暖かい。それどころか日中は冷房を入れないと暑くて部屋に居られないぐらいだ。


肝心のおもてなし定跡だが、後手番ということもあって、あまり芳しくない。後手番だと評価値が-100ぐらいからスタートする。AWAKEの巨瀬さんに「序盤で評価値-100の局面から指し継がせたとき、-100側は勝率3%ぐらい落ちますよね?」と尋ねたら「もっとじゃないかな…。5%ぐらい?」と返ってきたので、もしかしたら、コンピューター将棋では後手番は勝率45%ぐらいなのかも知れない。


Bonanza6と10分切れ負けで100戦させたら95-2-3。負けた3局はいずれもやねうら王が後手番だ。悪い予感しかしない。


あと、おもてなし定跡のため、評価値-200までは許容するようになっているので、下手な定跡に突っ込むとたぶん10%ぐらい勝率が下がる。定跡がたくさん搭載してあって事前研究で必勝パターンを見つけられないことが大切だが、後手番だと先手の初手でいきなり定跡を外すことだって可能なのでいかにも危うい。


定跡の穴は結構ありそうな気はする。やねうら王が好んで指す、横歩取り33桂戦法とか。ただ、激しい戦型なので指すほうも怖いと思うのだが、事前研究が十分あればそうでもないのかな…。


せっかくなのでランニングを兼ねて評価関数テーブルの値が別のバージョンをfloodgateに投入してみた。



一応、ponderと置換表32768MB設定で、きちんと動いているようで一安心。


これでやっとやねうら王2015の開発に入れる。


あ、その前にひまわり将棋(人間の棋譜を参考にしない)×やねうら王 = ひまうら王の公開実験を年末にやる予定だ。駒得のみの評価関数のやねうら王より強くなるのか弱くなるのかすら実験してみないとわからない。それがこの年末から年明け(1月15日ごろまで?)にかけて判明するというわけだ。Bonanza6と同等の強さになれば大成功と言えるだろう。なお、ひまうら王は思考エンジンのバイナリを公開する。楽しみに待たれよ。

将棋の神様のレーティングはいくつなのか?


羽生さんは以前、雑誌の取材で将棋の神と対局したらどれくらいの手合であるかと問われ角落ちならいい勝負だろうと答えた。


では、この将棋の神様のレーティングはいくらなのか?


一見、神様には無限のレーティングがつくかのように思えるが、それは間違っている。話を単純化するために、枝刈りなしに深さ固定でmin-max探索を行なうときのことを考える。


評価関数はBonanza以下の精度しかないものとする。この場合、読みの深さが1手深くなるごとにR100〜150程度しか上がらない。少し多めに見積もって、R300上がるとしよう。実際はある程度以上探索深さが深くなると読みが1手深くなったときのレーティングの伸びも小さくなっていくのだが、ここでは均等にR300ずつ上がり続けるとしよう。そして3手読めばだいたいR1000ぐらいである。計算が面倒なのでここはR900ということにしよう。ということは、大雑把には次のように計算できる。


棋力 = 探索深さ×R300(実際はこれより小さい値である)


プロ棋士で双方がそこそこ最善を尽くした場合、130手ぐらいで終局するので、130手で必ず将棋が終局するものとすると、R300×130手 = R39000ぐらいの値が将棋の神様のレーティングである。(実際は130手を超える変化があるのでもう少し大きな値である可能性もある)


仮に電王トーナメントのような256手引き分けルールの元では、上限はR300×256手 = R76800。これはかなり大きめに見積もっている値なので、実際はR20000ぐらいが将棋の神様なのかなと私は思っている。


人間から見ると、R5000もR20000も(どちらも勝率1%すら勝てないという意味では)さほど大差ないので、仮に羽生さんがR20000のソフトと角落ちでいい勝負だとしたら、R5000のソフトとやっても同じく角落ちぐらいの手合でいい勝負ではないかと私は思う。


R5000のソフト…いま上位のソフトがR3700〜4000付近にあるとして、あと5年以内ぐらいでR5000には到達しそうであるが、駒落ちのプロの棋譜は少ないため、棋譜からの学習を用いているいまの将棋ソフトは駒落ちはそこまで強くないかも知れない。この問題が5年以内に解決するのかどうかは私にはよくわからないが、駒落ちも平手と同様の棋力を保っている将棋ソフトが完成すれば、5年後には羽生さんは角落ちで互角。とりあえずそういう結論になる。

何故私は駒得のみの評価関数の将棋に魅せられるのか


駒得のみの評価関数の将棋ソフトとして私が作った「ひよこ将棋」がある。将棋ソフトの開発者のなかで「ひよこ」と言えば「駒得のみ」の代名詞ともなっているぐらいである。私は駒得のみの評価関数の将棋ソフトに命をかけていると言っても良い。


駒得のみということは、評価関数の学習のために人間の棋譜を用いていないし、評価関数もあってないようなもので、純粋に探索のみでどれだけの強さになるのかという指標としての意味がある。


「でも駒割の点数は棋譜からの学習を使ったのでしょう?」と言われそうだが、先日公開した「駒得のみの評価関数にしたやねうら王」では点数は私が適当に決めた。角と馬との点数の差は300点である。飛車と龍との点数の差も300点である。本当、テキトーである。


それでもそこそこ強く、コメント欄にもあったように、いまどきのPCで対戦した場合、3分切れ負けであれば、将棋ウォーズ3段程度ではなかなか歯がたたない。5年ぐらい前のオンボロPC持ってきて「勝てました」とか言ってる奴は、ちゃんと最新のPCでやってみて欲しい。(できれば16コアのPCで…)


当然のことだが、ソフトの棋力というのはPCで変わる。駒得のみのやねうら王であれ、5年前のオンボロPCと最先端の16コアのPCとではR400ぐらい違ってくる。これくらい違うと(アマチュア初段ぐらいにとっては)飛車一枚ぐらいの差であり、めっぽう違うのである。5年前のPCでやって、「確かに弱いっすねー。駒得だけだと人間相手だとこんなもんっすかねー。」とか言ってた人も、最新のPCで対戦すると「何これ?これが同じソフトっすか?どう見ても別人(別のソフト)じゃないっすか…」などと言い始める。


自分より「弱いか」「強いか」でしか推し量ることの出来ない人たち(ほとんどの将棋ファンはそうなのだが…)にとっては、自分より弱いソフトと自分より強いソフトとが同一であるとはなかなか思えないものだ。しかしその見方は間違っているのである。強さはPCの性能だけでも大きく変わるのである。


そもそも何故私はこんなにも駒得のみの評価関数の将棋ソフトに魅せられるのであろうか。


話は25年ぐらい前に遡る。当時はファミコン森田将棋が発売されたばかりで、近所の駄菓子屋にいくと店主のおっさんがファミコン森田将棋をしながら店番をしてたりしたわけだ。そのおっさんは、「森田将棋よえーなー。こりゃ、(森田将棋が)百万年考えても俺には及ばんなー。」とかブツクサ言いながらやっているわけである。


私は子供心に、その考え方は間違っていると思ったわけだ。


当時、森田将棋でもnpsは10kぐらいは出ていたはずである。100万年と言うと、探索できる局面数は、864T(テラ)局面(864000000000000局面)である。人間はプロ棋士でも1秒間に100局面すら読めない。圧倒的な差である。


「燕雀 いずくんぞ 鴻鵠の志を知らんや」という言葉がある。この言葉は「ツバメやスズメのような小さな鳥にどうしてオオトリやクグイのような大きな鳥の志が分かるだろうか。小人物には、大人物の大きな志は分からない。」という意味で使われるが、同様に、1秒間に100局面すら読めないような人間が、駒得のみの評価関数であれ864T局面も読んだときに、どういう指し手になるか、その振る舞いを事前に予想することは不可能なのである。それこそ人智を超えているのである。当然棋力のある人が見れば、その演算の結果、指された指し手の意味について思いを馳せることは出来るし、その指し手がどれくらいの棋力の指し手であるかを評価することは出来るのだが。


やねうら王の場合、駒得のみであれば16コアPCで秒間20Mノードほど読めるので、500日ほどあれば森田将棋の百万年分ぐらいになる。言うまでもなく森田将棋は駒得のみの評価関数ではないので同じノード数を読んだときに森田将棋のほうが強いわけである。(探索技術の差はあるが、評価関数の質が違うのでそこは無視できる。あと、置換表用のメモリはそこそこあるものとする。)


ということはすなわち、
森田将棋の百万年考えたとき >>> 駒得のみのやねうら王が500日考えたとき >>> 駒得のみのやねうら王が10秒考えたとき >>> ウォーズ3段
という不等号が成り立つので、森田将棋が百万年考えるとアマ三段程度では到底太刀打ち出来ないということになる。そのことを駒得のみの評価関数のやねうら王が昨日、証明したわけである。たぶん森田将棋を百万年考えさせると、余裕でプロレベルに到達するだろう。


事ここに至っては「下手の考え休むに似たり」ではないのである。百万年分の「下手の考え」はプロをも凌駕するのである。


ちなみに、上で書いたその駄菓子屋はすでに取り壊され、不動産屋になっている。あの駄菓子屋のおっさんを駒得のみの評価関数の将棋ソフトで打ち負かすのが私の積年の思いであったが、どうやらそれは叶いそうにない。

駒得のみの評価関数にしたやねうら王 V3.37を公開しました


駒得のみの評価関数にしたやねうら王 V3.37を公開しました
http://d.hatena.ne.jp/hiyokoshogi/20141120


駒得のみの評価関数なのでほどよく弱くて、ハム将棋を卒業したての初心者の人も楽しめると思います。(たぶん…)


苦情や対局した感想、要望などは本日のコメント欄でどうぞ。


・追記 x64/x86、SSEなしをリリース


2014/11/20 7:20。x86用(32bit OS用)、もう少し頑張れば出来そう。もうちょっと待って…。
→ 2014/11/20 9:50 出来た…かな? SSEを使わないバイナリも出来たので上記のダウンロードページを更新しときました。32bit OSかつSSEなしのPCは私は持ってないので本当に動くかどうかはわかりません。


・追記 思考エンジン設定について


将棋所からできる思考エンジン設定で、「基本定跡の幅(0=無,30=狭,100=広)」というのがあり、これはデフォルトで30になっています。定跡選択のときにベストの指し手(で進めたときの評価値)から、30少ない評価値の指し手までは定跡の指し手として許容するという意味で、この値はゼロに設定したほうが強い定跡になります。(その代わり定跡選択の幅はなくなります)


「基本定跡で採用する評価値下限」はこの値を下回る指し手は採用しないという意味です。デフォルト-200です。後手だと後手の初手で-100ぐらいの点数がつくので、そこからさらに-100ぐらいは許容範囲という意味でこの値にしてあります。先手の場合は-100ぐらいで打ち切ったほうが良いのかも知れません。


・追記 npsについて


twitterでは駒得のみの割にnpsが低すぎるんではないかと言われていますが*1、通常バージョンのやねうら王は、いまどきのPC(例えばCore i7 4771)で1スレッド当たり1Mnpsちょっと出ます。評価関数を駒得のみにするとこれが1.5Mnpsぐらいになります。つまり4コア時で6Mnps程度しか出ません。*2


駒割を差分計算していないのでやや遅いですが、そこを修正したとしても10%も速くならないのでやってないです。遅い主な原因は、オーダリングがそこそこ重いというのと通常探索・静止探索中の1手詰め探索があるからです。1手詰め探索をオフにすると1スレッド当たり2Mnps強ぐらい出ます。たぶんオフにしないほうが強いので、オフにしてないです。


・追記 駒得のみの評価関数のやねうら王は、駒得のみのソフトとして史上最強なのか?


駒得のみのソフトとしては史上最強だと思っていますが、まだ改良の余地は大いにあるので、他の開発者からの挑戦は大歓迎です。


あとBonanzaと対戦させたところ、「ボナンザ6勝 - やねうら王4勝」*3という話がありますが、それはさすがに出来すぎのような気はします。(たぶんBonanza相手では2,3割勝てるかどうか…)) Bonanza相手だと定跡の進行になりやすく序盤をすっ飛ばして中盤からスタートになるのでそのへんが大きいのかも知れませんが…。


・追記 定跡編集コマンドの仕様を公開しました


やねうら王の定跡生成コマンド
http://d.hatena.ne.jp/hiyokoshogi/20141121/1416505613


・追記 やねうら王と対局した感想を集めてみました

  • 「評価関数が駒割だけのコンピュータ将棋は、たくさん読めるから意外と強いんだけど、いかんせん対人戦が絶望的に弱い。」 … この発言は撤回します(駒得のみのやねうら王に連敗しながら)。*4
  • やねうら王(駒得のみver)、5局くらい指したけど勝ててない。20分切れ負けで、もう少しで勝てそうなところで時間切れたのが1局。あとは完敗。くそう。*5
  • 駒得やねうら王をダウンロード。BonanzaGPSと対戦させて観戦しているのだが,駒得だけで将棋を指すということがどんなものか目の当たりにできてとても興味深い。とても深く読んでいるのだが,悪い形に誘導されて最後は負けてしまう。優秀な探索エンジンがもったいない感じ。*6
  • やねうら王 V3.37と指していると、自分の読みに無い手(主に大駒を捕獲される手)をたくさん指されるので自分の形勢が悪いと思ってしまう。我慢して終盤まで指すと自分がいいことに気づく。自分の形勢判断の悪さに悲しくなる。*7
  • やねうら王(駒得関数のみ) Bonanza 4.0.4より強い件*8
  • やねうら王(駒得のみver)と対局してみた。50手で負けた。(詰まされたw)*9
  • やねうら王「駒得のみの評価関数」、指し手に個性あっておもしろい。とりあえず銀香交換して端突破とか角銀交換して飛先突破とかやってみた。仕掛けられた瞬間に楽観する感じではあるけどいい粘りをみせるので、格言「10秒将棋では駒損を避けよ」を思い出した*10
  • やねうら王3.37駒得バージョン対稲庭将棋の実際の棋譜を見たかったので、Core i7マシンを使って持ち時間10分秒読み30秒ponder無しでやってみた。秒読みがあればやねうら王が勝つらしい。 http://kiftwi.net/r/yOIKGQit *11
  • やねうら王弱いのに強い *12