対戦型麻雀ゲーム AI のアルゴリズムと実装

タイセンガタマージャンゲームエーアイノアルゴリズムトジッソウ

対戦型麻雀ゲーム AI のアルゴリズムと実装の表紙
プログラミング
著者:
小林聡(コバヤシサトシ)
出版社:
秀和システム
出版日:
2022年12月23日
ISBN:
9784798067889
在庫:
在庫あり
5(1 件 / 楽天ブックス)
中級者向け
プログラミングアルゴリズムゲーム開発麻雀AI 実装ゲームアルゴリズム戦略的プログラミングシミュレーションオープンソースゲーム理論

なぜ注目されているか

総合597位 ↑ 4 ランクアップ 言及 3 件
言及数
689位

書籍紹介

対戦型麻雀ゲーム「電脳麻将」のソースコードを開発者自ら解説します。
まずは、シャンテン数計算、和了役判定と点数計算、各種ルールに従ったゲームの進行の実装を解説します。その後、まずはリーチの AI を実装し、ベタオリ、鳴きなど、具体的な戦術を追加して麻雀 AI を強化する過程を順を追って説明していきます。

電脳麻将の AI は機械学習を採用していません。それゆえ、打牌選択の基準、鳴きの基準、押し引きの基準などは、プログラムで具体的に指定しています。いわば「人間の考える戦術をシミュレートする装置」といえます。さまざまな麻雀セオリーを実装し、それ以前の AI との対戦を行って、その結果を確認しながら AI を進化させていきます。その過程を理解すれば、麻雀以外の AI の実装・強化にも役立つはずです。

「電脳麻将」はオープンソースで公開されているので、本書を参考にオリジナルの戦術を実装した AI を開発し、差し替えることができます。そして、AI 同士で対戦させ、その戦術の正しいかをシミュレーションすることも可能です。

東一局 イントロダクション

0 本場 電脳麻将とは

1 本場 プログラム構成

2 本場 本書について

東二局 手牌とシャンテン数

0 本場 手牌の表現

1 本場 手牌の操作

2 本場 シャンテン数計算

東三局 和了点計算

0 本場 和了点計算の流れ

1 本場 状況役と懸賞役

2 本場 和了形を求める

3 本場 符を計算する

4 本場 和了役を判定する

5 本場 和了点を計算する

6 本場 計算例

東四局 ゲーム進行

0 本場 ゲーム進行の概要

1 本場 ゲーム進行の実装

2 本場 牌山と河の実装

南一局 麻雀 AI のプログラム

0 本場 麻雀 AI のプログラム構造

1 本場 リーチの AI

南二局 オリと鳴き

0 本場 ベタオリの AI

1 本場 鳴きの AI

南三局 手作り

0 本場 手作りの AI

南四局 押し引き

0 本場 押し引きの AI

西入 付録

技書の森解説

麻雀の AI を、学習済みのモデルに頼らず、人が考えた戦術をプログラムとして書き下して作る方法を、実際に動くソースコードで追うための本です。『対戦型麻雀ゲーム AI のアルゴリズムと実装』 (小林 聡 著、秀和システム、2022 年 12 月 23 日発売) では、オープンソースの対戦型麻雀アプリ「電脳麻将」の開発者本人が、麻雀 AI のアルゴリズムと実装をソースコードに沿って具体的に解説します。版元が掲げる問いは「あのセオリーは正しいのか?」で、戦術を組み込んだ AI どうしを実際に対戦させて、その優劣を確かめるところまでを射程に入れています。

東一局から南四局まで、局に見立てた 8 章の構成

目次は麻雀の局になぞらえて組まれ、東一局から東四局、南一局から南四局の 8 章と、付録の西入からなります。各章の中の節は 0 本場から数える形です。東一局「イントロダクション」で電脳麻将の概要とプログラム構成を示し、東二局「手牌とシャンテン数」、東三局「和了点計算」、東四局「ゲーム進行」で、手牌の表現、状況役と懸賞役、符の計算、和了役の判定、牌山と河の実装といった対局の土台を組み立てます。南一局「麻雀 AI のプログラム」でプログラム構造とリーチの AI を扱ったあと、南二局「オリと鳴き」、南三局「手作り」、南四局「押し引き」と、戦術ごとの AI が章題に並びます。紹介文の言い方では、まず計算とゲーム進行を実装し、その後にリーチの AI から始めてベタオリや鳴きなどの戦術を足しながら AI を強くしていく流れです。

機械学習を使わない麻雀 AI、戦術をコードで書く意味

麻雀は、相手の手牌も牌山の並びも見えないまま判断を重ねる不完全情報ゲームで、4 人の思惑と牌の巡りの偶然が結果に大きく混ざります。こうした対象には、大量の対局記録から打ち方を学ばせる 機械学習 の方法がよく知られていますが、学習したモデルがなぜその牌を切ったのかを人が読み取るのは簡単ではありません。版元の紹介文によれば、電脳麻将の AI は機械学習を採用しておらず、打牌選択、鳴き、押し引きの基準をプログラムで具体的に指定しており、「人間の考える戦術をシミュレートする装置」といえるものです。判断の根拠が条件として書かれているので、ある定石を足したときに勝ち負けがどう変わるかを、それ以前の AI との対戦で比べられます。その土台になるのが、聴牌まであと何枚の入れ替えが要るかを表すシャンテン数の計算と、役と符から点数を求める和了点の計算で、どちらも組み合わせの数が多く、効率よく正しく数えるための工夫が要る処理です。

電脳麻将のコードを手元で動かすための前提

電脳麻将の基本ライブラリ majiang-core は、GitHub で MIT ライセンスのもと公開されている JavaScript のパッケージで、手牌の操作、シャンテン数と和了点の計算、局の進行、思考ルーチンの雛形を含む基本クラス群を提供すると説明されています。版元の紹介文にあるとおり、電脳麻将は オープンソースのソフトウェア なので、本書を参考に自分の戦術を実装した AI を作って差し替え、AI どうしを対戦させることができます。ただし、本書が 2022 年 12 月の刊行時にどの版のコードを前提にしているかは版元の資料に書かれていないため、手元のコードと本の記述に違いがあればリポジトリの履歴で確かめる手間を見込んでおくのが安全です。章題に役や符の語が並ぶとおり、麻雀のルールと点数計算の用語を知っていることが前提になります。刊行時の著者紹介によれば、著者は IT 企業に勤めるかたわら趣味でプログラム開発を続け、2015 年から電脳麻将の開発を始めました。

麻雀の戦術を検証したいプログラマーに向く理由

合うのは、ベタオリや押し引きのような麻雀のセオリーを、感覚ではなく対戦の結果で確かめたい人や、自分の考えた戦術を AI に組み込んで動かしてみたい人です。完成した麻雀アプリのコードが土台にあるので、点数計算やゲーム進行を一から作らずに、AI の判断の部分に集中できます。反対に、深層学習や強化学習で麻雀 AI を育てる方法を学びたい人には、本書の方針が目的と合いません。麻雀のルールに不慣れな人も、章題の用語から先に覚える必要があります。ルールを知っていて、コードを読みながら戦術の良し悪しを自分の手で比べたい人にとって、開発者本人がソースコードに沿って解説する本書は、そのまま手を動かす題材として使える一冊です。

言及した記事 (3 件)

この本に興味がある方におすすめ

関連する本

関連記事

関連用語

共有: