パズル問題自動生成時代 -- 概論
自動生成エンジン とは
パズルのソフトは、以下のように幾つかのタイプがある。
- プレイヤー:遊ぶためだけのエンドユーザ向けソフト
遊ぶのに便利な様々な機能がついている。 - ソルバー:問題を解くソフト。
難易度評価などを行なう場合もある。 - エディタ:問題を手作りするため、パズルに特化したエディタ。
様々な支援機能がついている場合がある。 - ジェネレータ:問題を自動的に生成する。
様々な条件をつけて問題を作ることができる。
「自動生成エンジン」とは、 ユーザインターフェイスなど問題を自動生成する機能以外を全部 取り除いた「ジェネレータ」のことを指す。
パズルは、今まではパズル作家という非常にパズルに長けた専門家が、 問題を手作りしていた。一部自動生成しているものもあるが、 その品質は手作りに遠く及ばなかった。
手作りでは、大量に作ったり、希望するものを自在に作ることは 非常に困難であり、コストも非常にかさむ。何とか高品質の問題を 自動生成できないか、それも高速にできないかというのは長年の夢であった。
最近の世界的パズルブームもあり、人工知能関係者を含め、 非常に多くの人々が、夢の「パズル問題自動生成システム」を 何とか作れないかと日々研究開発を行なっている。
「自動生成エンジン」は、パズルに関するプログラムの中で もっとも中枢的な部分であり、ここが、高速で、高品質の問題を作れ、 非常に小さなプログラムであれば、このエンジンは、 パソコンはもちろん、ゲームマシンや携帯、PDAなど 何にでも載せることが可能になる。
「自動生成エンジン」が非常に汎用的であれば、 複数のパズルへの対応も可能になる。 そこまでいけば、本当に「夢の自動生成エンジン」だ。
エンジンに手足を付けよう
「自動生成エンジン」は、自動車のエンジンというか、 小型のモーターみたいなもの、パズルにとっては問題を 無限に供給してくれる動力源である。
しかし、これだけでは遊ぶことはできない。 「自動生成エンジン」を、パソコン、ゲームマシン、携帯、などに 登載し、様々な遊び方、場合によってはボケ防止などの道具に 仕立てる必要がある。
エンジンを作るのと、このエンジンを載せる車体を作るのでは 必要とする技術、能力がはなはだ異なる。 パズルの自動生成エンジンを作るには、パズルとアルゴリズム に関して極めて高度な能力を要求される。 一方、車体を作る方は、面白くする方法を熟知していなければならない。
実際、この両方に秀でた人を見たことがない。 とくに、「自動生成エンジン」はアルゴリズムとパズルの両方に 秀でていることが必須であり、極めてわずかの人しかできない。
それに比べれば、周辺を調えて、「自動生成エンジン」を利用する部分 を作ることは、一般のゲーム、アプリケーション開発に近いことであり、 適性者の数は随分増える。
「自動生成エンジン」開発者は、思いっきりエンジン開発に注力し、 それを多くの人々、企業が利用して、様々なビジネス等をしていくのが 非常に合理的だろう。
「自動生成エンジン」自体は、人間の脳に相当し、手足、体がついていない。 このエンジンに、手足をつけ、顔をつけ、楽しく遊べるようにすることは、 ゲーム会社がもっとも得意とするところである。
手足の付け方は、様々な人が試みる方が、利用に広がりが出る。 思いもかけない機器に載ったり、思いもかけない場所で利用されたり して欲しいものだ。 ゲーム、暇つぶし以外に、惚け防止、教育、適性検査などは当然あるが、 その他にもきっと色々な利用があると思う。
自動生成エンジンの意味
「自動生成エンジン」が提供されたときの意味について考えてみよう。 それには、商業的な意味と、学術的な意味がある。 ここでは、「自動生成エンジン」がソースで提供された場合について考えよう。
1.商業的意味
パズルビジネスが次第に盛んになっているが、 そこに良質の「自動生成エンジン」が提供されることは、 ゲーム業界においては、非常に意味がある。
まず、作家を越える問題が作れる「自動生成エンジン」が安価に入手できれば、 ユーザを充分満足させるだけの問題を提供できるようになる。
また、「パズルを作る」というとても一般の人には不可能と思われていたこと を体験し、さらに問題を作る楽しみを与えることができるようになる。
ソースプログラムの提供は、様々なマシンに組み込むには必須である。 短ければ、移植作業が非常に楽になる。
懸念事項としては、「自動生成エンジン」を利用して問題を作りながら、 手作りとして問題を提供するパズル作家が現われないかということだが、 これはパズル作家の良識に期待しよう。
2.学術的意味
パズルは、コンピュータ科学の常に中心的話題であるアルゴリズムに 深く関係する。とくに、「自動生成エンジン」はアルゴリズムそのものである。
どうすれば解決するか分からない難しい問題を、 何とかコンピュータを利用して、たとえ最適解ではないにしろ、 適切解のレベルで解いてしまいたい場面は、 ビジネス、社会、理工学の場面でしばしば遭遇する。
とくにここで紹介しているパズルも、同様の性質を持っており、 これらのパズルに対する自動生成の手法を研究することは、 そのまま上記のような様々な問題解決の糸口になる可能性は極めて高い。
そういう直接的なことを期待しなくても、 パズルのプログラム、それも自動生成という高度なプログラムを ソースレベルで理解するということは、 アルゴリズムの腕前を上昇させることになり、 プログラムの開発基礎力が付くことは間違いない。
それ以外にも、「自動生成エンジン」自体は、 人工知能の実現の1つであり、多くの研究者を引きつける。