将棋を指す処理、作成が一段落

2014年4月29日(火)の午前10時以降、自作のコンピュータ将棋プログラムが反則負けする現象の調査を行いました。

ソースを読み直して、行き先のない駒についても「不成」の手を生成していることが分かり、修正。

その後、何度か動作確認テストを行った結果、いくつかの問題点の存在が判明しました。
発見した問題を一つ一つ解決していきましたが、17時に夕食で作業中断した時点で、「駒が成る手」を指そうとして失敗している問題が残っていました。

夕食後、将棋プログラム開発とは別のことを行っていて、20時過ぎから開発作業再開。

ソースの問題箇所を特定し、修正しました。

将棋の合法的な「手」を生成する処理の作成は、これにて一段落です。

ただ、現時点のソースコードの大部分は、約2年半前に私が書いたものですが、現在の私から見て、不満な部分があります。

特に気になるのは将棋盤の構造で、現在のコードでは、将棋の初期局面を横倒しにしたイメージの 81バイト盤を宣言しています。

現在の私は、盤面を縦方向に宣言し、先手陣(7~9段)・後手陣(1~3段)・中間地(4~6段)のそれぞれの領域のマスを連続して配置する形式にするのが良いと考えています。

また、手の生成に関して、現行のコードが長すぎるのも不満です。

将棋プログラムの思考部のコードを書く前に、データ構造や既存処理の見直しを行うことにします。

WAONポイントをダウンロード

2014年4月30日(水)の午前中、マックスバリュの店舗内の端末で WAONポイントをダウンロードしました。

この日は家族を病院に送迎するため、久しぶりの外出。
2014年4月22日(火)に新幹線の新富士駅まで行ってきたのですが、その日以降、25日に近所のコンビニに行った以外、私は自宅に引きこもってました。

病院に寄った帰り、食料品を購入するため、マックスバリュに寄り、ついでにイオン銀行ATM で銀行口座の残高を照会し、引き落としに備えて口座に数万円を預け入れました。

その直後、念のため、WAON 及び WAON ポイントの残高を確認したところ、イオンカードセレクトの入会特典として 6000 WAONポイントが付与されてました。

さっそくダウンロードし、ポイントを WAONチャージし、この日の買い物の代金支払いに利用しました。

入会特典の 6000 ポイントのことは忘れていたので、ちょっと嬉しい気分。

ウィンブルドンの賞金 10%アップ

テニスのウィンブルドン選手権の賞金総額が、2014年の大会は前年より 10.8%アップの 2500万ポンドになるそうです。

男女シングルスの優勝賞金は、それぞれ、前年より 10%アップの 176万ポンド。

「1ポンド=172.8円」のレートで円換算すると、3億412万8000円。

準優勝は 88万ポンド(1億5206万4000円)。

ウィンブルドンで優勝すれば、仮に賞金の半分を税金でもっていかれたとしても、節約生活を実践すれば、一生暮らせるかもしれません。

ちなみに、今年、ウィンブルドンで 1回戦敗退の場合、賞金は 2万7000ポンド(466万5600円)だそうです。
優勝賞金に比べると小額ですが、なかなかの金額。

まあ、予選を勝ち抜いて本戦に出場するだけでも大変なのは、素人の私にも想像できますし、多すぎるということはないのでしょう。

将棋の合い駒処理を実装中

2014年4月28日(月)、コンピュータ将棋のプログラムに「王手に合い駒する処理」を組み込む作業に取り掛かりました。

この日の昼間(午後)、2時間ほど作業して、利き処理を改造し、合い駒を打つ場所を記録するようにしました。
ついでに、桂馬で駒を取る「手」を生成するためのコードも追加。

この時点で、合い駒処理のロジック(論理)は、ほぼ決まっていましたが、具体的な書き方は思いついていない状態で、この日のうちにコードを実装することになるかどうか、分かっていませんでした。

自信というよりは、むしろ、やる気の問題で、この日、私は諸事情により、疲労してました。

20時半頃から約1時間、合い駒処理のコードを書きました。

まず最初に作ったのは、王将の隣に盤上の駒を移動する処理。
ただし、飛び駒(桂馬を含む)の移動合いは組み込みませんでした。

次に、合い駒を打つ処理を作りました。
合い駒を打つ処理は、既存の「駒を打つ処理」のコードを流用して少し直すだけなので、本来なら難しい作業ではありません。

でも、疲れていたためか、21時頃から非常に眠く、意外に時間がかかりました。

