トップページ


基本技#10 「fmは清書係」

 

1. 図面を清書する

  自分の作った問題を、メールや掲示板等で他人に教えるときどうしていますか?
     
  配置と持駒を書いています。こんな風に。
 攻方:5三銀、2五馬 持駒銀
 受方:4一銀、5一玉、6一銀

上のように答えた人は、よ〜くこの章を読むように!!

…いや、もちろん上のように書いても構わないのですが、配置や持駒を手で直接入力すると、

などの問題があります。特に配置駒の多い作品では、上のような伝達方法はお勧めできません。

では、どうすれば確実に図面を伝達することができるでしょうか?
画像をつけるのは良い方法ですが、それなりに手間が必要ですし、再利用性もよくありません。

これが普通の詰将棋なら、図面の伝達には迷わずkif形式を使うことを勧めます。
フリー・市販を問わず、多くの将棋ソフトがこの形式をサポートしていますし、中味も直感的に把握しやすいテキストで表されています。
ただ、フェアリー詰将棋では多くの拡張要素や、普通の詰将棋では不正になる配置を含む場合があるので、残念ながらkif形式ではうまく扱えないことが多々あります。

そこで、この章ではfmの機能を使って、少ない手間で確実に図面を清書する方法を紹介します。もちろん基本的にはfmで扱うルールにしか適用できないのですが、メジャーなルールが扱えるだけでも、ずいぶんと助けになるはずです。

 

まずは、図面を渡すときに使う基本的な方法として、fmi形式(fmの標準的な入力形式)を使う実例を見ていただきましょう。
fmで図の入力または検討が終わった後を想定してください。
この図をファイルに出力します。

スクリーン入力画面

出力先の指定には“>”を用います。
UNIX や MS-DOS など、むかしのOSに慣れている人なら、自然に感じられる記号ですね。

出力先の指定

ここではファイル名を zumen.fmi としました。拡張子 .fmi は自動で付加されます。
(.fmi 以外の拡張子を使いたい場合は、zumen.txt のように拡張子まで含めて指定すればOKです。)
上の画面で Enter キーを押すと、zumen.fmi に図が清書されて出力されます。

その中味を実際に覗いてみるとこうなっています。

ばか詰 15角16金17歩19桂25銀26香35飛36香45銀56桂65銀75金76香85銀86香95金
96金97歩 +角桂歩2, 18玉38と39と46歩48と49と55飛58と59と66歩68と69と
78と89と #79

「何だ、これじゃ最初の『答』と変わらないじゃん」と思う人もいるかもしれませんが、これの良いところは、ここからすぐに図面を得られることです。配置を読み上げながら、盤に駒を並べる必要はありません。この zumen.fmi を fmview で開けば良いのです。
(このファイルには手順が入っていないので「図面のみ」という注釈が入ります。)

fmviewで表示

もうひとつfmi形式を使うメリットがあります。これがfmへの入力としてそのまま使えることです。
実際にfmを起動した状態で“<”を使って、読み込んでみましょう。
出力のときとは不等号の向きが逆向きで、入力プロンプトも“FM>”から“FM<”に変化しますが、この後のfmの操作が通常入力のときと大きく変わるわけではありません。

< による入力

このように、fmi形式でファイルを渡せば、入力ファイルとしての再利用性することも可能です。
ですから、fmi形式で図面の伝達を行うことは、利便性・正確性の両方で推奨できる方法です。

注意 fmi形式のファイルを読み込むのは /i オプションでも可能です。
ただし、/i を使うと、ファイルを読み込んだ後、ただちにfmの解析が始まってしまいます。
図面の確認だけで、答えを見たくないときは“<”を使うようにしてください。
 
 

 

2. 解けない問題でも図面は出せる

前項では入力について説明しましたが、出力の方はどうでしょう?
fmの標準出力形式はkif形式に準拠しているので、その図面を難なく読める人も多いはずです。

