Sun. Jan. 17, 2021 Make HOLUX ezTour usable, even after HOLUX’s failure

This entry is English translation of essense of my Japanese entry titled “2020/12/10(木) HOLUX ezTour を復活させる…”

After HOLUX had been bankrupted, HOLUX m-241 (and m-241Plu)’s logger software ezTour stop showing Google Maps properly. I tried to restore this.

ezTour uses Google Maps API key: “AIzaSyBuAcOB_vBhIk5EcBGT4zMQ8NNPh7ORKjA”. Of course HOLUX had been paying for this key, but after HOLUX’s failure, they stop paying and Google stop Maps API service to this key, so that ezTour is no longer able to show Google Maps.

I start looking ezTour exe binary by use of a binary editor tool (I used Stirling), and found that the API key shown above in UTF-16 format. Google Maps API key can be obtained by anyone. I got mine and replace the API key in the binary file by the binary editor.

The API key is tied to accessing domain name. The domain ezTour using to access Google Maps is holux.com, so I need to modify the URL part which can be found in the binary in UTF-16 format as well.

One of the original URL part is “http://gomap.holux.com/uploadhtmlfile.php“. This is hard coded in the ezTour binary. As I don’t own holux.com domain, so I need to replace this URL with my own domain. I used the binary editor again to replace this URL. I found a few other URL’s and replace domain part of all of them.

Actually, my own domain is bit longer than holux.com, so I need to shorten the rest part of URL like, modify “uploadhtmlfile.php” to “updhtml.php”, so that the total length of accessing URL isn’t changed.

I can’t see the actual script of uploadhtmlfile.php, but I can assume that it saves the received content to the file named after [proj_id] query string with “.html” extension. So I created a PHP script as below. (My server’s document root is /volume1/web/ and you need to modify that part to actual document root of your web server if you use this script.)

<?php
// ezTour uploader (emulated)
// Fri. Oct. 04, 2019 by Hirotoshi OKUMURA

$uploaddir = ‘/volume1/web/ezToolD/TGV/ezTour/’; // need to be changed for actual path for that web server’s document root
$uploadfile = $uploaddir . basename($_POST[‘proj_id’]) . ‘.html’;

echo ‘<pre>’;
if (move_uploaded_file($_FILES[‘file’][‘tmp_name’], $uploadfile)) {
echo “File uploaded.\n”;
} else {
echo “Error on move_uploaded_file()\n”;
}

>

updhtml.php

In my tweet below, you can see the screen shot of working ezTour even after the date of HOLUX failure.

2021/01/05(火) Let’s Encrypt SSL 証明書

この Blog、SSL 対応自体は以前からしていたのですが、証明書を自分のドメインで取っていないとか、HTTP でもアクセス可能だとか、中途半端な状態のままでした。

ふと思い立って、2021/01/05(火) に Let’s Encrypt の SSL 証明書を発行して、ちゃんと自分の okumura.com ドメインの証明書にして、また HTTP でアクセスに来た場合は HTTPS にリダイレクトする設定を行い、SSL 化しました。

2020/12/10(木) HOLUX ezTour を復活させる…