この日は、実行ファイルを作り、将棋GUIソフト「将棋所」に付属の思考エンジン「Lesserkai」と対戦させただけで、作業終了しました。

翌29日の午前9時半過ぎ、王手に対する応手をテストしました。

将棋GUIソフト「将棋所」で、先手が私、後手が自作プログラムで対戦してみたところ、後手が反則負け。

空き時間に、原因を調査しなくては!

将棋の駒取り処理、ほぼ完成

2014年4月27日(日)、駒を取る処理を将棋プログラムに組み込む作業を行いました。

処理のロジック(論理)は前日までに考えてあり、27日は基本的にコードを書くのみ。

15時半頃から約1時間かけて、飛車・角行・香車が取ることができる駒の情報を記録するように処理変更する等、駒の利き管理の処理を中心に手入れしました。

20時過ぎから約1時間半、王手をかけている敵駒を取る処理のコードを書きました。

22時頃に入浴してから開発作業を再開し、将棋GUIソフト「将棋所」を用いて自作プログラムを動かしてみたところ、「51王」を「87」の地点に移動しようとして反則負け。

調査の結果、変数の初期化漏れが見つかり、問題解決しました。

この時点で、将棋の駒取り処理は、ほぼ完成です。

まだ、桂馬で駒を取る「手」を生成するコードを入れてありませんが、数行の修正で済むはずです。

王手に対する応手として、残る課題は「合い駒」だけとなりました。

王手をかけている駒と王手されている王将の間に、「持ち駒を打つか、盤上の駒を移動する」処理を作る必要があります。

処理自体は、合い駒できるマスの場所を特定してしまえば、後は既に書いた処理の応用です。

将棋のマスは 9×9 のサイズのため、最も遠距離の王手の場合、合い駒できる場所は 7ヶ所となります。

とりあえず、王手されている方向に王将から 1つ離れたマスを基点として、周囲に合い駒可能な駒があるか探すことにします。

王手の距離によっては、複数のマスを基点にすることになるかもしれません。

錦織、バルセロナ・オープンで優勝

テニスの錦織圭選手が 2014年4月27日、スペインのバルセロナで行われた「バルセロナ・オープン」男子シングルス決勝で、世界ランク65位のサンティアゴ・ヒラルド(コロンビア)と対戦。
6‐2、6‐2で勝ち、優勝しました。

錦織の優勝は、今年2月の全米室内選手権以来で、ツアー通算5勝目(今年2勝目)。
また、クレー(土)コートで行われるツアー大会での錦織の優勝は、今回が初めて。

錦織は今年3月、左股関節痛でソニー・オープンの準決勝を棄権。
今月上旬に行われた、男子テニスの国別対抗戦「デビスカップ」(デ杯)ワールドグループ準々決勝のチェコ戦も欠場し、今回のバルセロナ・オープンが復帰戦です。

決勝の対戦相手ヒラルドは、クレーコートを得意とする選手で、準決勝では世界ランク20位のニコラス・アルマグロ(スペイン)を破っています。
ただ、錦織はヒラルドに過去6戦5勝で、どちらかというと相性のいい相手。

第1セットの立ち上がり、錦織は「0‐2」でリードされますが、その後、6ゲーム連取して第1セットを取り、強さを見せつけるような勝利でした。

今回のバルセロナ・オープンでの優勝の結果、錦織圭の世界ランクは 12位になりそうです。

トップ10入りの常連になることを期待しています。

将棋の駒取り処理作成準備

自作の将棋プログラムで、王手されたときに王将が逃げない問題があり、2014年4月25日に調査しました。

王手されたときの「手」の生成については、王将を逃げる処理は作成済で、動作確認も済んでいます。

約2年半前に開発中断する少し前の時期に何らかの簡単なソース修正を行った際にミスがあり、修正後の動作確認を行う前に開発が中断したものと思います。

メッセージボックスでデバッグした結果、仕様変更の際の修正漏れが見つかり、すぐに修正し、王将が逃げるようになったことを確認しました。

その後、駒を取る処理を将棋プログラムに組み込む準備に取り掛かりました。

「駒を取る」とは、言い換えれば、「敵の駒のある位置」に自分の駒を移動するということ。

王手をかけている駒の位置を特定し、その位置に自分の駒を移動する「手」を生成する必要があります。

王手をかけてくる敵駒の位置は、自分の王将の隣の場合もありますが、遠距離の場合もあります。

手始めに、飛車・角行・香車の「飛び利き処理」を修正するついでに、遠距離と近距離の王手を区別できるように処理変更しました。
なお、桂馬の王手は遠距離に分類しました。

25日は主に「飛び利き処理」の辺りを変更し、翌26日は王手に対する応手の生成処理の辺りにコードを追加したり、高速化のために初期値テーブルの定義を追加しました。

駒を取る処理を将棋プログラムに組み込む準備は、26日までに大部分が済みました。

2014年4月27日(日)は、15時頃から「駒を取る処理」のコードを本格的に書く予定です。

マンチェスター・ユナイテッド、ギグス指揮初戦勝利

マンチェスター・ユナイテッド(以下、マンU)が 2014年4月26日、プレミアリーグの第36節でノーリッチ・シティ(以下、ノリッジ)と対戦しました。

マンU は、4月22日にデイヴィッド・モイーズの監督退任が発表されたばかりで、この試合から当面、選手兼コーチの MFライアン・ギグスが暫定的にチームの指揮をとります。

試合は、イングランド代表FWウェイン・ルーニーとスペイン代表MFフアン・マタが、それぞれ 2得点し、マンU が「4‐0」で勝利しました。

昨シーズンまでのマンU を思わせる、迫力ある攻撃でした。

この試合まで 4連敗中のノリッジが対戦相手だったし、1試合の結果だけでギグスの監督としての力量を判断することは出来ませんが、点差が開いても積極的に選手交代を行う姿勢は良いと思います。

ギグスは、選手から人望がありそうだし、カリスマ性は充分。
将来、名将となる可能性を感じさせます。

日本代表MFの香川真司は先発出場し、後半3分にルーニーの 2点目をアシストし、後半20分に交代。

地元紙「マンチェスターイブニング」の採点では、香川は最高点タイの 7点でした(下記URL参照)。
http://www.manchestereveningnews.co.uk/sport/football/football-news/manchester-united-4-norwich-0-7037379

マンU は今回、ノリッジに完勝でしたが、もっと強いチームに対して今回同様の強さを発揮できるか、注目しています。

「HERO」新作 2007年7月より

ドラマ「HERO」(ヒーロー)といえば、2001年1月8日から3月19日までフジテレビ系の「月9」枠で放送され、当時、視聴率が全話30%超えを記録した作品ですが、2014年7月から「HERO」の新作がフジテレビ系の月曜 21時台に放送されることが分かりました。

2001年に放送された「HERO」は、型破りな検事と生真面目な検察事務官のコンビの操作活動を描く内容で、SMAP の木村拓哉が主役の検事・久利生(「くりゅう」または「くりう」)公平役で、松たか子が検察事務官役でした。

2007年に公開された映画「HERO」でも木村拓哉と松たか子の共演でしたが、今回のドラマでは、久利生とコンビを組む検察事務官を演じるのは北川景子になります。

また、今シリーズから検事役で、杉本哲太、濱田岳らが出演。

前シリーズのレギュラーのうち、八嶋智人、小日向文世、角野卓造、正名僕蔵、田中要次が出演することは明らかとなっています。

松たか子、阿部寛、大塚寧々については、今シリーズに出演するかどうかは不明。

「HERO」は、2006年のスペシャル版(単発ドラマ)で平均視聴率 30.9%、翌2007年の映画は興行成績で同年の邦画(実写) 1位と、良い結果を出してきました。

今回の新シリーズ、私はヒットしないと思っていますが、実際に視聴率がどうなるか、興味深いところです。

本稿を執筆中に思い出しましたが、妻に頼まれて映画「HERO」の DVD を買ったことがありました。

妻は何度か見たようですが、私はまだ見ていません。


HERO DVD-BOX リニューアルパッケージ版 [ 木村拓哉 ]

新幹線開業50周年で記念貨幣

2014年4月25日(金)、東海道新幹線の開業50周年記念貨幣が発行されることが報じられました。

発行される記念貨幣は、額面 1000円と額面 100円の 2種類。
造幣局が 2014年10月から、インターネットと郵便で申込受付するそうです。

額面 1000円の方は純銀の硬貨で、直径 4センチ、重さ 31.1グラム。
発行枚数 5万枚で、販売価格 8300円。

額面 100円の方の記念貨幣については、まだ詳細が発表されていません。

記念貨幣とはいえ、額面 1000円のお金を 8300円払って入手するのは、私には抵抗があります。

1000円銀貨の価格設定を見ると、100円の方の価格は 500円以上の可能性が高そうです。

私は、子供の頃には古銭や記念貨幣に興味があり、収集していた時期もありましたが、現在では集めていません。

1世帯に 1枚、額面で入手できる仕組みを用意して欲しい気がします。