2014-3

2014-03-04 

うーむ、今の現場はまだ工程としてはプロトタイプなのだが、しかしやはりCIやってないのはちょっとマズい。プロトタイプといっても捨てる前提のプロトタイプもあるし、ものによってはテストを書くのが費用対効果からしても微妙なケースはあるのだが、しかしある程度以上の期間にわたって使われ続けるようなものはテストを真面目に書いた方が良い。

というかだな、チェックアウトして即座にビルドしようとしてもビルドが通らない、というか依存しているプロジェクトの設定とか全部手動でしかも文書化されていない、テストコードは書いてあるけど全然更新されてなくてむしろ邪魔、そんな状態で作業始めるのは普通に考えてありえんのだが、そういうありえん事がまかり通っているのでねえ。

最低限の品質チェックとしてチェックアウトからビルド、テストまでを自動化しないと大変ファックな事になるというのはもうみんなわかってんだろうけど、その辺を押さえていて尚且つ動ける人がプロパーの初期面子にいないのが問題。ってか重大なプロジェクトなんだからそういうところに人をいれるのをケチるんじゃないよもう。

2014-03-05 

PC遠隔操作事件は保釈になったか。それも検察側の不服申し立ての手続きにミスがなければ保釈がしばらく認められない状況だった事を考えると……。というか1年以上も勾留して社会と断絶させて、そんでその間に職も失って、肝心の公判の方は傍から見たら決定的な証拠に乏しくそもそも公判維持できんのか微妙と、これは普通に考えれば酷い話だろう。誤認逮捕が相次いでちったぁ慎重になっているかと思いきやこれだから、やっぱおかしいだろ。


なかなかパンチの効いたテーブル設計というかこれ設計じゃねえよ。まあそれはともかく、これを読んで昔関わったある仕事で触れたフレームワークを思い出した。以下適当にぼかしつつ覚えている限りの事を。

その仕事はまあなんというか某A社で今まで使っていた特定業務向けフレームワークの機能を別の某B社の汎用フレームワークに乗っけてソリューションとして商売みたいな話で、面識のあるB社のコンサルはその概要聞いただけでダメだと判断したようだったが、一応実現性検証ということで俺と後輩が出稼ぎに行く事になった。ちなみに結論としてはコンサルの方の意見は正しかった。

そのフレームワークは例によって提供されたソースコードがなぜかビルドが通らない状態で、それでもまあ足りないところを補いつつ読んでいくとどうにもおかしい。いわゆるトランザクションスクリプト前提のフレームワークで、まあそれ自体は目的に合致していれば問題ではないのだが、それにしてはDTOの類が全然見つからないのがアレであった。

しばらくして気がついた驚愕の事実、それはシステム全体で一つのDTOを使っており、そのDTOはフィールド数が3桁もある代物であった。つまり普通にコードリーディングの時に使うデータ構造から読み解くという手法が使えず、当然ながらメンテナンス性も最悪。発想としては将来新しいデータ項目が必要になるかもしれないから全部入れたのだろうが、それをやられると本来読み飛ばして良い部分を読み込む必要があってマジで死ぬ。

確かこれは俺が前の会社を辞める前にやった最後の出稼ぎプロジェクトだったと思うが、今思い出してもしんどい仕事だった。

2014-03-07 

クソのような問題にあたったので備忘録代わりに書いておく。mavenのSurefireプラグインはデフォルトでJavaのアサーションを有効にしてテストを走らせる。これは多くの場合に問題ない動作だと思うが、ちょっと今回は事情が違った。というのも、今回のプロジェクトではgeotoolsを使っているのだが当然テスト時には正確なデータが必要なケースばかりではなく、適当に生成したデータで済ますことも多々あるだろう。しかしこのgeotools、アサーションが有効になっていると不正な座標が算出された時に例外を投げてしまうのだな。そしてこれらが組み合わさると、適当に作ったテストデータがmavenからのテストでこけるという事になる。

アサーションが有効な時に厳密な動作をするのは正しいあり方に思えるし、かといってアサーションを有効にしてテストを走らせるのも間違いじゃないだろう。結局のところ、問題なのは俺がテストを真面目に書き始めるまでテストをきちんと書いてこなかったプロジェクトの体質ということになる。いくらプロトタイプといっても、一定期間を超えて使われ続けるようなコードの蓄積がある場合、テスト書かないのは問題だろうな。

だからまあ、今日は他のメンバーはこれまで問題なく動かしていたコードが俺だけ動かないという事態になって滅茶苦茶混乱した。

2014-03-16 

第3回電王戦第2局はなんつーか俺の棋力じゃ菅井五段の何が悪かったか正直わからんというか、解説で6八角が不本意な手と言われていたのでそうだったのだろうかとか、その程度しかわからんというか(まあ毎回レベル高すぎて解説聞きながらじゃないと全然わからんが)、いや本当にそういう細かい失点を挽回するチャンスがなくて順当に押しきったというか。去年のリベンジマッチを見た時は、やっぱりプロはまだまだ強いからしっかり研究すればいけるかなあと思っていたけど、菅井五段のコメントからは200局の対局で見られなかった類の手が指された事が動揺を生み、そこから構想を実現させきることができずに負けにつながった模様。これは一度敗北した船江五段との心構えの差だったのかもしれない。

そういう意味では第1局の敗北を教訓にした心構えで挑める第2局に俄然注目なのだが……。

いやいやいや、いくら酷いバグがあったにせよレギュレーション違反はダメでしょ。元のバージョンはフリーズの他にポカなどの問題もあったようだが、第2回電王戦だって第1局はソフト側の弱点を突いて勝利、第4局は入玉の局面を扱いきれずに珍勝負の末引き分けになったわけで、そういうところ含めての勝負のはずじゃなかったのか。そもそもバージョンアップ禁止を言い出したのは運営側で、自分の作ったレギュレーションをぶっ壊すとかマジでどういう脳みそをしているのだろうか。クズにも程があるだろう。

ソフトのアップデートを連盟側が承諾したとの事だが、強い相手と戦う事で自らも強くなることがアイデンティティのプロが「バグ修正したら強くなったんで弱い方に戻しましょうか」なんて申し出を受けられるわけないだろ。人間の脳みそを持っていれば非常に卑怯な申し出だとわかるはず。そして何より他のソフトだってそれぞれがバグや要改善点を抱えた上での参戦なわけで、この特例措置は他のソフト側の参加者に対しても大変な不義理を働いた行為としか思えない。だったら何のためにソフト同士を戦わせて予選を行ったんですかみたいな話になってしまう。

これまでもいろいろと「事件」のあったイベントだが、よりによって運営側がこういう形でミソを付けにいくとは思わなかった。まあフリーズは見てる方としてもたまらんので興行的には問題があるし、ソフトウェアの開発者としては予め問題がわかっているなら修正したくなる気持ちはわかるが、だったら明らかなフリーズとわかったら(ここが難しいかもしれんが)勝負の記録としては敗北にして、そこからバージョンアップ版に引き継いでエキシビジョンとして続けるあたりが妥協点だったのではないかと思う。もちろん運営側がレギュレーション違反を理由にアップデートを撥ね付けるのが一番だろうが。

あと「今回のルール自体どうなんだ」みたいな観点から佐藤六段側を叩いてるクズも多くて辟易する。約束を反故にされたら怒るに決まってんだろ。繰り返しになるけど、何のためにレギュレーション決めたんだよ。俺は統一ハードウェアはハードウェアの調達力勝負を避けるという点ではいいと思うしこの手のゲームで人間に合わせてハードウェアを選定するのは普通だろうと思う一方、提出後のソフトウェアのアップデート禁止はちと疑問だったりするのだが(ただそれ認めるとアップデート後に棋風が全然違う事になりかねないんで微妙なところではある)、それでも勝負のルールとして事前にコンセンサスが取れてるんだからそれを守らないというのはありえない。それに棋譜を読み込ませる形で強化するのは認められているそうで、そういう意味ではフェアな条件ではあるわけだ。(ここ正式にルールに書かれてないんで言及されることがあんま多くないんだよな。)

繰り返しになるが、レギュレーション違反を咎めないドワンゴが一番どうしようもないクズ。ここだけは動かしようがない事実だ。


あ、書き忘れていたけど連盟側の持将棋についてのルール変更の申し出も当然アウトな。まあ連盟側はどうみてもコンピュータ音痴なので、ルール変更がもしかしたらソフトウェアの更新を必要とするかもとは考えられなかったのかもしれんが、それでもまあアウトだろう。もっともそういうところで「それやったらレギュレーション違反です」として突っぱねるのもドワンゴの仕事だろうが。

2014-03-21 

菅井五段は練習の時にほぼ五分五分だったのか。いろいろ批判もあった今回のレギュレーションだが、プロも人間相手に棋風を把握して対策している事を考えると、案外常識的かつ絶妙なバランスだったのかもしれない。しかしとんでもない強さだなこれは。まあ、本番で予想外の手を指された事に付いてはいろいろとキナ臭い話もあるが、その辺の真相はもはや知りようがないので。

なんとなく、このイベントはこのレギュレーションでもあと一回ぐらいしかできないのかなあと思わなくもない。いや今回の電王トーナメントの5位が研究してきた菅井五段と優勢気味の五分五分って終わってる強さですよ。他のゲームになるけどバックギャモンは人間側が進歩した結果コンピュータに勝てるようになったそうだが、より将棋に近いゲームである(本質的にはゲームの質は同じ)チェスはもはや人間が勝てるレベルではなくなっている。もっとも人間側の研究が進んで新しい戦術が開拓されていってコンピュータより強くなる可能性もゼロではないだろうし、可能性が厳密にゼロになるのは将棋というゲームが解析され尽くして終焉する時の話だけど。

そもそも理論的には先手必勝・後手必勝・引き分けのどれかであることがわかっているゲームに未だに多くの人が親しんでいるのだから、プロ競技としての将棋のありようは変わるかもしれないが、文化としての将棋はまだまだ健在だろうし、そこには何らかの形でプロが存在するだろうなとは思う。そして将棋が本当に終焉するのかについては、現状では極めて困難ではあるがまだわからない。この辺の感想は前の電王戦の時から変わってない。


そういえば将棋などと同じ二人零和有限確定完全情報ゲームであり、かつより問題としてはシンプルなオセロでも未だに解析され尽くしていないそうだ。もっとも、実力的にはもう人間が勝てるレベルにはないそうだが。

2014-03-22 

第3回電王戦第2局は事前のグダグダが悔やまれるぐらい面白かった。先手のやねうら王がいきなり端歩を突いて月下の棋士かお前はみたいな事になったり、他にもパッと見で「なんぞこれ」な手を指したと思ったら数手進んだら割と常識的な盤面になっていたり、良い意味でコンピュータ将棋ならではの面白さが出ていたと思う。解説の木村八段もその特異な勝負に相変わらずの名調子が呼応するかのように冴え渡っており、煽りPVとかそういう茶番なしでもガチバトルは面白いんだということをドワンゴ及びこの手の興業に関わるすべての企業の担当には改めて認識していただきたい。いや久しぶりにPCの画面の前で声出して突っ込みましたよ、ええ。

それにしても途中まで佐藤六段は結構優勢だったというか、四間飛車に対して居飛車穴熊にガッチリ囲ってこりゃ作戦勝ちだと思っていたが、どうも見ていた限りでは数手の悪手で一期に形勢が傾いてその後は押しつぶされる形になったという印象。投了間際でもやねうら王側にも罠というか頓死の目がチラホラしていたが、そこで人間に比べて圧倒的に間違えないのがコンピュータなんだよなあ。

2014-03-29 

第3回電王戦第3局は棋譜だけみれば豊島七段の圧勝というか、ワンミス即死のありうる横歩取りでミスったYSSが順当に負けただけに見えるが、あれ実は豊島七段は相当危ない橋を渡っていたそうで、6二玉の悪手で優勢になって以降も変化のいくつかは自信がないものが結構あったそうだ。ただ、今回は比較的ソフト側が最善手を打てずに終わったというだけで、またそもそもかなり早い段階で研究していた局面からは外れていたそうなので、相当心臓に悪い勝負だったのではないかと思う。何かその辺理解せずにソフト相手にハメ手で勝ったみたいな事を書いてる奴が多くて頭痛がするが。いやあれ途中で水平線効果でやっちゃった1四金の大悪手がなければ先手が勝ちきるのも結構面倒だったようだし、それまでも乱数の引き次第では結構厳しそうだった。

そもそも横歩取りって大駒が飛び交う乱戦になりがちで大雑把に見えて、実は細かく読んでいかないと一気に負ける繊細な代物で、プロの間では詰み手順まで研究されているケースもあるのだとか。人間側にとっても相当リスクの高い戦術で、そこにたまたまソフト側の穴があったのでそこに誘導するのにまず最初のJ不確定要素があり、そこで一度穴を突いてからもミスが許されないわけで、指し手こそ早かったけど見てるこっちは午前中からクライマックス状態でビクビクしっぱなしだった。というか早々に研究から外れてからの手の多くは「これしかなかった」という、良くも悪くも考えても仕方のない局面だったそうで、そらノータイムで指すわなという。

そして今回は序盤のミスはまあ定石のインプットがなかったという話であるのでそんなに興味深い話ではないが、水平線効果のあたりは人間とコンピューターのヒューリスティックな判断についての差異のようにも見え、今のところもっとも人間のプロにできてコンピュータにできないことの一つに思える。谷川会長をはじめとした検討陣だけでなく俺たち視聴者もフリーズした1四金だったが、案外あの辺が人間のプロらしさとコンピュータらしさの境界線なのかもと考えると、そして高校の将棋部の仲間に読みきれなくなると水平線効果でやらかした悪手のような手を指す奴がいた事を考えると、知性と個性の本質って計算し切れない事象に対するランダム性が結構関わっているのかなあとか思ったりする。