将棋道場データベース構築の実際

目指せ! 5000局データベース


 ここでは、インターネット上で公開されている棋譜データを入手し、それによってデータベースを作成して鑑賞する方法を詳解します。

1.棋譜データの入手

 まず棋譜データですが、ここではキメラさんのホームページ上にあるデータを使わせていただきます。キメラさんのホームページ「中飛車でGO」には「プロ対局の棋譜集」というページがあり、そこからは何と、5千局以上のプロ対局棋譜がダウンロードできるようです(*1)。ここでは、そのデータ中からpuro3.lzhをダウンロードさせて頂き、それによりデータベースを構築する手順を示します(キメラさんに感謝!!)。
     *1: 2003年1月末現在、一時的にダウンロード不能になっているようです。
     *1: 2003年3月12日、ダウンロード可能です。

 puro3.lzhは複数のファイルをまとめた圧縮データですので、適当なディレクトリ(以下本稿では、ディレクトリ=フォルダとお考え下さい)を作ってそこに解凍してください。以下では、例としてD:\kifudata\puro3というディレクトリに解凍します。
 解凍すると図1のとおり、2千局以上の棋譜ファイルが入っていることがわかります。

図1

2.将棋道場の準備

 先に入手したデータは将棋道場ver5.1d以降で扱うことが出来ます。まだver5.1dをダウンロードされていない方はダウンロードしていただき、セットアップしてください。

3.データ変換

 将棋道場の基本の棋譜データファイル形式は、CSAファイルという形式です。このCSAファイルは、ひとつのファイル中に複数の棋譜を収めることが出来ます
 また、将棋道場の[ツール]-[ファイル変換]で、複数の棋譜ファイル(KIF形式、KI2形式、その他)をまとめて一つのCSAファイルに変換することが出来ます。そして将棋道場はCSAファイル内の複数棋譜を一度にデータベースに登録できます。
 そこで、ここでは1項で解凍した沢山の棋譜をまとめてひとつのCSAファイルに変換し、それをまとめてデータベースに登録する手順を紹介します。なお、変換と言っても、元の棋譜ファイル自体がなくなったり変化することはありません。元になる棋譜ファイルを読んでCSAファイル形式で出力する機能です。

 まず、kifudata内の棋譜群をD\kifudata\kifu.csaというファイルに変換します。
 [ツール]-[ファイル変換]で現れる「棋譜→CSAファイル変換」ダイアログ(図4)で入力ファイルを選択します。具体的な操作方法としては、"選択"ボタンを押して現れる「入力ファイルの選択」ダイアログで、選択したい最初の棋譜ファイル名をクリックした後、適当なところまで横スクロールさせ、最後のファイルをShiftを押しながらクリックすると、その間の複数の棋譜を一度に選択できます。しかし、2千個ものファイルを一度に指定すると、図2のようなエラーが出てしまいます

図2

 全部ではなく、半分(千個程度)なら問題なく選択できます。今回は、まず最初のファイルから98May08.kifというところまでを選択します(図3)。

図3

次に、出力ディレクトリと出力ファイル名で、出力先を決めます。ここではD:\kifudata内のdata.csaというファイルに出力します。最初は書込モードを上書きにして変換を"実行"します(図4)。

出力ファイルを指定し、変換方法は一括、書込モードは上書とします
図4
 

 すると「D:\kifudata\data.csaに一括出力した」という確認メッセージが出ますのでOKしますが、「棋譜→CSAファイル変換」ダイアログも終了してしまいます。しかし、まだ変換していない棋譜があるので、[ツール]-[ファイル変換]で再度ダイアログを呼び出します。
 そして図5のように、先ほどの残りのファイル群を入力ファイルとして指定します。

図5

 そして、今度は図6のように書込モードを追加にしてから変換を"実行"します。こうすると棋譜は先ほどのdata.CSAに追加出力されます。これにより一つのファイルに多くの棋譜を入れることが出来るのです。

図6

 また将棋道場は、KIF形式は直接読むことが出来ますが、KI2形式は直接は読めません。しかしこのKI2形式も[ツール]-[ファイル変換]の機能でCSA形式に変換でき、また同時に複数棋譜をひとつのCSAファイルにまとめることが出来ますので、KIF形式と全く同様にデータベースに登録できます。

4.データベースの新規作成

 将棋道場をインストールすると、デフォルトのデータベースをインストールディレクトリ内に生成します。そこにデータを書き込んでいけばよいのですが、将棋道場は複数のデータベースを切り換えて使えますので、ここでは新たなデータベースを作ってみます。
 デフォルトのデータベースをそのまま使う場合や、既にデータベースを作ってあり、そこにデータを追加する場合はこの項を飛ばして5項に進んでください。
 データベースはメニューから[データベース]-[データベース新規作成]、で作ります。データベースの実体は、新たに生成されるディレクトリとその内部のデータファイル群です。新規作成時には既存のディレクトリを作成先として指定することは出来ません。

図7のように、既に存在しているフォルダ(この例ではD:\kifudata)を指定すると作成できないというエラーになります。
図7
 

 既に存在しているフォルダ中に、新たなフォルダ(図8の例では\db)を作る要領でデータベース名を付けてください。"フォルダ選択"でデータベースを作りたいフォルダを選んで、そのパスが表示されたら、その後ろに作成するデータベース名(=フォルダ名)をキーインし、"新規作成"ボタンを押します。成功すれば図8の様に正常に作成されたというメッセージが出ます。

