2016年11月27日

 対石田流の定跡で悩む

筆者は石田流が苦手である。後手になって、初手から▲7六歩△3四歩▲7五歩とされると、これは大変なことになったな、と思ってしまう。同じぐらいの実力(アマ三段程度)同士だと、石田流にされると3局に2局は負けてると思う。
先週は将棋大会があり、石田流対策としては、▲7六歩△3四歩▲7五歩には△4二玉、下図の局面から仕掛けるなら△9二飛▲8五桂△8二飛▲8六歩△8四飛、の2つだけを覚えて臨んだら、予選の1局目から▲7六歩△3四歩▲7五歩とされ、次の図の局面を迎えてしまった。

このような局面から△9二飛▲8五桂△8二飛▲8六歩△8四飛と飛車を端に振ってすぐ戻して浮くのは、過去に何かの本で読んだもので、多分定跡だと思う。もし△9二飛▲8五桂△8二飛の次に▲8六飛とされたらどうすればいいんだろう、と不安に思っていたが、他に何も思い付かなかったので、定跡と信じて△9二飛、▲8五桂、△8二飛と手早く指した。

すると、ノータイムで実際に▲8六飛とされてしまい、長考に沈んでしまった。
後で調べると、ここまでは2004年のNHK杯の三浦−行方戦と全く同じ進行であり、その対局ではやはり▲8六歩と指されていた。他にも部分的に同じ形から△9二飛▲8五桂△8二飛としたプロの棋譜を4つぐらい見つけたが、次の手は全て▲8六歩△8四飛だったし、激指14で分析しても▲8六飛は評価が低いので、良くない手なのだと思うが、これの咎め方がよくわからない。

次に何をやっても▲7三桂成がある。それには△8六飛(次図)とする一手だが、▲同角でも△7三桂の後に先攻されてすぐ桂損を回復されるし、▲6三成桂と踏み込まれる手も気になる。

筆者の実戦は、▲8六飛の後、△7四歩▲7三桂成△8六飛▲同角△7三桂▲7四歩△同銀▲7一飛(次図)と先着され、△6二金と受けたら▲9一飛成から大暴れされ、なす術無く、十数手後には激指の先手の評価値が+1000という必敗の形勢になってしまった。

激指によると、△6二金が悪手で、ここまで来たら桂取りが銀取りにならないように△6三銀と戻るのが良いらしいが、そこまで後手を引いて駒損を回復されて龍まで作られてしまうのでは、何をやってるのかわからないと思う。
ただ、△7四歩では△6五歩の方が良さそうである。▲7三桂成と歩を取られるのなら逃げておこうと思って△7四歩と避けたのだが、△7三桂と取り返した後に▲7四歩と取る手が桂取りの先手になるし、△7四歩が無くても△7三桂には▲7四歩と突き出す所なので、意味が無かった。▲8六飛の後、△6五歩▲7三桂成△8六飛▲同角△7三桂▲7四歩△同銀▲7一飛△5五角というのが激指の推奨手順である。

激指はこれで-400(後手少しリード)くらいの評価を示しているが、筆者にはこれで後手が指せる理由がわからない。次に△3六桂とやっても▲3九玉と引かれるので攻め方がわからないし、やはり▲9一飛成から暴れられて、筆者の実力ではその勢いを止められないように思う。
ただ、もし△5五角に▲5六歩とされれば、△3六桂で一気に後手勝勢になりそうである。△3六桂に▲3九玉だと△6六角が王手で危険なので▲1七玉しか無いが、△1五歩とすれば受けが難しいと思う。

▲5五歩なら△1六歩▲2六玉△2八桂成である。
こうなることを期待して、▲8六飛には△6五歩とするべきなのだろうか。


2016年11月08日


2016年10月10日

 psvn.el+Subversion 1.7がネストされたワーキングコピーでエラーになる件

筆者はpsvn.elを6年くらい愛用している。仕事でSubversionを使ってるのだが、Subversionのクライアントソフトとして、周囲がTortoiseSVNを使う中、一人で頑にpsvn.elを使っている。マウス操作やトラックパッド操作が必要なく、全てがキーボード操作で完結するのが、個人的に気持ち良いのである。

最近、仕事で使うSubversionのバージョンが1.6から1.8に変わり、それまで使っていた、2009年のバージョンのpsvn.elが動かなくなった。Subversion 1.7でワーキングコピーの形式が大幅に変わったからである。