fmの標準出力を得るには、fmで解析した結果をファイルに出力すれば良いのですが、これだと解析した手順まで出てしまうので、図面だけ伝えたいときにはそれが邪魔になります。
また、問題が難しすぎてfmで解けない場合もあるでしょう。

こんなときに使えるのが /L オプションです。
/L オプションは出力する解の数を定めるオプションですが、これに“0”を指定してやると、解析を行わず、図面だけを出力します。
以下に、/L0を指定し、出力ファイルに zumen2.fmo と名前をつけたときの例を見ていただきましょう。

Fairy Mate 2.64z (VC++) - Copyright(c) KAMINA, Jiro 1992-2006

FM> <zumen

ばか詰 79手

9 8 7 6 5 4 3 2 1
+---------------------------+
| ・ ・ ・ ・ ・ ・ ・ ・ ・|一
| ・ ・ ・ ・ ・ ・ ・ ・ ・|二
| ・ ・ ・ ・ ・ ・ ・ ・ ・|三
| ・ ・ ・ ・ ・ ・ ・ ・ ・|四
| 金 銀 金 銀v飛 銀 飛 銀 角|五
| 金 香 香v歩 桂v歩 香 香 金|六
| 歩 ・ ・ ・ ・ ・ ・ ・ 歩|七
| ・ ・vとvとvとvとvと ・v玉|八
| ・vと ・vとvとvとvと ・ 桂|九
+---------------------------+
持駒:角 桂 歩2

FM< /L0 /ozumen2  
←ここで/L0を指定する


問題ファイル:zumen.FMI
出力ファイル:ZUMEN2.FMO
解数上限:0  ←解数が0になっていることを確認する

FM< . 
←実行(解析は行われない)

fmhv 2.65c (VC++) - Copyright(c) KAMINA, Jiro 1992-2006

ばか詰 79手

9 8 7 6 5 4 3 2 1
+---------------------------+
| ・ ・ ・ ・ ・ ・ ・ ・ ・|一
| ・ ・ ・ ・ ・ ・ ・ ・ ・|二
| ・ ・ ・ ・ ・ ・ ・ ・ ・|三
| ・ ・ ・ ・ ・ ・ ・ ・ ・|四
| 金 銀 金 銀v飛 銀 飛 銀 角|五
| 金 香 香v歩 桂v歩 香 香 金|六
| 歩 ・ ・ ・ ・ ・ ・ ・ 歩|七
| ・ ・vとvとvとvとvと ・v玉|八
| ・vと ・vとvとvとvと ・ 桂|九
+---------------------------+
持駒:角 桂 歩2

出力ファイル:ZUMEN2.FMO

FM<

この後、実際に ZUMEN2.FMO をメモ帳か何かで開いてみてください。
図面のみで、手順のない出力がなされているはずです。

なお、fm標準出力形式の図面は「等幅フォント」あるいは「固定ピッチフォント」と呼ばれるフォントを使っていないと崩れて見えることがあるので注意が必要です。
本サイトの掲示板(Fairy BBS)などでは、等幅フォントを使用しているので大丈夫ですが、他の掲示板や、メールなどではフォントに気をつけて図面を貼り付けてください。

 

3. 図面で入力もできる

  fmの標準出力形式で図面が送られて来ました。
これをfm
に入力するとき、どうしていますか?
     
  図面を見ながら打ち直してますけど…

上のように答えた人は、この項を読むように!!

図面がfmの標準出力形式で送られてきた場合に、これを入力に流用する簡単な方法があります。図面を中括弧 {} で囲むという方法です。

{  ←問題の開始
ばか詰 79手

9 8 7 6 5 4 3 2 1
+---------------------------+
| ・ ・ ・ ・ ・ ・ ・ ・ ・|一
| ・ ・ ・ ・ ・ ・ ・ ・ ・|二
| ・ ・ ・ ・ ・ ・ ・ ・ ・|三
| ・ ・ ・ ・ ・ ・ ・ ・ ・|四
| 金 銀 金 銀v飛 銀 飛 銀 角|五
| 金 香 香v歩 桂v歩 香 香 金|六
| 歩 ・ ・ ・ ・ ・ ・ ・ 歩|七
| ・ ・vとvとvとvとvと ・v玉|八
| ・vと ・vとvとvとvと ・ 桂|九
+---------------------------+
持駒:角 桂 歩2
}  ←問題の終了