図8

 そしてこのエリアを使うように設定します。[設定]-[データベースの設定]、で作成したD:\kifudata\dbを指定します。現在選ばれているデータベース名は、将棋道場のウインドウ右下のステータスバーに表示されています。

5.データベースへの登録

 3項で作成したkifu.csaのデータを、データベースに登録します。[データベース]-[ファイルからの対局登録]を行います。
 図9の「ファイルからの対局登録」ダイアログの"CSAファイル選択"で、先ほどのCSAファイルを選びます。

図9

 これで"登録"すれば、図10のとおりデータベースへのデータ登録が行われ、しばらく待つと登録が終了します。

図10

 なお、データベースへの登録が無事終了すれば、これまでに使ったdata.csaという棋譜データのCSAファイルは不要です。また、その変換元のkifuファイル群(D:\kifudata\puro3\*.kif)ももう不要です。削除していただいて構いません。

6.検索、鑑賞

 これで素晴らしいデータベースが出来上がりました。棋譜を鑑賞してみましょう。
 [データベース]-[対局棋譜検索・選択]を行って下さい。「対局検索・選択」ダイアログが現れ、そこで"検索実行"ボタンを押すと、登録されているデータの一覧が図11のように表示されます。ダイアログ内のリストに示されるお好きな対局をクリックして選択し、"対局選択"ボタンを押せば、画面が将棋盤になり、その棋譜を鑑賞することが出来ます。
図11

 さて、基本的には上のように使えば棋譜鑑賞が出来るのですが、数千局の棋譜データから鑑賞したい棋譜を適切に選ぶのは容易ではありません。そこで検索の出番です。この検索機能が、将棋道場の本命機能(のひとつ)です。
 このデータベースには様々な棋戦・戦型・対局者のデータが入っていますが、探したい棋譜を条件で絞り込むことが簡単に出来ます。「対局検索・選択」ダイアログを再度開いてみましょう。
 では、竜王戦での振飛車の棋譜を新しい順に表示させる、という事をやってみます。図12のダイアログ中の、検索条件部分をご覧下さい。
 この"検索条件"に抽出したい検索条件を記述します。#で始まる行はコメント扱いで、検索時には無視されます。戦型を"飛車"としていますが 、これで戦型という項目の文字列中に「飛車」を含む、例えば「四間飛車」「中飛車」、あるいは「袖飛車」などの対局を抽出することになります。そしてその中で、さらに棋戦名に「竜王」を含む対局を抽出しています。また、並び順を指定する order by は対局日でのソートを指示していますが、最後につけたdescによって、降順(この場合は新しい順を意味する)となっています。
 こうした検索方法指定の詳細についてはヘルプをご覧下さい。文字列設定には正規表現も使えますし、また局面指定して条件に合う局面を含む棋譜だけを抽出するというような事も可能です。
 さて、検索条件が書けたら"検索実行"ボタンで実行すれば、図12のように条件どおり棋譜が抽出されます。
 なお蛇足ながら、図11の場合は検索条件はすべてコメントとなっていますので、全棋譜が抽出されたわけです。

図12

 こうして検索条件を指定することで、好みのデータだけに絞ることが出来ます。しかし、いちいち検索条件を書き直しているのは面倒だと感じることもあります。
 そこで、設定した条件に名前を付けてファイルとして保存しておき、あとから呼び出すことが出来ます。それが"条件保存"です。条件保存ボタンで図13のようなダイアログが現れますので、ここであとから見てもわかるような適当な名前(ここでは"竜王振飛車検索.dj1")にして保存します。(拡張子は自動的にdj1となりますので、このままにして下さい。)
 この検索条件保存機能で気軽に、その時に探したい棋譜を簡単に呼び出せます

図13

 これで、「対局検索・選択」ダイアログの"条件読出"ボタンでいつでもこの条件が読み出せるようになりました。同様に、例えば矢倉戦を検索する条件、羽生九段の棋譜を検索する条件など、自由に作成して幾つでも保存しておくことが出来ます。

7.データベースへの他のデータの追加

 先に紹介したキメラさんのホームページにはデータがまだ他に沢山あります。例えばpuro1.lzhという中にも2千局を 越える棋譜データが入っています。

 しかし、puro1,lzhは、先に例として示したpuro3.lzhのデータとは

(1) 棋譜データがkif形式でなくki2形式である
(2) 棋戦毎にディレクトリに分けて入っており、その中はさらにサブディレクトリに分類されている

といった点で異なっています(指し手のコメントも多い貴重な棋譜データであり、素晴らしい労作です)。
 (1)の点は、3.データ変換の項で説明したファイル変換機能によって問題なくCSAファイルに変換できます。ただし、「入力ファイルの選択」ダイアログ中の"ファイルの種類"(図3)を、kif形式でなくki2形式とする点に注意して下さい。
 (2)ですが、将棋道場のファイル変換機能では、サブディレクトリまでまとめて変換する事は出来ません。そのため、各ディレクトリ毎にファイル変換を行う必要があり、少々手間がかかります。
 しかし、すべてのデータを同一CSAファイルに追加するように変換を行えば、データベースへの登録操作は1回で済みます。

 また、他のデータもkif形式あるいはki2形式ですので、これまで説明した手順で追加することができ、一層充実したデータベースを作成できます。

 さあ、あなたも素晴らしいデータベースを作成してみませんか。


(2003/3/12修正(1)、2003/1/30修正(1)、2003/1/4修正、2002/12/24 1st)

TopPage