MacOS に elmo + やねうら王 + 将棋ぶらうざQ を「clang」で導入

ひさしぶりの将棋ネタ。
Mac を触る時間が長くなってきたので、将棋 AI も刷新したくなったから(過去に「技巧」を入れてます)。

導入方法の基本的な流れ自体は、
Mac にコンピュータ将棋ソフト「elmo」を導入した
MacOS に elmo + やねうら王 + 将棋ぶらうざQ をインストールする
あたりをご参考に。

ただ、やねさんの Makefile を見たら、

# clangでコンパイルしたほうがgccより数%速いっぽい。
#COMPILER = g++
COMPILER = clang++

 

とデフォルト設定で clang になっている。
何もわざわざ gcc に変えなくても良いのでは?
(ただし、llvm は諸々の事情で ver10 を使ってますが、デフォの llvm でも実行ファイルはできてました。gcc とか llvm とかよくわからんという人はこちらなども参照ください)

あとは、標準ライブラリを stdlibc++ ではなく libc++ に変えただけ。

こんだけで、一応、ビルドできましたが。

 

なお、アイキャッチは、藤井(聡太)-渡辺(明)棋聖戦第二局で藤井七段(当時)が△三1銀打と金取りを受けたところ。

 

解析させると AI 的にもここから流れが変わったのがわかりますね。

 

 

air-h-128k-il

 

大人のための将棋再入門 6 対局場所

大人になってから将棋を再開しても同志がどこからともなくあらわれて、仕事上のつきあいもかねがね趣味的に指したりしているのだが、かといって頻度がそう多いわけでもない。

強さの追及がメインではないので、道場に通ったり、ソフトとの真剣対局を日課にしたり、というのは何か違う。

というわけで主な対局場所はネットということになった。みなさんがおすすめする将棋道場24 はいいのだろうが、きちんとしすぎていて、私にはあわなかった。細切れの時間を使って、気分転換も兼ねてとなると、将棋ウォーズしかない。接続切れや放置が多いとは聞いていたが、実際多い。やられるとムカついたりもするのだが、自分も急な来客時には結果的に放置プレイになってしまうことがあるので(なるべく投了するようにしてますが)人のことはいえない。

経験値も上げたい、気分転換的なエンタメ性も堪能したいって人にはウォーズがおすすめである。

だが、これが厳密に「将棋」かといわれると、やはりちょっと違うと思う。『期神』などという合法的ソフト指しを認めている時点で、厳密な意味で「将棋」ではないだろう。あくまで「将棋ウォーズ」というゲーム。だからといって棋力向上に役立たないかといえば、そんなことはない。

利用時の感想&注意点などをいくつか。

・将棋再開組の多くは「ウォーズ」的な水準では終盤力はそこそこある。やり始めの頃などは、序中盤の知識がないに等しく、必敗形になったりするのだが、終盤になるとなぜか相手が見え見えの一手詰めを見えてないケースが多く、簡単に逆転したりする。3手程度の簡単な詰み手順発見の能力は、そうは衰えない。

『期神』を使うとリズムが崩れる。せっぱつまった局面で使ったことが2~3回あるのだが、手の意味がわからず、その後、どう指し継いでいいかわからず困った。以来、一切使ってない。

長考OK。10分切れ負けであるにもかかわらず、最善手を求めて時間はふんだんに使った。当然、時間切れ負けになるのだが、検討時には、記憶に残っていてやりやすかった。

・ソフト指しと対戦するのが嫌なら、10秒切れ負けで序盤をノータイムで指す。おそらく相手の局面編集が間に合わないのか、ほぼソフト指しは排除できる。

長考OKは、個人的にはリミッターと呼んでいた。勝ちにこだわるならば、長考せず60~70点の手をぱしぱし指していった方がいいのだろうが、棋力向上のトレーニング的な意味合いもあったのでそうはしなかった。

逆にリミッターを解除すると、勝率はがこんと上がります。私の場合、1級に上がるまで 3ヶ月程度、そこで勉強もかねがねちんたらやっていたのだが、そろそろ諸々の知識もついてきたので「もういいか」と思い、リミッターを解除したら、途端に級位者に対して取りこぼしがなくなり、次第に初段~二段クラスにも一発入れられるようになって勝率が上がった。結果的には、再開後 6ヶ月足らずで初段に昇段となりました(←今、ここ)。たぶん、棋力は子供の頃より上がってます。

 

大人のための将棋再入門 5 これやっちゃあかん!な中盤

棒銀くん・中飛車くん・早石田くんなどの対策もある程度できた、よく使う戦法の使い勝手も慣れてきた、となると、あとは出現頻度の高い進行の定跡などの理解、ということになりますが、定跡書をじっくり読むのは少々面倒だし、読んでもなかなか覚えられないと思います。(私も定跡本の類は読んだことなし)
おすすめなのが、実戦ででてきて印象が強かった進行を記録しておき、ある程度ストックできたら、類型化して整理して覚える、という方法論です。
意識的に覚えようとしなくても、この手の対局は印象に残っているものなので(特に一発『喰らってしまった』対局)、対局数に比例して経験値が上がっていくと思います。例えば、こんな例。