これをファイルに保存すれば、通常のfmi形式のファイルと同様に扱うことができます。
題名も問題に含めたい場合は、題名の行から括弧で囲みます。

{
神無七郎 作  ←題名の行

ばか詰 79手

9 8 7 6 5 4 3 2 1
+---------------------------+
| ・ ・ ・ ・ ・ ・ ・ ・ ・|一
| ・ ・ ・ ・ ・ ・ ・ ・ ・|二
| ・ ・ ・ ・ ・ ・ ・ ・ ・|三
| ・ ・ ・ ・ ・ ・ ・ ・ ・|四
| 金 銀 金 銀v飛 銀 飛 銀 角|五
| 金 香 香v歩 桂v歩 香 香 金|六
| 歩 ・ ・ ・ ・ ・ ・ ・ 歩|七
| ・ ・vとvとvとvとvと ・v玉|八
| ・vと ・vとvとvとvと ・ 桂|九
+---------------------------+
持駒:角 桂 歩2
}

 

4. 手順を清書する

図面だけでなく手順も伝えたい場合はどうすれば良いでしょうか?
もちろん普通に手順を書けば良いのですが、図面のときと同様に「面倒だ」「誤記が生じる」「書式が不統一」などの問題が生じます。
fmの標準出力形式で手順を記述すれば、fmview で実際に動かして、画面で手順を確認できるので、受け取った相手にとってもメリットがあります。
とはいえ、fmの標準出力形式に人間の方が書式を合わせるのは、慣れていない方には却って面倒でしょうから、ここではfmそれ自体の機能を使って、その形式で清書する方法を紹介します。

まず、fmで簡単に解ける問題なら、fmに解かせた出力をそのまま使えばOKです。
しかし、fmで簡単に解けない問題はどうでしょう?

これに対する現実的な答えのひとつが、Kifuw を使って手順を入力する方法です。フェアリーデータベースの入力でも、これを推奨しました。実際、「ルールチェック」を外せば、フェアリーの問題でも、たいてい入力することができます。画面上で動かして、入れた手順をすぐに確認できるので、間違いも起こりにくいという利点があります。
Kifuw からfmの標準出力形式で出力に変換するのは fmview を使えば簡単です(6.で後述)し、相手も Kifuw を持っていれば、そのまま送ってしまっても良いでしょう。

しかし、フェアリーの中にはキルケなどのように、Kifuw では入力すらできないルールもあります。しかもfmで解けない、あるいは相当時間が掛かるといった場合は、どうすれば良いでしょう?

こんなとき役に立つのが「手順確認」の機能です。
手順の情報の一部または全部をfmに教えて、それに沿う手順だけを検索させることができるのです。

手順指定の例

上はfmのスクリーン入力画面から手順指定を行った例です。

| 13 22 11 32 23 23

が、指定の手順。駒種を省略して、位置だけ指定しています。
もちろん細かく指定した方が、処理時間は短いのですが、大抵は位置だけの指定で充分です。
手順の指定が終わったらピリオド . を押して、解析を実行します。

手順指定の実行結果

作意が出力されていることを確認し、今度は出力ファイルを指定して実行しましょう。
これで図面と手順が同時に得られます。
もし手順の指定が誤っていた場合、|- と入力して手順の指定を取消し、もう一度指定しなおしてください。
このくらいの作なら、「手順確認」機能など使わず、そのまま解かせても大したことはないのですが、ばか自殺系だと2手伸びるだけでも大幅に検討時間が増加します。
ですから単に清書したいだけのときは、この「手順確認」を活用することをお勧めします。

 

5. 余談:手順指定部分には /M14

話は逸れますが、筆者は清書以外の目的でも「手順確認」機能をよく使います。

例えば詰むはずの作を「fmが不詰と答えた」場合、それが自分の勘違いか、fmのバグか、それとも何かのミスなのか、原因が分からないことがあります。
こんなとき、自分の勘違いかどうか確かめるため、自分の想定している作意を「手順確認」で解析し、原因の切り分けを行うことができます。
普通の詰将棋ですら、変化の読み落としで不詰作を出すことがあります。フェアリーでは勘違いによる不詰など日常茶飯事ですから、「手順確認」機能はとても便利です。

もうひとつ、「手順確認」には用途があります。
それは「簡易検討」としての役割です。
普通に検討すると時間が掛かりすぎる作の場合、「手順確認」機能を利用して、自信のある場所は手順を確定的に指定し、自信のない箇所だけ曖昧な指定でfmに解かせるのです。

ただ、昔はこの方法には問題点がありました。
「手順確認」を使った部分には /M オプションが利かないという問題です。
/M オプションが利かないと、同じ局面を何度も読んでしまい、検討がはかどりません。

その問題を解消するために用意されたのが、/M14 オプションです。
他の /M オプションとは異なり、「手順確認」により曖昧指定された部分にのみ適用され、重複した検討を回避します。
もちろん、他の /M オプションとの併用も可能です。

ちなみに /M13 というオプションはありません。欠番です。
別に縁起を担いだわけではないとは思いますが、理由は知りません。

 

6. fmview を使った清書

これまで、fmを使った図面や手順の清書について説明してきましたが、kif形式からfmの標準出力形式やfmの標準入力形式に直す場合に、最も楽で分かりやすいのが fmview を使う方法です。

fmview は元々fmの出力ファイルを画面で動かすためのソフトですが、機能が拡充されて、kif形式のファイルを読むこともできるようになりました。更に、その問題をfmの標準出力形式やfmの標準入力形式で保存する機能も備えています。従って、kif形式からの変換は簡単に行えるのです。

この変換機能、筆者はフェアリー以外でも使っています。
というのは、kif形式というのは元々指し将棋の棋譜再現のためのものなので、詰将棋流の棋譜表記と若干異なるところがあります。
例えば次のような棋譜ファイルがあったとします(ki2形式)。

開始日時:2002/11/16(土) 14:04:09
終了日時:2002/11/16(土) 14:04:16
後手の持駒:金四 桂三 歩十四 
  9 8 7 6 5 4 3 2 1
+---------------------------+
| ・ ・ ・ ・ 銀v馬v歩 ・ 銀|一
| ・ ・ ・ ・v歩 銀 馬 香v銀|二
| ・ ・ ・ ・ ・ ・ ・ ・v玉|三
| ・ ・ ・ ・v香 ・ ・ 歩 ・|四
| ・ ・ ・ ・ ・ ・ ・ ・ ・|五
| ・ ・ ・ ・ ・ ・ ・ ・ ・|六
| ・ ・ ・ ・ ・ ・ ・ ・ ・|七
| ・ ・ ・ ・ ・ ・ ・ ・v香|八
| ・ ・ ・ ・ ・ 龍v龍 香 ・|九
+---------------------------+
先手の持駒:桂 歩 

▲4三龍    △3三桂    ▲2五桂    △2四玉    ▲4四龍    △3四桂
▲3三馬    △1四玉    ▲2六桂    △2五玉    ▲4五龍    △3五桂
▲3四馬    △1五玉    ▲2七桂    △2六玉    ▲4六龍    △3六桂
▲3五馬    △1六玉    ▲2八桂    △2七玉    ▲4七龍    △3七桂
▲3六馬    △1七玉    ▲3五馬    △2七玉    ▲4五馬    △1七玉
▲4四馬    △2六歩    ▲同 馬    △同 玉    ▲3六龍    △1五玉
▲2七桂    △1四玉    ▲1六龍    △2三玉    ▲2四歩    △3四玉
▲3六龍    △2四玉    ▲3三龍    △2五玉    ▲3五龍    △1四玉
▲1五龍    △2三玉    ▲2四歩    △3四玉    ▲3五龍    △4三玉
▲3三龍
まで55手で詰み