私の blog にはあまりアクセスはありませんが、twitter log となっている旧 Blog (http://blog.okumura.com) のうちのある 1 日、2019/09/11(水) のページ にはけっこうアクセスがあります。HOLUX ezTour を使えない人が検索で見に来ているのかな、と思いますが、この 2019/09/11(水) の tweet には、具体的な対策は何も書かれていません。

その後、2019/09/14(土) の tweet (2019/09/14 のつぶやき) では具体的な対策を書きましたが、Google Maps への HOLUX の支払いが停止してしまったことにより、ezTour に組み込まれている HOLUX が契約していたと思われる Google Maps API キー “AIzaSyBuAcOB_vBhIk5EcBGT4zMQ8NNPh7ORKjA” が無効になってしまい、この 2019/09/14(土) に書いた方法は使えなくなってしまいました。

そこでもう少し調べてなんとかできないかやってみました。
ezTour の実行ファイルをバイナリエディタで確認すると、上記のキーが UTF-16 形式で保存されている個所がありました。Google Maps の API キーは誰でもお金を払えば登録できるので、登録して、バイナリエディタで ezTour の実行形式の該当部分をバイナリエディタで書き換えました。また、Google Maps の API キーがアクセスする時の Host: ヘッダーのドメイン名と関連付けられているため、元々 holux.com となっていたドメイン名部分も、バイナリエディタで書き換えてしまい、かつ、そのドメインのサーバー (つまり自分の web server) で動く php プログラムを作ることで、ezTour はちゃんと Google の地図を表示できるようになりました。ドメイン名部分を単純に書き換えると、私の所有しているドメインとは長さが異なるため、バイナリ全体の長さが変わってしまいます。それでも動くかどうかはよくわからなかったので、URL のドメイン名とは別の部分を変更して長さが変更前と全く同じになるように調整しました。
URL の部分は具体的には、”http://gomap.holux.com/uploadhtmlfile.php” という URL が実行形式内にハードコードされています。これを自分のドメインに変更するのですが、自分の所有しているドメイン名はもっと長いので URL のドメイン名部分が長くなってしまうので、例えば “uploadhtmlfile.php” を “updhtml.php” に変更して、その長さの分を短くして、URL 全体の長さを同じにするようにしました。

本来の uploadhtmlfile.php の中身は当然見れませんが、外形的にやっていることは proj_id という query 引数に html 拡張子を付けたファイルに、クライアントから送られてきたデータを全て保存しているだけとわかったので、その動きに合わせて以下の php スクリプトを作りました。(ドキュメントルートは /volume1/web/ です。実際に試みられるのであれば、それぞれの web server の document root に応じて書き換える必要があります)

<?php
// ezTour uploader (emulated)
// Fri. Oct. 04, 2019 by Hirotoshi OKUMURA

$uploaddir = ‘/volume1/web/ezToolD/TGV/ezTour/’; // need to be changed for actual path for that web server’s document root
$uploadfile = $uploaddir . basename($_POST[‘proj_id’]) . ‘.html’;

echo ‘<pre>’;
if (move_uploaded_file($_FILES[‘file’][‘tmp_name’], $uploadfile)) {
echo “File uploaded.\n”;
} else {
echo “Error on move_uploaded_file()\n”;
}

>

updhtml.php

以下の 2019/10/04(金) の tweet が、実際にこれらの変更を行った後の画面です。

現在 2020/12/09(水) でも、この書き換えた実行形式で ezTour は HOLUX m241Plus から読み込んだ GPS log データの地図を表示できています。
ただ、実行形式ファイルを書き換えてしまっているためか、セキュリティソフトが警告を出すようになってしまいました。

上記までの説明を読んで意味が理解できる人は、おそらく全く同じことができます。リスクと言えるようなリスクはありませんが、own risk でやってみようという方のヒントとなれば幸いです。なお、上記までを読んで「自分でもできるな」と「思えない人」への質問に答えるつもりはありませんのでよろしくお願いします。

2020/10/19(月) Happy Birthday my blog

奥村の貧乏暇なし Blog は、SeeSaa blog でホストするブログとして 2005/10/19(水) に開設されました。途中 WordPress への移行、さらに別サーバーの WordPress への移行がありましたが、通算で今日で 15 周年となり、16 年目に突入します。

まぁ、全然更新してませんが…

2020/07/09(木) WordPress メール投稿設定、とある web mail からの投稿試験

WordPress でメール投稿の設定後、ガラケーのメールからは投稿が確認できました。

次は、とある web mail から、設定したアドレス宛にメールを送って試験をしています。メール署名付けたまま送って、それも投稿に載ってしまったりという間違いをやってしまいそう…

2020/07/06(月) Hello world! – 新しいサーバーに移行しました。

WordPress を古いサーバーから新しいサーバーに移行しました。

新しいサーバーは仮想サーバーが設定できるので、URL を、パス名の付いていた http://server.okumura.com/blog という以前の URL から、http://weblog.okumura.com/ と、ちょっと見栄えのよい URL に変更できました。(http://blog.okumura.com は、さらに以前から使っている SeeSaa の Blog を、Twitter log として残してあるので、weblog にしました)

2018/04/17(火) 朝日新聞がダウンロードできるようにしている、陸自イラク日報 370 + 26 + 39 = 435 日分の PDF

朝日新聞が web site で昨日 2018/04/16(月) に公開した記事 「陸自イラク「日報」防衛省が公表した全文書」 は、陸自イラク日報 (3 区分それぞれ、370 日分 + 26 日分 + 39 日分 = 合計) 435 日分の PDF をダウンロードできるようにしている記事です。

とても素晴らしい記事だと思いますが、PDF を 1 つ 1 つダウンロードするのはとても大変です。

この Blog post は、上記の記事からリンクされている 435 個の PDF ファイルを HTML の img タグで指定してあります。PDF を img タグで指定しているので、この Blog post 自体は、壊れた画像ファイルのアイコンが 435 個表示されるだけになっています。

何の意味があるのかというと、こうすることで、この Blog post を表示させてブラウザーでダウンロードすると、1 回のダウンロード操作で、435 個の PDF が画像扱いでダウンロードされるということができます。そのような操作で使われることを意図した post です。

ご活用ください。



















































































































































































































































































































































































































































2016/12/25(日) Tokyo Bowl 慶応義塾大学ユニコーンズ vs 立命館大学パンサーズ

母校、立命館大学のアメリカンフットボールチーム・パンサーズは、今年 2016 年は関西学院大学ファイターズに敗れて、甲子園ボウルに出場できませんでした。

3 年前から、関東の大学リーグが、関西リーグの有力校チームを招待して行う、東西大学対抗戦と言う名目で Tokyo Bowl というボウルゲームを新設しました。有力チームと言いますが、もっとも「有力」なチームは東西とも甲子園ボウルに出ることになるので、開催初年以来、東西それぞれの 2 位のチーム同士が対戦しています。(ただし、公式には 2 位のチームが出場するとはどこにも書かれていないと思います)

甲子園ボウルに出場できなかった立命館大学は、この Tokyo Bowl に出場することなりました。

3 年前の第 1 回の Tokyo Bowl も立命館大学が出場しています。その時は見にいけませんでしたが、今年は他の予定とも重なっておらず見に行くことができました。

今回の会場は、横浜スタジアムです。第 1 回はアミノバイタルフィールドだったそうですが、第 2 回は川崎球場と、Tokyo Bowl という名前であるにも関わらず、神奈川県での開催となり、第 3 回の今回も、神奈川県開催です。Kanagawa Bowl やんと突っ込まざるを得ません。

非常に寒い日ですが、天気は雲 1 つない快晴の中、横浜スタジアムに到着しました。客の入りはとても寂しく、慶應、立命館、どちらも 2000 人いるか、いないか、という感じです。しかも地元の慶應は、一応応援団の吹奏楽、チアリーダーがいますが、立命館側は、応援団なしです。

スタンドがスカスカのまま試合前セレモニーが始まりました。まずはコイントスです。特にコイントスのために誰か呼ばれているわけでもなく、審判がコイントスをします。ボウルゲームで、こんなあっさりしたコイントスは珍しいように思います。コイントスには慶應が勝ち、後半のレシーブを選択しました。

コイントス終了
コイントス終了

それぞれのチームが円陣を組みます。私は長年立命の円陣は何を言っているのかわからなかったのですが、「Whose house? Whose house?」 と中央に立つ人 (主将?) が問いかけ、円陣を組む選手たちが、体を左右に揺らしながら 「Rit’s house、Rit’s house」 と応じているらしいです。

Whose house? Rit's house!
Whose house? Rit’s house!

そしてキックオフですが、キックオフの体勢に両チームが入ってから、なかなか審判がキックオフの合図をせず、試合が始まりません。どうやら試合前のスタート進行のタイミングが不適切だったので、キックオフ時刻の 14:00 まで、まだ 5 分ぐらい余っている状態で、両チームをキックオフの体勢にさせてしまったようです。審判団のミスだと思います。結局、一度両チームに体勢を解除させました。それぞれ、フィールドにいる選手だけで円陣を組んでいましたが、今更話をすることもないだろうから 「この審判団アホちゃうんか」 というような話をしていたのだろうと思います。後ほどわかるのですが、実際、この日の審判団は、アホでした。

結局 14:00 になる前にキックオフとすることを決めたらしく、再度両チームの選手がフィールドに散らばり体勢を作り、キックオフです。

キックオフ
キックオフ

キックオフ
キックオフ

立命館のレシーブで試合が始まり、最初のドライブはパントで終わります。立命館の選手は、慶應の実力がよくわからず、探り探り試合を進めている感じでした。

慶應のドライブもパントで終わります。

次の立命館のドライブはかなり進みましたが、タッチダウンには至らず、フィールドゴール (FG) で終わりました。とりあえず先制です。

立命館、先制のフィールドゴール (FG)
立命館、先制のフィールドゴール (FG)

その後は、立命館の怒涛の攻撃という感じで、このままだと完封かな、という感じの展開でした。第 1Q は、まだ慶應の力を試しながらプレーしている感じでしたが、第 2Q に入ると、特に立命館のディフェンスチームがものすごく機能するようになりました。相手チームのオフェンスがどの程度なのかをつかめたようで、慶應のオフェンスはほとんどゲインできない状況になってしまいました。

後半に入ると、立命館は 2 線の選手を中心にしたプレーになったようで、あまり得点は奪えなくなっていましたが、それでも力の差は歴然という感じでした。慶應の攻撃は、点差が大きいためパス中心で大きなゲインを狙い続ける必要があったのはわかるのですが、ランも交ぜないと、パスだけでドライブできるはずがありません。慶應のクオーターバック (QB) は、後半は全く落ち着いてプレーができていなかったと思います。インターセプトも 5 回ありましたが、そのうち 1 回は、パスの投げられた先のフィールドポジションには、その地点に向かって走っている慶應のレシーバーを立命の選手がブロックしているということもなく、立命館の選手しかいないという、八百長で負けようとしているとしか思えないようなプレーさえありました。

では立命館が強かったのかというとそんなことは全然ありません。例えばこの写真のプレー。この距離なら外さないだろう、というような距離の FG を外したのですが、スナップがずれてホルダーがボールを受け取るのに体を大きくひねらなければならないような状況になっていました。

FG トライでスナップが大きくずれたシーン
FG トライでスナップが大きくずれたシーン

この後、ホルダーはよく立て直してちゃんとボールをセットしたと思います。

ホルダーはがんばってセットしたように見える…
ホルダーはがんばってセットしたように見える…

しかし、キッカーが動揺したのかちゃんと蹴れず、FG 失敗となりました。

あと立命館のこの試合での問題点は反則です。コンタクトスポーツでは避けがたい反則というのはありますが、今日の立命館は、明らかに避けられるような反則を何度も繰り返していました。中盤以降は、あまりに弱い慶應に、立命館側のプレーヤーは discipline を保てなくなっていて、反則しまくりになっていたという印象です。

あと、この試合で気になったのは審判団です。意味の無いイエローフラッグを投げたり、反則のコールを間違えたりしてました。

審判の行為の中で、慶應の選手にとってかわいそうだったのは、立命館のバックワードパスを、慶應の選手がはたいて落としたプレーです。慶應の選手はおそらくバックワードパスだと認識していたので、パスインコンプリートにはなっていないと判断していたはずです。フィールドポジションも立命館のゴールに近い場所だったので、慶應の選手が拾ってプレーが続行していれば、タッチダウンになっていてもおかしくない状況でした。慶應の選手がバックワードパスをはたいて落としたと判断していたことは、動きを見ていても明らかだったと思います。ところがほとんどの審判がフォワードパスだと誤認識していたらしく、パスインコンプリートと判断して笛を吹いてプレーを止めてしまっていました。笑ってしまえるのは、この直後にプレーを再開しようとした時、「フォワード・パスインコンプリートだから」 という理由でプレーを止めたので、前回のスナップ位置からプレーを再開しようとしている途中で、審判団の 「プレーの確認」 があって、「最後のプレーはバックワードパスを落としていたので、プレー再開位置は元の位置ではなく、ボールデッドの地点です」 と場内への説明を行って、スナップ位置を下げてしまったことです。ヒドすぎます。

立命館の選手にとってかわいそうだった審判のミスは、立命館のディフェンスがオフサイドした時の判断です。立命館のディフェンスがスナップ前にオフサイドした時、その瞬間にイエローフラッグが 2 枚飛びましたが、レフリーはプレーの開始を止めずに続行させていました。立命館のディフェンスの選手の何人かは、スナップされる前に飛んだイエローフラッグを見て明らかに気を抜いていたように見えました。そのためもあってか、慶應のこの日のオフェンスでは一番ゲインがあったのではないかと思うぐらいのゲインがありました。笛を聞く前に気を抜いてしまった立命館のプレーヤーにも問題はあると思いますが、レフリーはなぜ笛を吹かなかったのでしょうか? これはレフリーのミスだと思うのですが… (プレーを続けさせる別の基準があったりして、違うのかな…?)

こんなヒドい審判をされていても、両チームとも何の文句も言わずに淡々と審判の結果に従ってプレーしているのがすごいなと思いました。

そんな感じで試合は進み、結局慶應義塾大学ユニコーンズは FG 2 本でタッチダウンなしの 6 点のみで、慶應義塾大学ユニコーンズ 6 – 44 立命館大学パンサーズという、それなりの大差が付きました。

慶應義塾大学ユニコーンズ 6 - 44 立命館大学パンサーズ
慶應義塾大学ユニコーンズ 6 – 44 立命館大学パンサーズ

試合の最後は立命館の攻撃で、ダウンを更新したところでニーダウンでの決着となりました。

立命館大学パンサーズ、最後はニーダウンで時計を流して試合終了
立命館大学パンサーズ、最後はニーダウンで時計を流して試合終了

慶應義塾大学ユニコーンズの試合を初めて観戦した感想としては、ランプレーでは何度か非常に力強いよいプレーがありましたが、それ以外の点では、「本当にこのチームが関東の 2 位なの? 法政よりも、日大よりも強いの?」 という感じでした。甲子園ボウルでも関西のチームの優勝が続いていますが、去年 2015 年の甲子園ボウルの早稲田大学ビッグベアーズ対立命館大学パンサーズの接戦を見る限り、関西と関東の差は縮まってきているように思っていました。しかし、今日の試合や、1 週間前の甲子園ボウルを見ている感じだと、今年は差が広がったのかも、という印象を受けました。

最後に、プレーの合間に気になったものを撮った写真をいくつか…

立命館の使っていたテントですが、関東大学から借りたもののようです。セブンイレブンのロゴが入っていて 「セブンイレブンは関東大学アメリカンフットボール部を応援します。」 とプリントされていました。

セブンイレブン・関東大学のテント
セブンイレブン・関東大学のテント

座った席の上段 (つまり、後ろ) を振り返ると、立命館大学パンサーズのスポッター席がありました。

立命館大学パンサーズのスポッター席
立命館大学パンサーズのスポッター席

試合の後半、フィールドにいる報道カメラマンらしき人が、なにやら全然関係ない方向にレンズを向けて写真を撮っていました。

どこにレンズ向けて写真撮ってるの?
どこにレンズ向けて写真撮ってるの?

方向から判断すると、この時の被写体は、ナイター照明です。

撮影対象は、おそらくこのナイター照明
撮影対象は、おそらくこのナイター照明

この日は天気が良かったので、青空背景にナイター照明を撮ると、「秋晴れの下、横浜スタジアム」 という感じの写真が撮れそうではありました。

慶應の応援団のうち、吹奏楽は遠目で見ていてはっきりとはしませんでしたが、おそらくエキサイティングシートに座っていたと思いますが、チアリーダーたちは、そのまっすぐフィールド寄りではなく、ずっと端の方、エンドゾーンの真横ぐらい端っこの方に居ました。

慶應の応援席。こちらから見て向かって左手の方に観客が多く座っているのに、チアはこの写真では右下にいる
慶應の応援席。こちらから見て向かって左手の方に観客が多く座っているのに、チアはこの写真では右下にいる

立命館側もそうですが、慶應側も、応援に来ていた観客の多くは 50 ヤードラインの真横となるあたりに座っていたので、エンドゾーンの真横あたりの観客席には、ほとんど人がいません。そのためチアは試合中、ほとんど観客のいない客席に向かって踊り続けていました。

慶應チアの目の前のスタンドはガラガラ
慶應チアの目の前のスタンドはガラガラ

たぶん位置決めしてバミ・テープなどでマーキングしてしまってあるので、試合が始まってからおかしいと思っても、場所を動けなかったのだと思いますが、吹奏楽があの場所でやることを決めた時に、どのあたりに一番観客が入るかは考えていたはず。なぜチアだけあんな端っこに追いやったのか不思議です。

あと、フィールドに 50 ヤード、40 ヤードなど 10 ヤード毎の数字が書かれていますが、今回のフィールドは、エンド手前のエンドラインのところに “G” と書かれていました。”G” は “Goal” の “G” のような気がしますがアメリカンフットボールではあまりゴールと言わないので、ここに “G” と書いてあるのはかなり不思議な感じがしました。

エンドラインのところにある謎の "G" のマーク
エンドラインのところにある謎の “G” のマーク

来年は Tokyo Bowl ではなく、甲子園ボウルを観戦したいので、立命館大学パンサーズにがんばってもらいたいところです。

2016/12/22(木) 羽生善治三冠講演会「AI 時代の行方」

しばらく前に毎日メトロポリタンアカデミーで、羽生善治三冠講演会「AI 時代の行方」というイベントがあるのを見つけ、申し込んでみました。その開催日がこの日 2016/12/22(木) だったので、有給休暇を取って行ってきました。

会場は池袋のホテル・メトロポリタンです。

ホテル・メトロポリタン
ホテル・メトロポリタン

3F の「富士」という宴会場が会場です。

ホテル・メトロポリタン 3F 宴会場 「富士」
ホテル・メトロポリタン 3F 宴会場 「富士」

到着して受付をします。自由席ですと言われて会場に入って行くと、7 ~ 8 割ぐらいは既に埋まっている感じで、そんなに空席がありません。最初に見つけた空席だと思った席には、近寄っていくと荷物が置いてあったりして、なかなか空席が見つけられません。そのままずんずん進んでいくと、なぜか演台のすぐ目の前のテーブルに空席が 3 つ並んでいました。よくわかりませんが、結果としてはラッキーなことに一番前の席に座ることができました。

自席から演台を見ると、こんな近くです。

一番前の席だったので演台が近い!
一番前の席だったので演台が近い!

時間になると司会の方が出てきて、羽生善治三冠を呼び込みます。その直前に注意事項の説明があったのですが、「写真は、自席からのみ撮ってください。また、ストロボを焚かないでください。」 と言うことで、逆に言うと写真を撮ってもよいということでした。この説明があってから、会場で多くの人がスマートフォンを取り出して写真を撮る準備をしていました。

司会の方
司会の方

そして羽生善治三冠が登場して講演がスタートです。

講演をする羽生善治三冠
講演をする羽生善治三冠

羽生さんは、話し始めにすごく簡単な前振りだけ話すと、けっこうすぐにコアな話を始めました。話の仕方にあまり抑揚がなく、羽生さん自身の頭の中で考えていることを確認しながらしゃべっているというような感じの、独特のしゃべり方です。

以下、羽生さんの話された内容というよりは、私が理解した内容です。メモも少しは取ったのですが、話の内容が膨大だったこともあり全然メモし切れなかったので、記憶に頼って書いている部分が大半です。間違っている部分とかもあると思いますので、その点はご了承ください。あと、もし当日参加しておられた方で、明らかに間違っている点に気づかれた方は、コメントなどで指摘いただけると助かります。

前半は、羽生さんなどのプロ棋士が将棋をする時にどのようなことを考えているのかという話しで、後半は、AI すなわち人工知能の話です。後半では将棋ソフトのアルゴリズムのようなことをもっとお話しされるのかと思っていましたが、そういう話は少しだけで、もっと一般的に人工知能全般の話をされていました。この後半の話は、NHK の人工知能の番組のリポーターとして取材した経験からのお話しが多かったようです。NHK の人工知能の番組というのは、NHK スペシャルの 「天使か 悪魔か 羽生善治 人工知能を探る」 という番組のことだと思います。不勉強で知らなかったのですが、放送時には天才・羽生さんが人工知能について解説したということでけっこう話題になったそうです。

お話しの具体的な内容ですが、まず前半。将棋の手を読むと言うと、「何手読むのですか」 と聞かれるけど、実際に読んでいる時には数えていないので、実はよくわからないそうです。でも昔のプロ棋士が 3,000 手は読んでいると言ったのを聞かれた時には、それは言いすぎだと思ったそうです。でも 1,000 手は読んでいると思うとのことでした。

実際には着手可能な手はそれぞれの局面で何十通りもあるのですが、実際の読みは、そのうち 3 手程度を直感で選んで、そこから読み進めていくのだそうです。3 手というと少ないような気がしますが、それぞれに、相手の手も 3 手、さらにそれに対する自分の手も 3 手と読んでいくと、これだけで 3 の 3 乗、27 通りの状況を読むことになります。このように、ほんの数手進む局面を検討するだけでも 「数の爆発」 という現象が置き、読まなければいけない手はすぐにものすごく多くなってしまいます。

そこで気になるのが長考ですが、羽生さんによると、昔から 「長考に妙手なし」 と言うらしく、長考して指した手があまり良い手であることはないそうです。3 時間とか 4 時間とか考えることもあるのですが、最初の 30 分ぐらいは、論理的に手を読んでいるそうですが、その後の時間は、迷いを感じたり、読みで選んだはずの手を指すべきかとまどったりしているだけで、実はあまり読み進められたりしているわけではないそうです。また、相手が長考に入ると、自分もまず相手の手を読んで、その次、と考えるのですが、1 時間ぐらいすると考えることがなくなって、その先は 「今日の晩御飯どうしよう」 とか将棋とは関係ないことを考えてしまったりするそうです。棋士の方は 3 時間でも 4 時間でも手を読み続けられるものと思っていたし、そうであるからこそ長考しているのだと思っていたので、かなり意外でした。

身振りも交えながらお話しをされる羽生善治三冠
身振りも交えながらお話しをされる羽生善治三冠

人工知能のお話しは、歴史の話から始まりました。いきなり将棋ソフトの話をすると思っていたので、これも意外でした。

囲碁、将棋、チェスなどは、AI が人間にかなり追いついていますが、場面の可能性はまだまだあり、完全解析はされていないそうです。しかし、チェッカーというボードゲームは、コンピューターにより完全解析が終わってしまっていて、もはやどのような場面でも、どの手が最善なのか、完全にわかっている状態になってしまったそうです。ただ、囲碁の場面の数の可能性は、その数自体が、宇宙全体に存在する分子の数より多い、というような数になるというお話しもされていたので、おそらく完全解析はできないのだろうと思います。

将棋については、「あと 5 手で詰む」 というような状況については、コンピューターによる完全解析に近い状況になっているそうです。実際に詰め将棋は、最近は出題の横に 「コンピューターはこれを 3 秒で解きました」 というような説明が載っていることもあるらしいのですが、人間は場面の状況を認識するだけでもそれ以上の時間がかかるので、絶対にかなわない状態になっています。

また序盤についてもコンピューターによる解析はかなり進んでいて、中盤の部分がこれから進化していく部分なのだそうです。

人が読むのと同じように、手を読み進めて行きますが、中盤では最終局面まで読みきれるわけではないので、ある程度進めたところで、その場面を評価する必要が出てきます。それが評価関数というもので、その出来のよさが、将棋ソフトの強さを決める 1 つの要素だということです。読みを進めるにはアルファ、ベータ探索という方法を使いますが、どこかで読みを打ち切って評価関数に頼るため、その先で逆転があると、最善ではない手を選んでしまうことがあり、それを水平線効果というそうです。私はアルファ・ベータ探索が何か知っていましたが、羽生さんは、アルファ・ベータ探索というのが何なのか、ということについては説明をしませんでした。聞いていた人の中には、何を言っているのかわからなくなっていた人もけっこう居たのではないかと思いました。あと、私が勉強した時 (30 年ぐらい前の話ですが…) は、アルファ・ベータ刈りの地平線効果と言っていたように思います。同じことですが、最近は水平線効果って言うのでしょうか…

世界トップ選手である韓国人棋士に勝った囲碁のアルファ碁では、2 つの評価ベースを持っていて、論理的読みと、大局観をベースにしたものとかあるらしいです。

このような新しい処理の考え方は、他のゲームのソフトとも共通する部分があり、お互いに取り込みあっているようです。例えば、チェスのソフトにストックフィッシュというソフトがあり、その思考エンジンの流れが、将棋ソフトにも取り込まれているそうです。

ディープラーニングについては、コンピューター自体が評価をどんどん進めていって、その結果に基づいて評価関数自体を調整したりするのですが、その調整の過程を人間が理解することは困難です。羽生さんは 「過程がわからない」 と説明しましたが、たぶん実際には過程をログすることは可能だと思いますが、そこから意味を人間が読み取ることが困難という意味だと思います。そのため結果として出てきたものが正しいかどうかという判断が実は難しいそうです。将棋ソフトの場合は、その結果は、将棋のゲームに勝ったり、負けたりというような結果でしかないのですが、株の売買を行う人工知能だと、実際にお金を儲けたり、損したりしますし、医療分野の人工知能だと、治療が成功したり、失敗したりする結果になります。

また、哲学的な問題、倫理的な問題についても、人工知能は扱うのが苦手だそうです。

ディープラーニングについては、NHK の番組の取材で 「レンブラント風の絵を描く人工知能」 というのを取材したそうです。レンブラントの絵を何枚も学習した結果、あの独特の光の使い方をする絵を描けるようになったのだそうです。それっぽい小説を書いて文学賞に応募したり、というような事をやっている人工知能の研究者などもいて、学習できる情報が大量にある場面では、かなり有効な使い方ができるようになってきているということでした。

不思議な話としては、3 駒関係という解析があります。盤面全体ではなく、飛車と歩と金、のような 3 駒の関係に絞って、その相互の配置などについての評価をしておくと、その評価が洗練されていくことによって、その評価を使った将棋ソフトは強くなっていくのだそうです。なぜこのようなことになるのかはよくわからないそうです。

最近の囲碁、チェス、将棋などのソフトの能力向上には、ディープラーニングなどソフトの新しい方法論が取り入れられているということもありますが、ハードの能力向上も重要な意味を持ちます。かつて将棋ソフトの開発者の 1 人は、ソフトは全く進化しなくても、ハードがどんどん性能向上していくだけで、どんどん強くなると言ったそうです。同じ時間で 3 手しか読めなかったものが、100 手読めるようになるとか、そういう意味なのだと思います。

また囲碁、チェス、将棋のような完全情報のゲームは人工知能が得意としていますが、マージャンのような不完全情報のゲームはまだまだ研究が進んでいないようです。完全情報というのは、相手の持ち駒、盤面など、形勢を判断するための全ての情報が見えているゲームということです。マージャンは、プレーヤーには、他のプレーヤーの牌や、山に積まれているまだ取られていない牌についての情報はありません。

人工知能が得意ではないもう 1 つの問題としてフレーム問題というのがあるそうです。例えば、人間は、初めて訪問して勝手があまり良くわかっていないお宅であったとしても、「お茶を淹れて」 と頼まれれば、適当にやかん、湯のみ、お茶の葉などを探してお茶を淹れることができます。人工知能にはこういうことができません。知らないことはできないのです。

また人間は、漫画に 「うなぎいぬ」 が出てくると、即座にそれを 「うなぎいぬ」 というキャラクターとして認識し、次に出てきた時には既に、「これは、うなぎいぬだ」 と理解できますが、人工知能に 「うなぎいぬ」 をディープラーニング的手法で理解させるには、かなり大量の 「うなぎいぬ」 を見せてやる必要があります。これも人工知能の苦手な部分です。

他に人工知能が得意ではない点として、学習と推論を平行してできず、学習の段階では学習だけを行うようにしか今はできていないそうです。

また、現時点では物理的なアクションが必要になるような分野は、まだまだ不得意であるとのことでした。

面白い研究としては、北陸先端科学技術大学では、「接待将棋」 の研究をしているそうです。つまり、プレーをしている相手よりは確実に棋力のある人工知能プレーヤーが、将棋をしている相手に 「手を抜いている」 と気づかれない程度に手を抜いて、相手を気持ちよく勝たせることができるか、という研究です。実際に棋力を調整すると、明らかに負けるための 1 手とかを指してしまい、うまく行かないらしいのです。ゴルフプレーヤーロボットが登場した時にも、接待ゴルフができるようにするのは難しそうだと言っていました。

最後の方で話をされていたのは、このように人工知能の将棋が、プロの最強棋士とあまり変わらない状況となった時に、棋士とはどうあるべきものなのか、というような話を少しだけされていました。フロールゲートというコンピューター同士が対戦した将棋の棋譜を公開しているサイトがあるのですが、羽生さんは、このフロールゲートでのコンピューター同士の対戦を見ていても、面白いと思うのだそうです。プロ棋士の仕事というのは、将棋の対戦を見せて、それを楽しんでもらうことでお金をもらっているとも言えるわけで、コンピューターとどちらが強いか、ということとは関係なく、将棋の対戦を見せる、という行為自体を完全にコンピューターに置き換えられてしまうと、仕事はなくなってしまうわけです。それにどうやって対応していくかは考えなければならない課題だということでした。

講演の内容はこんな感じです。こうやって書いていても、話があっちこっちと飛んでいてわかりにくいのですが、実際に講演を聞いていて思ったのは 「羽生さんって、将棋は強いけど、話をするのは下手なのかも…」 ということでした。おそらくあまりに頭が良くて色々な事を知っているため、「聞き手がこんなことを知らないはずはない」 と思って話を省略されてしまうという点が 1 つと、羽生さん自身の記憶力がものすごく良いため 1 時間ぐらいある講演の最初の 5 分ぐらいで話した内容を、最後の 5 分のところで 「さっきのあの話」 とつなげても、みんな覚えているものと思っているようなのですが、実際には聞き手は 1 時間近い前のことなんて既に忘れていて話がつながらないというようなことがあって、話がわかりにくいのかな、と思いました。

講演が終わって羽生さんへの質問コーナーがありました。先ほどの説明にあった 3 駒問題への質問への回答で、おそらくコンピューターの能力が上がってくると、5 駒問題、とか、駒数が増えた状態での解析が行われるようになって、それにより将棋ソフトの強さも向上するのではないかというお話しがあったのが少し印象に残りました。

質問コーナーも終わり、司会の方が 「それでは羽生善治さんに拍手を」 と言ったので、そのまま退席されるのかと思ったら、演台のすぐ目の前にある関係者席のテーブルにあった空席に座られました。今回のイベントは、羽生さんの講演会に、昼食がついているのですが、なんと、昼食の時間も羽生さんが同席なのです。その瞬間まで知らなかったので、なにかすごく得した気分になりました。

昼食に参加するため関係者席に座られた羽生善治三冠
昼食に参加するため関係者席に座られた羽生善治三冠

食事はまずスープです。

スープ
スープ

続いて、パンが 2 つ (温めて出してくれると良いのにと思いましたが、冷たいまま出てきました)、メインディッシュの、豚肉のソテー・ジャガイモ・ニンジン・ブロッコリー添え、あとはサラダが出てきました。

パン、豚肉のソテー・ジャガイモ・ニンジン・ブロッコリー添え、サラダ
パン、豚肉のソテー・ジャガイモ・ニンジン・ブロッコリー添え、サラダ

最後にデザートとしてプチケーキが出てきて、あと、コーヒーも付きます。

デザートのプチケーキ
デザートのプチケーキ

コーヒー
コーヒー

事前に説明されていたイベントの案内で、講演会の後に食事が付きます、と書いてあったのですが、立食形式のビュッフェで、出遅れるとほとんど食べるものも残っていないような状況になるのかな、と勝手に想像していたのですが、予想よりずっとよい感じの食事を、着席でいただくことができて、とても良かったです。

食事の始まる時に、司会の方から 「食事中、羽生善治三冠には、サインを求めないようにお願いします」 という注意のアナウンスがありました。そのためか、羽生さんに話しかけに行く人はほとんどいませんでした。私はツーショットを撮ってもらいたいと思っていたので、食事が終わったぐらいのタイミングで、先陣を切って行ってみました。すると、快く応じてくださり、無事ツーショットを撮ることができました。

羽生善治三冠とツーショット
羽生善治三冠とツーショット

羽生さんとツーショットを撮れるようなチャンスはなかなかないと思うので、とてもうれしかったです。

先ほど質問タイムで手を上げていたのに指名されなかったので出来なかった質問もしてみました。電王戦に出て、最強といわれる将棋ソフトと戦ってみたいと思われているのか、という点です。それについては、もちろんあるし、研究もされているということでした。人間相手とは手の特徴がまったく違うため、人間相手の時とは全く異なる準備をしていかなければならないだろうということでした。また、コンピューターとの対戦は、練習や研究としてはされているのか、と聞いてみたところ、しているし、既に公開している棋譜もあるとのことでした。公開している棋譜ってどこで見れるのでしょう…?

私がツーショットを撮ってしまったがために、羽生さんと上記のお話しをし終えて、自席に帰ろうと後ろを振り向くと、大勢の人が行列を作っていました。ちょっと羽生さんに申し訳ないことをしたな、と思いましたが、羽生さんはそれら大勢の人に、とても丁寧に、笑顔で対応されていて、さすがだなぁ、と思いました。

今回のイベントは、色々な意味で期待を上回り、参加できてとてもよかったです。毎日メトロポリタンアカデミーは、過去の開催記録を見ると、政治家や、財界関係者などを招いた講演会が主なようで、羽生さんはちょっと異例な感じです。おかげでコアな将棋ファンに埋め尽くされる前にチケットを取れたということがあるように思いますが、逆に毎日メトロポリタンアカデミーに再び羽生さんが登場することはなさそうだなぁ、という感じでもあるので、残念ながら、この素晴らしいイベントは今回限りとなりそうです。

また羽生さんの登場するイベントを見つけられれば、行って見ようと思いました。