将棋をモチーフにしたプログラミング言語「ModanShogi」が公開!

この記事を読むのに必要な時間:およそ 2 分

はじめに

コンピュータ将棋の分野では,年々ソフトウェアの棋力が向上しており,10年以内にソフトウェアが平手でプロ棋士を破る日が来るのではないかと予想されている。

しかしその一方で,人間の「直観」による高度かつ高速な計算力は,未だその詳細が明らかになっていない。

人間の意図を計算機に伝えるためのプログラミング言語の世界においても,脳の直観を最大限に活かすには,現代のプログラミング言語はいずれも単純すぎると言えるだろう。

しかし最近では,これを逆手に取って,人間同士が戦うボードゲームのルールや戦略を抽象化し,プログラミング言語の世界にフィードバックする試みが実用化され始めている。有名なところでは,Google社のプログラマの手による囲碁をモチーフにしたプログラミング言語が一般公開されたのも記憶に新しい。

ModanShogiはこのようなトレンドをいち早くキャッチし,日本のポピュラーなボードゲーム,「将棋」をモチーフにして開発されたプログラミング言語である。

ModanShogiとは即ち「モダン将棋」であり,活発な戦略研究が進む現代将棋のエッセンスをプログラミング言語に取り入れる……という意味ではなく,「モダン焼」のモダンであるとされている図1モダン焼フジにて撮影)。

図1 最新鋭のクラウド型モダン焼。多人数で共有する

図1 最新鋭のクラウド型モダン焼。多人数で共有する

サンプルプログラム

ModanShogiで「Hello, world!」と表示するプログラムの例をリスト1に示す。

リスト1 ModanShogiによるHello World

▲9八銀 △9二玉 ▲6四歩 △6六銀 ▲6一歩 △同 玉
▲6七歩 △6一玉 ▲6八玉 △6三歩 ▲6九玉 △7七銀
▲7五金 △7一玉 ▲4八銀 △4二玉 ▲9六と △9八歩
▲同 玉 △6七玉 ▲9五金 △9一玉 ▲6三金 △同 玉
▲6八金 △6二玉 ▲4一歩 △4三玉 ▲5五歩 △5三玉

では,ModanShogiの言語仕様を見ていこう。

文法

ModanShogiのプログラムは,命令又はラベルを並べたものである。命令及びラベルの間の文字列は単に無視されるので,プログラマは自由にインデントを行ったり,ラベルの後などにコメントを書くことができる。ソースコードのエンコーディングはUTF-8でなければならない。

命令

命令は,以下のような形式をとる。

  [PLAYER][COL][ROW][PIECE]
  (例:▲2四銀)

PLAYERは「▲」(先手)または「△」(後手)のいずれかである。意味は特にない。最初の命令には▲を使い,以後は△と▲を交互に使うのが望ましい(必須ではない)。また,▲および△の代わりに,Unicodeで規定されている「☗」および「☖」を使うことが許されているが,入力が面倒なのでお薦めしない。

COLは全角アラビア数字の「1」から「9」までのいずれか,ROWは漢数字の「一」から「九」までのいずれかである。COLは命令の第一引数として,ROWは命令の第二引数として使われる(後述)。特例として,COLおよびROWが直前の命令と等しい場合には,これらをまとめて「同 」とすることができる。「同」のあとは全角スペースである。

PIECEは「香」「桂」「銀」「金」「玉」「王」「飛」「角」「龍」「馬」「と」のいずれかである。PIECEは命令の種類を表す(後述)。PIECEとしてはこの他に「成香」「成桂」「成銀」があり得るが,これらは将来の拡張のために予約されており,使用するべきではない。また余談ではあるが,将棋の棋譜としては「玉」のみを使うのが慣例であるため,潔癖症のプログラマは「王」を使用するべきではない。

ラベル

ラベルは,ジャンプ命令の飛び先として使われる(後述)。ラベルは,以下のような形式をとる。

  *N
  (例:*1)

Nは1以上の任意の自然数を,半角アラビア数字で表記したものである。

著者プロフィール

原悠(はらゆたか)

NaClこと「ネットワーク応用通信研究所」勤務。さまざまなプログラミング言語に興味を持つ。最近触っている言語はRuby,Scheme,JavaScript,Englishあたり。

URL:http://route477.net/

著書

コメント

コメントの記入