これを fmview でfmo形式に変換します。

fmview 2.81 - Wed Oct 24 12:53:07 2007

かしこ詰 55手

  9 8 7 6 5 4 3 2 1
+---------------------------+
| ・ ・ ・ ・ 銀v馬v歩 ・ 銀|一
| ・ ・ ・ ・v歩 銀 馬 香v銀|二
| ・ ・ ・ ・ ・ ・ ・ ・v玉|三
| ・ ・ ・ ・v香 ・ ・ 歩 ・|四
| ・ ・ ・ ・ ・ ・ ・ ・ ・|五
| ・ ・ ・ ・ ・ ・ ・ ・ ・|六
| ・ ・ ・ ・ ・ ・ ・ ・ ・|七
| ・ ・ ・ ・ ・ ・ ・ ・v香|八
| ・ ・ ・ ・ ・ 龍v龍 香 ・|九
+---------------------------+
持駒:桂 歩

43龍 33桂 25桂 24玉 44龍 34桂 33馬 14玉 26桂 25玉 45龍 35桂 34馬 15玉
27桂 26玉 46龍 36桂 35馬 16玉 28桂 27玉 47龍 37桂 36馬 17玉 35馬 27玉
45馬 17玉 44馬 26歩 同馬 同玉 36龍 15玉 27桂 14玉 16龍 23玉 24歩 34玉
36龍 24玉 33龍 25玉 35龍 14玉 15龍 23玉 24歩 34玉 35龍 43玉 33龍
まで 55手

以上

このように、詰将棋でよく使われる短い表記法で棋譜が出力されます。
筆者は詰パラ向けに原稿を書くときなどは、フェアリーのみならず普通の詰将棋でも、この方法で棋譜の形式を変換して使うことがあります。

柿木将棋には「詰将棋用」の棋譜をクリップボードに出力する機能がありますが、柿木将棋を持っていないときや、たまたまそれが利用できない環境で作業をするときなどは、fmviewを清書用に利用するのが良いでしょう。

 

7. 画像作成

この章ではテキストによる図や棋譜の清書について説明してきたのですが、やはり図面だけは画像で見たいという人は多いでしょう。そういう人のために、ちょっとだけ画像作成についても触れておきます。

このサイトで図を作っている方法は、ちょっと泥臭いやり方です。
fmview で表示した画面を Alt+PrintScreen でクリップボードにコピーし、「ペイント」にその図を貼り付けた後、図面の部分だけを切り抜いて、GIF形式で保存しているのです。
本当に図面のみなら、KifuwにGIF形式の画像ファイルを作る機能があるので、それを使えば良いのですが、フェアリーだとルール名や手数も込みで画像にしたいので、こういう方法を採っています。

以前「無神都市」というCD-ROM作品集を作ったときに、神無次郎氏が図面作成用のソフトを作ってくれました。その名も shogi.exe(何という直截的な名称!)。
fmo形式のファイルをEMF形式※注の画像ファイルにしてくれる上、多量の図面を一気に画像化するのに便利な機能を備えています。
※注 EMFというのは Enhanced Metafile の略で、Windows用の画像フォーマットであるWMFの32ビットバージョンです。画像を伸縮させても画質が悪くならないので、Wordなどで原稿を作成する際には重宝しています。)

この shogi.exe は今のところ一般公開されていないのですが、いつかこの機能がfmviewに組み込まれることを筆者は期待しています。その時には、画像形式はEMFよりも、もっと一般的に使われている GIF とか PNG に対応して欲しいと個人的には思っています。
 ↑
きっとこういうことを書いておけば、いつか神無次郎氏も対応してくれるでしょう。

 

[*]