そこで、Subversion 1.7にも対応している、最新のpsvn.el(2015-07-20版)をダウンロードして使い始めた所、ワーキングコピーのルートディレクトリにチェックアウトしたワーキングコピーでM-x svn-statusすると、

Wrong type argument: stringp, nil
というエラーが出て使えなかった。つまり、
svn co (URL1) aaa
cd aaa
svn co (URL2) bbb
とした時のディレクトリbbbの下でM-x svn-statusができなかった。
svn coの代わりに、svn propsetでsvn:externalsを指定してbbbを取得しても同じエラーになった。
ディレクトリaaaの下でsvn switchして別のワーキングコピーを取得した場合は同じ問題が起こらないのだが、あいにくURL1とURL2とでSubversionのリポジトリが異なる為に、svn switchでbbbを取得することができないのである。

これが筆者としては非常に困ったので、自力で修正してみた。
変更箇所をdiff形式で示す。

修正案1

--- psvn.el.org	2015-07-20, 21:42:00
+++ psvn.el	2016-09-30
@@ -6063,6 +6063,7 @@
         ;; it doesn't, e.g we reached / already.
         (setq parent (expand-file-name (concat wc-root "..")))
         (or (and (< (length parent) (length wc-root))
+                 (not (file-exists-p (concat wc-root (svn-wc-adm-dir-name))))  ;; stop if .svn or equivalent exists
                  (svn-status-base-dir-1 (expand-file-name (concat wc-root ".."))))
             wc-root)))))
svn-status-base-dir-1関数の中で、ワーキングコピーのルートディレクトリを探すのに、できるだけ上位のディレクトリを探すようで、上に辿る途中にエラーになるので、.svnを発見したらそれ以上遡らないようにするものである。

修正案2

--- psvn.el.org	2015-07-20, 21:42:00
+++ psvn.el	2016-10-10
@@ -3084,7 +3084,7 @@
     (let ((svn-process-buffer-name "*svn-info-output*"))
       (when (get-buffer svn-process-buffer-name)
         (kill-buffer svn-process-buffer-name))
-      (svn-run nil t 'parse-info "info" ".")
+      (svn-run nil t 'parse-info "info" default-directory)
       (svn-status-parse-info-result)))
   (unless (eq arg t)
     (svn-status-update-buffer)))
原因がよくわからないが、途中にワーキングコピーのルートディレクトリがあると、そこから1つ上に遡った時に、カレントディレクトリがdefault-directoryでなく、もう1つ上のディレクトリにずれてしまうようで、カレントディレクトリがワーキングコピー中でないと svn info . がエラーになる(*)ので、 svn info する時に常にdefault-directoryを使うように変えるものである。

どちらも適切な修正かどうかはわからないが、とりあえず筆者の環境(Linux + Subversion 1.8 + Emacs 2.4)では標記の問題は解決した。

続きを読む "psvn.el+Subversion 1.7がネストされたワーキングコピーでエラーになる件"

2016年07月05日

 被写界深度の計算式を導いてみた

被写界深度というのは、レンズを通して見た映像の、ピントが合っているように見える、奥行き方向の範囲のことである。
昨年、フォトマスター検定という試験を受ける為に勉強した中で、被写界深度を求める式が何故このようになるのかがわからず、気になっていた。
先月、フォトマスター検定について講義する機会があったので、そのネタとして、被写界深度の式を導いてみた。


図1

まず、被写界深度が何故存在するかというと、ピントが合っていない距離の点は点でなく丸になって映る(ボケる)が、その丸(錯乱円)が十分に小さいと、ほとんどボケてるように見えないからである。
その十分に小さい錯乱円の直径=許容ボケをδとすると、フィルム(デジカメだとセンサー)上のδに対応して、光軸上のフィルム/センサーの前後に、その範囲に焦点を結ぶとピントが合って見える範囲=焦点深度が存在する。

図2

この焦点深度の幅を2εとすると、F値(絞り値)=レンズ焦点距離(f)÷レンズ口径(Φ)を使って、f >> εなのでε/δ = F、すなわちε = Fδと近似できる。
この焦点深度に対応する、被写体側の範囲が、被写界深度である。