(棋譜ファイル差し替え中)

 

言葉にすれば、『角交換後の4五桂早仕掛け』ということなんでしょうが、この手の筋は、実際の対局で経験しないとなかなか身につかないでしょう。逆に、身についてしまえば、類似進行の際に隙あらば『一発入れて』やろうという意識が芽生えるはずです。
しんねりむっつり定跡を覚えるよりは、まずは「これやっちゃあかん」な筋を覚えていく方がより実用的な気がします。

大人のための将棋再入門 4 (居角)左美濃右四間

将棋再開後、棒銀くん・中飛車くん・早石田くんの対策がある程度できるようになると、そろそろ日常使いできる汎用性の高い戦法をマスターしたくなってくる。
お勧めは、(居角)左美濃。特に攻撃ユニット(右辺)を右四間に組む形は、陣形やその狙いがはっきりしているので真似しやすい。特に古典的な矢倉に対しての威力は絶大で、少々おかしな駒組してもウォーズ低級位レベルならほぼほぼ勝てると思う。
実際の進行例はこんな感じです。

(棋譜ファイル差し替え中)

私の子供のころは、入門書には決まって矢倉が紹介されていて、あまり疑問もなくそのように組むことが多かったが、この矢倉というのは、冷静に考えると
・囲いを組むまでに手数がかかる
・基本的に引き角なので攻撃への活用が意外にしにくい
という弱点がある。特に後者などは、下段に引いた角と入城しようとする玉がたびたび「ごっつんこ」する。だから、その駒組の不自由さは常々感じていたはずなのに、これに改良を加えようとは当時はこれっぽちも思わなかった。刷り込みって怖いね。

それはともかく攻撃時のポイントは、
・飛角(右)銀(右)桂を攻撃に参加させる
・飛車・角の大駒は大胆に切ってもよいからとにかく攻めを繋げる
ことでしょうか。ここらへんがうまくいけば、仕掛けから寄せまで割と一直線に進行する場合が多く、かなり気分よく勝てる戦法です。

細かい話をすると、「左美濃+中飛車」や「左美濃+早繰り銀」などのバリエーションもありますが、ここらへんは応用編といったところでしょう。私も勉強中です。時系列的にみると、先手番矢倉の対抗策として左美濃登場→さらにその対抗策として雁木の再評価という流れのようです。2017年現在、将棋研究のテーマの一つにもなっているようですが、級位者レベルにとってこれはテーマがいささか細かすぎる。再開最初は、まずは大雑把に全体を掴みましょう。

大人のための将棋再入門 3 脳内評価関数更新用早石田くん対策

ウォーズ低級位時は、相手が棒銀・中飛車・早石田を指してくる場合が本当に多い。

対策立ててないと

の局面で恐怖を覚えます。「飛車が危ない」と。

要するに、この後、どこかで▲7四歩△同歩▲2二角成△同銀と進んだ場合の▲5五角の飛車取りを予想して身構えるわけですね。例えば、こんな局面、

この場合には、△3三角打と自陣角を打つのが好手です(おそらく定跡にもなっていると思う)。

つまり、飛車を取らせるわけです。

落ち着いて考えると▲8二角成△同銀としたところで単なる飛車角交換ですし、この後、後手陣に飛車を打ち込む隙はありません。むしろ△9九角成を防ぐために後手に回ることになります。

この進行を早石田対策としてとりあえず覚えておいてもいいですし、

どんなときでも 飛車>角 → 序盤は飛車より角

というふうに脳内評価関数を更新しておきましょう。「ヘボ将棋、王より飛車をかわいがり」という言葉も有名ですね。

この後の進行はここなんか参考にしてください。

藤井二冠の飛車切り

「序盤は飛車より角」なんて書いてましたが、中盤〜終盤でも局面によっては飛車を切った方が形勢が有利になる局面があるようだ。

凡人にはこの形勢判断をするのはほぼ不可能な感じもするが、印象深いのは藤井(聡太)二冠の飛車切り。

記憶に新しいところでは、2020王位戦第4局での封じ手(△8七同飛成)。

他には、竜王戦5組決勝(対石田五段)での次の一手でしょうか。

ここで△7七同飛成は、彼以外誰も指せないでしょう。

 

air-h-128k-il

 

大人のための将棋再入門 2 シケプリ風まとめと若干の考察

起源:古代インドのチャトランガがその起源といわれている。チャトランガが西洋に渡りチェスとなり、日本に渡って将棋となった。両者は、独自の発展を遂げていたが、ボードゲーム系の AI というくくりでみると、例えば著名なコンピュータ将棋プログラム YaneuraOu が コンピュータチェスプログラム StockFish のコードから多大な影響を受けているなどの例があり、両者の関連性は無視できない。

ゲーム理論上の分類二人零和有限確定完全情報ゲームに分類される。

