将棋の戦型で例えるプログラミング言語一覧

メジャー言語

C言語 = 棒銀

C言語は長い歴史を持つ言語です。

汎用性が高く、多くの他言語に影響を与えました。

「とりあえずこれさえ覚えておけば大丈夫」というキャッチフレーズから、数多の初心者が好んで学習します。

銀を五段目に繰り出して銀交換を目指すという明快かつシンプルなねらいから、習得も簡単です。

とはいえ、古来より強豪棋士に愛されてきた戦法でもあるのでプロ仕様にも耐えます。

相掛かりに、角換わりに、矢倉に、対振りや相振りにだって使えちゃう。

シンプルかつ奥深いその特性は「C言語の神様」と称えられる加藤一二三九段の愛用戦法としても有名です。

C++ = 横歩取り

「C++三年の患い」という格言があります。

C++という言語に手を出してしまうと、使いこなせるようになるまで3年はかかるという意味です。

きわめて強力な機能を多く持つ一方、「手の広さに人間が追いつかない」と評されるほど序盤から難解かつ独特な駒の動きが要求され、玉が5八に上がるか6八に上がるかで「青野流」「勇気流」といった全く別の作戦になってしまうといった複雑怪奇な言語仕様が続いています。
(ひとつの作戦が既存の複数の親作戦の性質を受けつぐ「多重継承」が特に顕著です)

飛車角桂が盤の中央で跳梁跋扈し、端歩ひとつでも全く別の景色になり、なおかつ間違えた時の被害が甚大であることから他の戦型とあらゆる意味で一線を画しています。

素人が手を出して4五角戦法とかやっても割と簡単に返り討ちに遭うため、利用は控えめにしておいた方がいいでしょう。

Java = 矢倉

「一度組んだら同じように動く」プログラミング言語。

OSが異なれば動くプログラムも異なるので、「ひとつのソースでどのPCでも動く」Javaの登場は画期的だった。

ただし、同じように動かすためにはそれぞれのPCにランタイム(矢倉24手組定跡)が必要になる。

クライアントサイド、サーバサイド、デスクトップアプリから組込みシステムまで幅広く対応し、きわめて緻密かつ厳格な記述を必要とすることから米長永世棋聖はこれを「プログラミングの純文学」と呼んだ。

長きに渡り王道の存在として認知されていたが、コンピューター将棋開発者たちによるフレームワークの整備が進んだ結果、マルチプラットフォームの軽量系言語(居角左美濃)の登場により衰退期に入った。

お互い矢倉戦法をぷっ放しあう「相矢倉」は以前なら飽きるほど見かけたが、最近では持久戦矢倉っぽい雰囲気になるだけで歓声が上がる始末である。
(※2017年9月23日 第38回日本シリーズJTプロ公式戦 森内九段-羽生二冠戦熱い森内九段の先手矢倉とそれを受けて立つ羽生さん熱い)

幾星霜の時を越えて雁木が復活したように、いつの日かJavaが再び脚光を浴びる日を願ってやまない。

COBOL = 相掛かり

古代言語。

その歴史は古く、江戸時代(1959年)から定跡が存在する相居飛車の花形戦法だった。

英語名はダブルウィングアタック。

元は事務処理目的で開発されており、金額計算などに重用された。

可読性が高く「読みやすい」と感じる人が多い一方、言語自体が特定用途に特化しているため、プロ・アマともに対局でCOBOLの戦型になることは多くない。

一方、金融機関・行政機関が長年にわたりCOBOLプログラムを稼働させ続け現在に至っているケースが非常に多く、特に日本においては銀行系旧システムの保守・点検および新システムの移行(棋譜並べ)においての登場頻度が多いため、主流言語のひとつとしてその座を占めている。

Python = 角換わり

比較的新しい言語。

近年では居飛車・振り飛車を問わず角交換系の将棋になりやすいことから、現代的な感覚を学ぶのに最適な戦型とされている。

主要な作戦が「棒銀」「早繰銀」「腰掛銀」といったシンプルで扱いやすい言語設計であり、互いに角を持ち合うので打ち込みの隙をなくした綺麗なソースコードが書けるようになるのも人気の秘訣。

核となるPythonの仕様自体は最小限に抑えられているが、大規模な標準ライブラリやフレームワークといった定跡が整備されており、特に木村モジュールによる先手必勝手順は角換わり党ならマストインストールである。