ここで、「ガウスの結像公式」(以下、単に「結像公式」)というのを用いる。結像公式とは、凸レンズからa離れた位置から発せられる光が、凸レンズを通って反対側のb離れた位置に焦点を結ぶ時、aとbの関係を、レンズ焦点距離fを用いて、
\frac{1}{f}=\frac{1}{a}+\frac{1}{b}, Gaussian form of the lens equation
と表すものである。ちなみに、レンズの焦点距離とは、無限遠から来る光が焦点を結ぶ位置のことである。(上式でa=∞とするとb=fとなる)

この結像公式を用いて、焦点深度と被写界深度の関係を式にする。
図1のように、sをレンズから合焦位置までの距離、snを被写界の近点、sfを被写界の遠点、tをレンズからフィルム/センサーまでの距離とすると、

となる。これらの連立方程式を、tを消去して、snとsfについて解く。
(1)よりt=sf/(s-f)が得られるので、これを(2),(3)に代入すると、
s_n=\frac{(t+\epsilon)f}{(t+\epsilon)-f}=\frac{(\frac{sf}{s-f}+\epsilon)f}{(\frac{sf}{s-f}+\epsilon)-f}=\frac{(sf+\epsilon(s-f))f}{f^2+\epsilon(s-f)}
s_f=\frac{(t-\epsilon)f}{(t-\epsilon)-f}=\frac{(\frac{sf}{s-f}-\epsilon)f}{(\frac{sf}{s-f}-\epsilon)-f}=\frac{(sf-\epsilon(s-f))f}{f^2-\epsilon(s-f)}
が得られる。
ここで、s,f>>εなので、s±ε≈s, f±ε≈f, sf±ε2≈sfと近似できることを用いて、簡略化する。
s_n=\frac{(sf+\epsilon(s-f))f}{f^2+\epsilon(s-f)}=\frac{((s-\epsilon)(f+\epsilon)+\epsilon^2))f}{f(f-\epsilon)+\epsilon s}\approx\frac{sf^2}{f^2+\epsilon s}
s_f=\frac{(sf-\epsilon(s-f))f}{f^2-\epsilon(s-f)}=\frac{((s+\epsilon)(f-\epsilon)+\epsilon^2))f}{f(f+\epsilon)-\epsilon s}\approx\frac{sf^2}{f^2-\epsilon s}

これにε=Fδを代入すれば、被写界深度の近点と遠点を求める式になるのだが、フォトマスター検定の参考書では過焦点距離を用いた式になっているので、もう少し変形を進める。
過焦点距離とは、被写界深度の遠点が無限遠に届く、最短の撮影距離である。焦点深度と結像公式を用いて被写界深度の近点、遠点と同じ要領で、過焦点距離Hについても式を立てると、

となる。下の式からt=f+εが得られ、それを用いて上の式をHについて解くと、
H=\frac{tf}{t-f}=\frac{(f+\epsilon)f}{\epsilon}\approx\frac{f^2}{\epsilon}=\frac{f^2}{F\delta}
すなわち過焦点距離=レンズ焦点距離2÷(絞り値×許容ボケ)と求まる。これを用いてsn, sfをさらに整理する。
s_n\approx\frac{sf^2}{f^2+\epsilon s}=\frac{sf^2}{f^2+\frac{f^2}{H}s}=\frac{Hs}{H+s}
s_f\approx\frac{sf^2}{f^2-\epsilon s}=\frac{sf^2}{f^2-\frac{f^2}{H}s}=\frac{Hs}{H-s}

従って、
被写界近点=(過焦点距離×合焦距離)÷(過焦点距離+合焦距離)
被写界遠点=(過焦点距離×合焦距離)÷(過焦点距離−合焦距離)
である。

なお、過焦点距離の計算には許容ボケが必要になるが、許容ボケは通常、フィルムやセンサーの対角線長÷1300、が用いられる。
35mmフィルムなら、√(362+242)/1300≒0.03328 (≒1/30) mm、
フォーサーズ/マイクロフォーサーズなら√(17.32+132)/1300≒0.01665 (≒1/60) mm、である。


2016年06月05日

 角換わり棒銀の定跡形で悩む

昨日は毎年参加している将棋大会だった。
昨年はベスト4まで行ったのだが、今年は1回戦敗退だった。
筆者はこの所公私共に多忙で、ほとんど将棋を指していなかったので、予選突破できただけで上出来である。予選敗退した場合の抽選の指導対局に備えて駒落ちの定跡本を携えていたが、出番が無かった。