理論的性質からのアプローチ:二人零和有限確定完全情報ゲームは、「理論上は完全な先読みが可能であり、双方のプレーヤーが最善手を打てば、必ず先手必勝か後手必勝か引き分けかが決まる」が、将棋の場合、その完全な先読み(完全解析)はいまだなされておらず、仮になされたとしても(特にプレイヤーが人間の場合には)その結果に基づいて指し手を決定する具体的な手段を用意するのは現実的ではない。現実的には、コンピュータ将棋においては、ミニマックス法などの定式化されたアルゴリズムを利用して指し手を決定している。

ミニマックス法などに関しては、こちらに実例を挙げて軽く触れておきました。そこでも触れましたが、実際の差し手決定には、「探索」に負けず劣らず「局面評価」が重要であることを強調しておきました。

人間の対局を振り返ってみると、定跡から外れた局面などは、人間もミニマックスに近い思考方法を取っていることがわかります。つまり、何手か先を読んで、そのときの局面を「駒得しているから良い」とか「駒損はしているが先手を取っているので指せる」などと評価して現実的な指し手を決定しているわけですね。
で、困るのは、人間は、なかなか質の良い評価関数を獲得するのが難しいってことです。

 ヘボ将棋 王より飛車を かわいがり

なんて川柳はあまりに有名ですね。

特に、大人になると意識的にやらないとなかなか脳内評価関数(?)は更新されないので、ソフトを使った検討などでは、このことを意識しながらおこなうと良いでしょう。
まず、上の格言的川柳が批判するような局面が頻発する早石田の対策から考えましょう。
なお、評価関数の評価に関してはこんなことがいえると思います。

評価関数の評価:完全解析がなされていない以上、これとの比較において各種ソフトの評価関数の優劣を決めることはできない。現実的には、異なる評価関数を持つソフト同士の対戦結果から「レーティング」を求め、評価する。

ソフト同士の対局から新しい定跡を抽出しようという動きにはこういった背景があったわけですね。

大人のための将棋再入門 1

他サイトで公開した将棋系の書き物の評判がいいようなので、内容整理してこちらでもアップ。

———————————————————————————————

昨今の将棋ブームにならって将棋を再開する人は多いようだ。
強い新人の存在、AI との絡み…など興味の方向性は様々だろうが、内容のある将棋を指せると愉しい。

ところで、そのような場合、どういう戦法から入った方がいいだろう?

子供の時と違うのだから、入門書に紹介してあるような棒銀や矢倉棒銀ばかりでは面白くないし、第一勝てない(対矢倉の居角左美濃は優秀。特にウォーズ級位者レベルならほぼほぼ勝てる)。
ノーマル四間飛車を勧める人もいるが、相手が最善手を指し続けた場合、振り飛車が不利になることが明らかになりつつある現在、これをいい大人が採用するのはどうかと思う。なにより、ノーマル四間はノーマル四間で細かい定跡を覚える必要があるので面倒くさい。
変化が多く敬遠される傾向にあるが、ここではあえて先手番・後手番ともに居飛車を採用するのをお勧めしたい。
対振り飛車、相居飛車(角換わり・横歩・相がかり)などバリエーションは多いが、そこは大人になってからやる将棋、アバウトに進行を覚えておけばそれなりに指せる。すべてを網羅しなくても、システマティックに対応できるのが大人の知恵というものだろう。また、プロ棋戦鑑賞時にも手の意味がわかるようになって対局がより深く愉しめるようになると思う。あと、現時点で最強ソフト elmo が振り飛車を指さないというのは、棋理の上でもそれなりの裏付けがあるように思う。

私も、再開当初は、先手番の時は居飛車、後手番の時は四間飛車で指していたのだが、後手番の時に、指し方がわからなくなる場合が多く、結局、先手も後手も居飛車で指すようになった。ただし、相手が見え見えな棒銀・中飛車・早石田の場合は、それ用の対策を立てて指す。角換わりや横歩取りの対策はどうしても後回しになってしまうが、そのときはそのとき。負けても気にしなければ、トータルの勝率はそれなりに維持できるはずだ。

 

 

ところで、将棋コミュニティへの IT 系技術の導入は、世間的にも注目を集めている。elmo や技巧が普通に使えるのは有り難い。「強さ」への追及は高水準にあると思うが、意外に穴もある。

twitter 上でも指摘したのだが、
1.WordPress などで使える(マトモに動く)非 Flash 系の棋譜再生ソフトは存在しない
2.1000局超を扱えるフリーの棋譜管理 DB はない
のは痛い。

1.に関しては、実際に着手した。(→Responsive-Kifu としてある程度実現)
2.に関しても検討中。xampp や CakePHP に手を出した一因にもなっている。Java + WildFly + PostgresSQL で行くか、PHP + MySQL で行くべきか。。。うーん。

でも、まあ、こういったアプローチができるってのも「大人の将棋」の良いところ。

 

air-h-128k-il