近年は「機械学習」「ビッグデータ活用」により高度な数値計算のライブラリを豊富にもつPythonは重宝されており、「4五桂ポン急戦」「4八金・2九飛型」を生み出すなど更なる急速発展が著しい言語でもある。

LISP = 雁木

「雁木か 何十年前の将棋だ」
「400年前だ」

LISPは1958年に設計された非常に古い言語です。

もうぶっちぎりに古い。

コンピュータープログラムのための実用的な特徴を備えていたので、人工知能研究に好まれました。

実装が容易なので多くの方言が生み出され、居飛車・振り飛車・入玉含みなど作戦の幅は非常に広かったといいます。

しかし、(いかんせん(カッコが(多すぎ)))てスキマにあふれるため、自玉を硬く保つ現代将棋の潮流からは姿を消し矢倉に取って代わられました。

ところが近年、人工知能研究が活発になるとともに自己拡張が得意な言語特性が高く評価され、

自陣に打ち込みのスキがない
引き飛車・右桂活用できる
先に速攻を仕掛けられる
細い攻めを繋げればいい

といった「コンピューター将棋ならではの強み」を活かす戦型としてここ1年で急速な流行を見せています。

「矢倉は終わった」

とあるプロ棋士がそう言ったそうです。

かつて「矢倉のできそこないの弟」と呼ばれた雁木が華々しい活躍を見せている昨今、『ハチワンダイバー』作者の柴田ヨクサル先生と二こ神師匠には格別の栄誉が送られて然るべきでしょう。

完全に余談なのですが、2017年9月22日に行われた第76期順位戦A級5回戦豊島八段-稲葉八段戦において、棋士室で中継を見ていた棋士たちが「雁木での入玉って珍しいですよね」みたいな話になった時、
宮本五段「でもハチワンダイバーで出てきましたよね」
斎藤七段「ああ、そういえばありました、ありました」
ってコメントが交わされたって話がめっちゃ好きです。

JavaScript = 藤井猛九段

みんな大好きJavaScript。

藤井聡太四段と苗字が似ているが全くの別人物である。

きわめてユニークなプロトタイプベースのオブジェクト指向スクリプト言語。

スクリプト言語総帥で竜王3期という輝かしい実績を持つ。

1995年、当時注目を集めていたJavaに対して放った対居飛車穴熊四間飛車「藤井システム」によりJavaScriptという名称が生まれた。

1996年に新人王戦で優勝しマイクロソフトのInternet Explorer3.0に藤井システムが搭載されるようになると、急速にJavaScriptは普及していった。

1998年には竜王戦決勝七番勝負で谷川浩司竜王をストレートで破りタイトル初獲得の栄誉を手にした。

しかし「藤井システム」への対策が進み居飛車よしの結論が出始め、「JavaScriptを無効化してください」の声とともに苦難の日々が続く。

だが、JavaScriptは終わっていなかった。
「藤井矢倉」や「角交換四間飛車」等、優秀な戦術を次々と生み出し活躍の場を広げたことにより、GoogleやAmazonといった他のトップ棋士たちもJavaScriptの戦術を活用していった。

今日、JavaScriptはWeb業界になくてはならない存在である。
のみならず、「Angular」「node.js」といった多彩なフレームワークに愛される存在である。

2016年、第24期銀河戦において予選ブロック戦・トーナメントを勝ち抜き、迎えた決勝で強豪棋士広瀬八段を相手にもはや消えたかに思われた自身の代名詞「藤井システム」を発動し死闘の上勝利。

劇的。
あまりにも劇的であり。

そして藤井銀河が誕生した。

これからも我々は藤井九段を観測していくのだろう。

序盤で大砲を左方に滑らせる、その指先の力強さと未来への意志に魅入りながら。

「熱い。もう一番!」

(第58期王座戦五番勝負第1局敗北直後)

おすすめ将棋書籍

『ハチミツとクローバー』で一世を風靡した羽海野チカ先生の現行作。
おすすめ。

『のうりん』で一世を風靡した白鳥士郎先生の現行作。

熱い……熱い!!!

超おすすめ。

5巻は泣いた。

『エアマスター』で一世を風靡した柴田ヨクサル先生の過去作。
若手の強豪現役棋士が読んでるくらい将棋の描写がガチ。
でも将棋を指すイメージ動作(八極拳)だけでコンクリートが割れ人が吹き飛ぶくらい内容もぶっ飛んでる問答無用系マンガ。

「みんな、将棋指そうぜ!」