今年は、予選の2局と決勝の1局全て、筆者が苦手とする角換わりを仕掛けられ、全て棒銀で応対した。予選の2局はデタラメな攻めが都合良く炸裂して、一昨年に優勝し昨年準優勝した強敵(一昨年に1回戦で負けた相手)にも勝って大満足だったのだが、決勝の1回戦は、昨年予選で勝った相手に課題の多い負け方をしてしまった。

 図1

図1は角換わり棒銀の定跡である。筆者は角換わりには棒銀と決めているので、この局面には何度か遭遇している。1回戦は先手を持ってこの局面になったのだが、ここから後手は△1九角、▲2七飛、△1七歩成、▲同歩、△1八銀と指してきた(図2)。よくある手らしいが、筆者は初めて見た。

 図2

これに普通に▲2六飛と応対し、△2四歩に部分的な定跡通りに▲1二角と打った(図3)。

 図3

▲1二角と打つ時、もし△3三桂とされたらどうすれば良いんだろう、と不安に思いながら指したのだが、実際に△3三桂とされ、焦った。その後、自信無く、▲2四飛△2二歩▲1三香成と進めた。

△1九角〜△1八銀が入っていない、図1の形では、△2四同歩に▲1二角△2二金▲3四角成△3三金▲2四馬が定跡である。これだけは覚えていた。
激指14で解析すると、やはり図1からは定跡通り△2四同歩▲1二角△2二金〜▲2四馬が最善であり、▲1二角△3三桂には▲2四飛△2二歩▲2一角成として▲8三香を狙うのが良いらしい。しかし、本局の図3からはそうでなく、
・▲1二角△3三桂▲2四飛△2二歩には▲6八玉が最善(次善は▲4八金と本譜の▲1三香成)
・▲1二角△3三桂▲2四飛に△2二歩でなく△2三歩が最善
・▲1二角では▲2四飛が最善(△2三歩なら▲1四飛で飛車成りが防げない)
だったようだ。前の2つは難しいが、最後のは少し考えたらわかることである。次の△3三桂ばかり気にして、▲1二角以外の手を読まなかったのが失敗だった。

それでも、▲1三香成までにそれほどひどい手はない。▲1三香成の後、△2九銀成▲同飛△3七角成▲4八金△1五馬(図4)と進んだが、ここで絶好の機会を逃した。

 図4

香を打ったら馬が死ぬと勘違いして▲1六香と打ったら、△2五馬と寄られて空振りした。
ここでは▲1六銀で馬が死んでいたし、▲2四銀でも△2五馬なら▲3三銀が馬取りでひどいので馬を切る一手だっただろう。

実戦はこの後、お互いに怪しい手が多かったので省略するが、飛車をいじめられ、大悪手を指して挽回不能になってしまった。その攻める手は大悪手とわかっていながら、他に粘る手を全く思い付かなかったのである。激指で解析すると、色々粘る手はあったようだが、どれも筆者には理解できなかった。直接の敗因は▲6八玉を怠って飛車をいじめられたことだが、図4のチャンスを逃したのが運命の分かれ道だったと思う。
△2九銀成〜△3七角成とされる前にどこかで▲4八金と防ぐべきだったかも知れないが、△4五桂の当たりが強くなるので、やるなら△3三桂の前だと思うが、△3三桂の前には別に有効な手があったので、適当なタイミングが無かったと思う。

それより、図2から▲2六飛△3五銀とされた場合にどうすれば良いのかがわからない。感想戦では後手が自信無かったと言っていたが、激指14では△3五銀が最善であり、▲5六飛に△2九銀不成でも△4二金▲2三歩成でも後手やや良しと計算される。図1から▲5六飛まで先手に変化の余地はなく、もしそうなら図1は既に先手がまずいことになる。プロの棋戦には見つからなかったが、プロが図2の△1八銀を見落とすはずがない。プロも激指14も最善としない△1八銀に対策が見つからないとはどういうことなのだろう。
激指14の最善手は、▲2六飛△3五銀▲5六飛△2九銀不成▲4八金△5四桂▲7五歩という難解な手順である。△2九銀不成に▲5三飛成は次善手で、その後△5二金▲5六龍△3七角成▲6八玉△4四桂▲6六龍△1五馬で後手やや良しだそうだが、アマチュアとしては駒損でも龍ができて気持ちが楽になるので、これを選択すべきか。