画像変換チートシート
コマンドラインで画像変換を完結するためのメモ。
PS2版ドラゴンクエスト5のタイムアタック
遠い昔、プレイステーション2 版の ドラゴンクエスト5 で遊んでいた頃のノートがつい先日出てきた。
家の中を整理してたら、PS2版ドラクエ5をゲーム内時間 2時間53分でクリアした時のメモが出てきた。 pic.twitter.com/1t1IdBseIs
— Yosuke Mizutani (@mogproject)
折角なので、Github にラップタイムをまとめておく。
Aqua SKK を使う
日本語入力メソッドして、SKK を使いたい。(実は過去に一度使ったことがあるが挫折したので再挑戦)
Mac では Aqua SKK という実装があるのでそれを導入する。
Simple Kana to Kanji conversion program の略。形態素解析をユーザーが明示的に行うことで、変換ミスのストレスを軽減させることができるという非常にユニークな日本語入力メソッドだ。
詳しくは以下のリンク先を参照。
公式ページはこちら
だが、現在は GitHub 上で開発が進められている。 ここ
からダウンロード可能な最新版の dmg ファイルを実行するとよい。
インストールの完了にはログアウトが必要。
SKK はシフトキーを多用する入力メソッドである。
そこで実際の SKK ユーザの大半は、シフトキーを押さなくてもシフトを実現できるような工夫をしている。
特定のキーを押すことで、直後のキーを Shift オンの状態で入力できるようにする機能。
例えば、セミコロン「;」をスティッキーキーに指定した場合、「;foo;bar」と打鍵すると「FooBar」と入力されるようになる。(セミコロンなのは英語キーボードを使っているため)
Mac では、Karabiner (旧名 KeyRemap4MacBook) でその機能を実現できる。

Shift and Space。スペースキーと同時に他のキーを押した場合に Shift オンの状態にする。
親指でシフトを押せるようになるのがポイントだが、試したことはない。
この資料が素晴らしい。
$ cat /Library/Input\ Methods/AquaSKK.app/Contents/Resources/kana-rule.conf |nkf # $Id$ # このファイルは改行コードがLF、文字エンコーディングがEUC-JPでなければなりません。 # 五つ目の項目は次状態です。無ければ項目自体を省略します。 # エントリの順序には気を付けて下さい。例えば「ba」というエントリに出会うと、 # AquaSKKはまず「b」という枝を探しますが、ここではまだ存在しないので # 「b」という空の枝を作成します。この後に「b」というエントリが現れると # そのエントリ「b」は既に定義されているのでどうなるか分かりません。 # 最初の項目の,は半角カンマに置換されます。 a,あ,ア,ア bb,っ,ッ,ッ,b ba,ば,バ,バ bi,び,ビ,ビ bu,ぶ,ブ,ブ be,べ,ベ,ベ bo,ぼ,ボ,ボ (snip) ...
このあたりを使うと便利そう。
Cytoscape でグラフ構造のデータを表現する
こんな感じで Scala のスキルマップをグラフ構造で表現することができた。
GitHubで貼っておきたいバッジあれこれ
常々思うこと。
この世界は、私の認識によって成り立っている。
私が認識できないもの、すなわち知覚できないもの、知識として得られない有象無象は
そこに存在していないことと何一つ変わらない。
私は、私の死後の世界を認識することはできない。
その時、私という自我が失われることを、知識として身につけているからだ。
したがって、私の死後の世界は、私にとって存在しないものである。
ゆえに、私が死ぬことはない。
永遠に生き続けねばならないのだ。
何処に矛盾があるだろうか。
ベルリン出張で役に(立った|立たなかった)ものリスト
2014-06-16 〜 2014-06-22 の一週間、Scala Days 2014 に参加するためベルリンに出張していました。
Scala Days のレポートは会社の方に書くとして、なんとか無事帰国できたので
今回の旅で役に立ったもの、役に立たなかったものについて、記憶が新鮮なうちにまとめておきます。
今回の旅路ではベルリンに在住経験のある、とあるお方と同行できたのが本当に幸運でした。
ベルリンをたっぷり満喫できたのも、その案内人の方のおかげです!
それにしても、日本語英語中国語ドイツ語を話して万能感に浸っていたところ、帰りの飛行機の隣席がフランス人で
最後にしてやられた感がありました。
Au revoir!
BloggerでMathJaxを使う方法
こちらの解説 (Getting Started — MathJax 2.3 documentation) にあるように、HTMLソースのHEADブロックの中に以下のタグを埋め込めばいい。
<script type="text/javascript"
src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML">
</script>
<script type="text/x-mathjax-config">
MathJax.Hub.Config({tex2jax: {inlineMath: [['$','$'], ['\\(','\\)']]}});
</script>
Blogger の管理画面から、テンプレート -> HTML の編集 を行い、<head> … </head> の間の適当な場所に
タグを貼り付けて「テンプレートを保存」。
テンプレート -> バックアップ/復元 の機能を利用して、事前・事後にバックアップを取っておくと安心。
ブログ作成ツール MarsEdit のプレビュー画面でも数式を表示したい。
これには SyntaxHighlighter 同様のトリックが必要となる。
テンプレートのBODYブロック内(</body>の直前)に以下のスクリプトを埋め込んだら、プレビュー画面でも MathJax が処理されるようになった。
<script type="text/javascript">
function refreshMathJax() {
MathJax.Hub.Queue(["Typeset",MathJax.Hub]);
setTimeout("refreshMathJax()", 5000);
}
refreshMathJax();
</script>
When $a \ne 0$, there are two solutions to \(ax^2 + bx + c = 0\) and they are
$$x = {-b \pm \sqrt{b^2-4ac} \over 2a}.$$
When $a \ne 0$, there are two solutions to \(ax^2 + bx + c = 0\) and they are $$x = {-b \pm \sqrt{b^2-4ac} \over 2a}.$$
Mac の TextEdit でテキストファイルを開いたのに、HTMLがレンダリングされてイライラ
TextEdit でファイルを開いた場合、ファイルの拡張子に関係なく
ファイルの中身がHTMLっぽい場合 (htmlタグがあるなど) は HTML ファイルとして認識されてしまうようだ。
Preference -> Open and Save -> Display HTML files as HTML code instead of formatted text
にチェックを付けたら、とりあえずファイルの内容がそのまま表示されるようになった。
こういうストレス仕様は即刻やめてほしい。
ターミナル録画系サービスのメモ
3種類のサービスを比較。
pip でインストールする。easy_install から始める場合は以下のとおり。
$ wget https://bitbucket.org/pypa/setuptools/raw/bootstrap/ez_setup.py -O - | sudo python $ sudo easy_install pip $ sudo pip install asciinema
asciinema rec で録画実行、exit (Ctrl+D) で終了。
Asciinema を実行を Asciinema で録画したのがこちら。
録画した内容が瞬時にパブリックになってしまうというのも少し怖い気がするが……
gem でインストール。(実行シェルを直接ダウンロードする手順も記載されているが、うまく動作しなかった)
ruby からインストールする場合は以下のとおり。(RedHat系Linuxの場合)
$ sudo yum install -y rubygems $ sudo gem install showterm
showterm で録画実行、exit (Ctrl+D) で終了。
終了すると即座にアップロード処理が始まる。
showterm を実行を showterm で録画したのがこちら。
表示が若干崩れるのは、script コマンドの問題だろうか。
gem でインストール。
ruby からインストールする場合は以下のとおり。(RedHat系Linuxの場合)
json ライブラリに依存しているので、ruby-devel のインストールが必要。
$ sudo yum install -y rubygems $ sudo yum install -y ruby-devel $ sudo gem install shelr
shelr record で録画実行、exit (Ctrl+D) で終了。
ターミナルのサイズが大きいと録画が実行されないので注意。
$ shelr record -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= => Please, resize your terminal! => Sizes bigger than 132x43 are slow and will not be available to all users. => We care about this. => Also, do not resize your terminal while recording. It will break the record. -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
ターミナルサイズを一時的に変更
$ stty rows 43 cols 132 $ stty -a # 確認
shelr を実行を shelr で録画したのがこちら。
shelr の場合、録画内容が勝手に公開されてしまう心配がないので安心だ。
必要に応じて shelr play で内容をチェックした後、shelr publish で明示的に公開操作を行う。
Shelr.tv のアカウントを作れば、限定メンバーへの公開も可能な様子。
Zabbix: JMX監視について
バージョンによって手順に違いがあったり、公式ドキュメントでも日本語化されていない部分があったりしたので
導入のポイントをメモしておく。
JVM の標準機能である JMX を有効にする。
起動スクリプトなどで JAVA_OPTION を指定すればよい。
設定例 (セキュリティ関連の項目は必要に応じて書き換えること)
-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=12345 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false
監視サーバからの疎通確認には、cmdline-jmxclient を使うと便利だった。
実行例 (適当なディレクトリ配下で)
curl -O http://crawler.archive.org/cmdline-jmxclient/cmdline-jmxclient-0.10.4.jar java -jar cmdline-jmxclient-0.10.4.jar - xxx.xxx.xxx.xxx:12345 java -jar cmdline-jmxclient-0.10.4.jar - xxx.xxx.xxx.xxx:12345 java.lang:type=Threading
Exception が発生せず、何らかの情報が表示されればひとまずOK。
ネットワーク関連の問題が発生した場合、JVM の起動オプションで以下のように自分自身のIPアドレスを明記することで解決する場合がある。
監視対象サーバ自身のIPアドレスを書く
-Djava.rmi.server.hostname=xxx.xxx.xxx.xxx
Zabbix 2.2 の場合(であっても)、zabbix-server を入れただけでは JMX の監視はできない。
ソースをダウンロードしてビルドする方法もあるが、パッケージが公開されているのでそのままインストールしたほうが簡単だ。
実行例 (サービス登録および起動も実施)
# rpm -Uv http://repo.zabbix.com/zabbix/2.2/rhel/6/x86_64/zabbix-java-gateway-2.2.0-1.el6.x86_64.rpm # chkconfig zabbix-java-gateway on # service zabbix-java-gateway start
Timeout=30 JavaGateway=127.0.0.1 JavaGatewayPort=10052 StartJavaPollers=5
設定ファイルを保存したら、zabbix-server から再読み込み (または再起動)。
ここから先は Zabbix の管理画面(GUI)での操作となる。
Configuration -> Hosts -> 監視対象サーバ を選択。
JMX interfaces の部分で Add をクリックし、IPアドレスとJMXポートを指定して Save。
ひとまずは標準の Template JMX Generic を使ってみるのを勧める。
Configuration -> Templates -> Template JMX Generic を選択。
Group または Host の追加を行った後、Save。
ダッシュボード画面で ホストにひもづく JMX のアイコンが緑色になればOKだ。
Vagrant+CentOS+VirtualBox: ゲストOS起動時のマウントエラーの調査
Vagrant で CentOS 6 の VirtualBox 用イメージを立ち上げようとしたところ、以下のようなエラーが出てしまった。
$ vagrant up <HOSTNAME> (略) [HOSTNAME] Mounting shared folders... [HOSTNAME] -- /vagrant Failed to mount folders in Linux guest. This is usually beacuse the "vboxsf" file system is not available. Please verify that the guest additions are properly installed in the guest and can work properly. The command attempted was: mount -t vboxsf -o uid=`id -u xxxxxxxx`,gid=`getent group xxxxxxxx | cut -d: -f3` /vagrant /vagrant mount -t vboxsf -o uid=`id -u xxxxxxxx`,gid=`id -g xxxxxxxx` /vagrant /vagrant
このメッセージだけでは、VirtualBox Guest Additions (以下、Guest Additions) の機能である共有フォルダのマウントに失敗していることくらいしか分からない。
ちなみに Guest Additions とは、簡単に言えば VirtualBox ゲストの管理に特化した便利ツールだ。
これを利用しないなら無視しても構わないのだろうが、やっぱり気になるので調べてみる。
vagrant status コマンドを実行して、OS自体は起動していることは確認できた。
$ vagrant status Current machine states: HOSTNAME running (virtualbox)
SSH 接続をしてみよう。
$ vagrant ssh <HOSTNAME>
以下はゲストOS上のプロンプト。
Guest Additions の状態を確認すると、停止状態であることが分かる。
$ service vboxadd status The VirtualBox Additions are not currently running.
Guest Additions のインストール自体が失敗している可能性があると考え、ログを確認する。
$ cat /var/log/vboxadd-install.log /tmp/vbox.0/Makefile.include.header:97: *** Error: unable to find the sources of your current Linux kernel. Specify KERN_DIR=<directory> and run Make again. 中止. Creating user for the Guest Additions. Creating udev rule for the Guest Additions kernel module.
やはりここに答えがあった。
カーネルのソース (kernel-devel) が不足していたために、Guest Additions のビルドが失敗していたのだった。
パッケージが足りないなら、yum でインストールすればよいと安直に
$ sudo yum install kernel-devel -y
と実行するのはよくない。
上記のコマンドでは (基本的に) 最新の kernel-devel がダウンロードされるため、
実際のカーネルバージョンと異なるものがインストールされてしまう可能性があるためだ。
カーネルバージョンと kernel-devel が食い違った状態で Guest Additions のセットアップをすると、やはりビルドは失敗となる。
$ sudo /etc/init.d/vboxadd setup Removing existing VirtualBox non-DKMS kernel modules [ OK ] Building the VirtualBox Guest Additions kernel modules The headers for the current running kernel were not found. If the following module compilation fails then this could be the reason. The missing package can be probably installed with yum install kernel-devel-2.6.32-358.el6.x86_64 Building the main Guest Additions module [失敗] (Look at /var/log/vboxadd-install.log to find out what went wrong) Doing non-kernel setup of the Guest Additions [ OK ]
それぞれのバージョンは以下のようなコマンドで確認できる。
$ uname -r 2.6.32-358.el6.x86_64 $ rpm -qa |grep kernel-devel kernel-devel-2.6.32-431.el6.x86_64
アンインストール。
$ sudo yum remove kernel-devel
では、適切なバージョンの kernel-devel をインストールするにはどうしたらよいか。
残念ながら、このまま yum でバージョンを指定してもうまくいかない。
$ sudo yum install kernel-devel-$(uname -r) -y Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile * base: ftp.riken.jp * extras: ftp.riken.jp * updates: ftp.riken.jp Setting up Install Process No package kernel-devel-2.6.32-358.el6.x86_64 available. Error: Nothing to do
古いバージョンのパッケージは CentOS-Vault リポジトリに置かれている。
以下いずれかの方法で対応が可能だ。
$ sudo yum install http://vault.centos.org/6.4/os/x86_64/Packages/kernel-devel-$(uname -r).rpm
インストールを終えたらゲストOS上で、Guest Additions のセットアップを再度実行。
$ sudo /etc/init.d/vboxadd setup Removing existing VirtualBox non-DKMS kernel modules [ OK ] Building the VirtualBox Guest Additions kernel modules Building the main Guest Additions module [ OK ] Building the shared folder support module [ OK ] Building the OpenGL support module [ OK ] Doing non-kernel setup of the Guest Additions [ OK ] Starting the VirtualBox Guest Additions [ OK ]
うまくいった。
$ service vboxadd status The VirtualBox Additions are currently running.
目的は達成できたので、一度ゲストOSから抜け、Vagrant から再起動する。
$ vagrant reload <HOSTNAME>
マウントエラーは晴れて解消された。
GNU Octave のインストール方法
Machine Learning | Coursera の Week 2 の課題のため、Octave をインストールする。
Octave とは、フリーの数値解析ソフトウェア(プログラミング言語)。
行列の計算やグラフ描画(gnuplotと連携して可視化)が簡単にできることが特徴。
こちらからインストーラをダウンロードして実行。
Octave Forge - Browse /Octave Windows binaries at SourceForge.net
Coursera の手順に書かれていたのは Octave-3.2.4_i686-pc-mingw32_gcc-4.4.0_setup.exe だった。
インストーラの Choose Components の画面で、"image" パッケージを追加するとよい。
こちらから Mac 用のディスクイメージをダウンロードしてマウント。
Octave Forge - Browse /Octave MacOSX Binary at SourceForge.net
最初、最新版(3.7.7)を入れたらグラフ表示でプログラムが落ちてしまう状態になったので
古いバージョン(3.4.0)をインストール。
alias octave="/Applications/Octave.app/Contents/Resources/bin/octave --persist --eval \"PS1('>> ')\""
octave-3.4.0:1> x=-5:5 x = -5 -4 -3 -2 -1 0 1 2 3 4 5 octave-3.4.0:2> y=2*x y = -10 -8 -6 -4 -2 0 2 4 6 8 10 octave-3.4.0:3> plot(x,y)
とりあえずグラフが描画できた。
浮動小数点数のまとめ
浮動小数点数 - Wikipedia
IEEE 754 - Wikipedia
IEEE 754: Standard for Binary Floating-Point Arithmetic
小数を「(符号) 基数2の指数×仮数」で表現するのが基本的な考え方。
倍精度浮動小数点数の場合、64ビットを以下の3つの部分に分けて意味を持たせる。
IEEE 754 では5種類の表現が定義されている。
s = sign (0 or 1)
q = exponent (指数部の符号無し整数表記)
c = significand (仮数部の符号無し整数表記) <=小数ではなく整数として見た場合の値
としたときの計算式と合わせて書くと以下のようになる。
種類 exponent(q) significand(c) 表している値 ゼロ 0 0 +0, -0 (符号の区別がある) 非正規化数 0 1〜 正規化数 1〜2046 0〜 無限大 2047 0 NaN(非数) 2047 1〜 基本的に符号の区別はない (詳細はWikipedia参照)
C言語でも可能だが、手っ取り早く Python で確認してみた。
(PyPIからbitarrayをインストールする)
sign
double : v <exponent > < significant >
======================================================================================
0.0: 0 00000000000 0000000000000000000000000000000000000000000000000000
-0.0: 1 00000000000 0000000000000000000000000000000000000000000000000000
2.0: 0 10000000000 0000000000000000000000000000000000000000000000000000
3.0: 0 10000000000 1000000000000000000000000000000000000000000000000000
1.0: 0 01111111111 0000000000000000000000000000000000000000000000000000
0.1: 0 01111111011 1001100110011001100110011001100110011001100110011010
nan: 0 11111111111 1000000000000000000000000000000000000000000000000000
inf: 0 11111111111 0000000000000000000000000000000000000000000000000000
-inf: 1 11111111111 0000000000000000000000000000000000000000000000000000
2.22507385851e-308: 0 00000000001 0000000000000000000000000000000000000000000000000001
1.79769313486e+308: 0 11111111110 1111111111111111111111111111111111111111111111111111
2.22507385851e-308: 0 00000000000 1111111111111111111111111111111111111111111111111111
4.94065645841e-324: 0 00000000000 0000000000000000000000000000000000000000000000000001
Mac: Alfred 活用術
Alfred は、Mac を使うなら是非インストールしておきたいフリーソフト。
呼び出し用のキーバインド(私は option + SPACE に設定)を叩いた後、テキストを数文字打って
Enter を押すだけで様々なアプリケーション・OS機能を呼び出すことができる。
WEB のカスタムサーチは特に秀逸で、
することが可能だ。
有料の PowerPack を使えば、より生産性が上がるらしいので目下検討中。
CentOS で IRC サーバの構築
以下、簡単なメモのみ。
# yum install ngircd
# ngircd --configtest
# chkconfig ngircd --add # service ngircd start
かな入力の練習
仕事の半分以上(あるいはそれ以上)の時間を日本語入力に費やしているので、効率化のためにも
かな入力を覚えたいと思い立った。
+----+----+----+----+----+----+----+----+----+----+----+----+----+----------+ |〜 | | |ぁ |ぅ |ぇ |ぉ |ゃ |ゅ |ょ |を | |「 |Back Space| |` |ぬ |ふ |あ |う |え |お |や |ゆ |よ |わ |ほ |゜ | | +-------+----+----+----+----+----+----+----+----+----+----+----+----+-------+ |Tab | | |ぃ | | | | | | | |」 |ー | | | |た |て |い |す |か |ん |な |に |ら |せ |゛ |む |へ | +---------+----+----+----+----+----+----+----+----+----+----+----+----------+ |Caps Lock| | | | | | | | | | |ろ |Enter | | |ち |と |し |は |き |く |ま |の |り |れ |け | | +------------+----+----+----+----+----+----+----+----+----+----+------------+ |Shift |っ | | | | | | |、 |。 |・ |Shift | | |つ |さ |そ |ひ |こ |み |も |ね |る |め | | +------------+----+----+----+----+----+----+----+----+----+----+------------+
行ごと(あ行、か行、etc)の位置関係を覚えていくのが良さそうだ。
あいうえお : a i u e o -> 3 e 4 5 6 ぁぃぅぇぉ: la li lu le lo -> S-3 S-e S-4 S-5 S-6 かきくけこ : ka ki ku ke ko -> t g h ' b がぎぐげご: ga gi gu ge go -> t[ g[ h[ '[ b[ さしすせそ : sa si su se so -> x d r p c ざじずぜぞ: za ji zu ze zo -> x[ d[ r[ p[ c[ たちつてと : ta ti tu te to -> q a z w s だぢづでど: da di du de do -> q[ a[ z[ w[ s[ なにぬねの : na ni nu ne no -> u i 1 , k はひふへほ : ha hi hu he ho -> f v 2 \ - ばびぶべぼ: ba bi bu be bo -> f[ v[ 2[ \[ -[ ぱぴぷぺぽ: pa pi pu pe po -> f= v= 2= \= -= まみむめも : ma mi mu me mo -> j n ] / m や ゆ よ : ya yu yo -> 7 8 9 ゃ ゅ ょ: lya lyu lyo -> S-7 S-8 S-9 らりるれろ : ra ri ru re ro -> o l . ; S-' わ を ん ー : wa wo nn - -> 0 S-0 y S-]
インターネットでタイピング練習 イータイピング | e-typing かなタイピング
この投稿もかな入力で書いたので、相当の時間を費やしてしまった。
Nagios 3系 ログ監視用のテンプレート
Nagios でログ監視を行う場合、デフォルト設定のままでは意図した動作にならないことがある。
注意点と対策についてメモしておく。
Defaults:nagios !requiretty nagios ALL=NOPASSWD:/usr/local/nagios/libexec/check_log3.plNagios によるチェックは TTY でないので、Cronと同様 requiretty を無効化するのがポイント。
define service{
use local-service
name check-log-service
is_volatile 1
max_check_attemps 1
flap_detection_enabled 0
notification_options w,u,c
register 0
}define command{
command_name check_log_crit
command_line sudo $USER1$/check_log3.pl -l $ARG1$ -s $ARG2$ -p $ARG3$ -c 1 $ARG4$
}
define command{
command_name check_log_warn
command_line sudo $USER1$/check_log3.pl -l $ARG1$ -s $ARG2$ -p $ARG3$ $ARG4$
}
(検知行数ではなく)検知文字列によってレベルを出し分ける場合は、2つのサービスに分けて登録する必要がある。
define service{
use check-log-service
host_name localhost
service_description SysLog Warn
check_command check_log_warn!/var/log/messages!/tmp/.messages.warn.seek!warn!-i
}"-i" は英大文字・小文字の区別をなくすオプション。(ignore case)
NRPEを利用してリモートサーバのログを監視する場合、デフォルトの10秒のタイムアウトでは間に合わない場合がある。
check_nrpe コマンドのオプションとしてタイムアウト(-t)を明示的に指定することをお勧めする。
define command{
command_name check_nrpe
command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$ -t 30 $ARG2$
}
check_log3.pl 自体のタイムアウトは
/usr/local/nagios/libexec/utils.pmの記載内容を引き継いでいるので
コンピュータ将棋の未来
2013年4月20日、現役プロ棋士とコンピュータ将棋ソフトの対局イベント「第2回将棋電王戦」の第5局が行われ、
三浦弘行 八段 が GPS将棋(東京大学大学院 Game Programming Seminar) に敗北した。
GPS将棋開発者の談話にもあるように、たった一度の勝敗で優劣を結論づけることはできないが
一つのマイルストーンとして重要な意味を持つ日となったことに異論はないだろう。
2005年(もう8年も経ってしまった)に発行された書籍に「コンピュータが勝ったあとの心構え」が書かれているので
読み返してみる。
Amazon.co.jp: アマトップクラスに迫る―コンピュータ将棋の進歩〈5〉: 松原 仁: 本
「プロに勝つ」という言葉は曖昧なので、まずはその条件を固定化しなければあまり意味がない。
「数回以下の対戦で、特にコンピュータ将棋を研究していない平均的プロとの戦いで、
持ち時間25分切れ負けで互角に戦う」レベルは2年半後に達成されるだろう
この本が発行された2005年の2年半後なので、既に過去となり、この予測は現実となった。
しかし、「多数回の対戦で、コンピュータ将棋を体系的に研究している名人との戦いで、
名人戦と同じ持ち時間で、コンピュータが勝ち越す」のはさらに数年後のことだろう
と予測している。
棋士の間でソースコード読書会が行われる光景が目に浮かぶ。
しばらくするとどうやってもコンピュータ将棋に人間プレイヤが勝てないようになる。これは必然である。
オセロは既にこうなった。チェス・将棋も時間の問題である。
囲碁はもっと先の話であろうが、その日は必ずやってくる。
人間同士の対戦こそ将棋文化の中心であることを忘れてはならない
やはり人間の尊厳の問題。
ひとたび人間が負ければマスコミは大きく取り上げるだろうが、それに踊らされないようにと警鐘を鳴らしている。
コンピュータ将棋はあくまでも将棋文化のそれほど大きくない一部であって、中心であるべきではない。
勝敗に一喜一憂したり、プロの指し手に感動したりする気持ちは持ち続けてほしいと切に願う。
一方、これは私の直感であるがコンピュータ将棋にはまだまだ改善の余地があると思うし
おそらくあと数回、Bonanza の登場・オープンソース化のような大きなイノベーションが起こる気がする。
最終的には将棋を解くこと(先手勝ちかどうかを結論づけること)も決して不可能ではないと信じている。
そうなれば、そのアルゴリズムは様々な分野へ応用されていくに違いない。
(ただし、アルゴリズムが人間に牙を剝く未来がくることを忘れてはならない
ケヴィン・スラヴィン 「アルゴリズムが形作る世界」 | Video on TED.com)
何はともあれ、5月3〜5日に開催される第23回 世界コンピュータ将棋選手権がますます楽しみになった。