LLMでソリティア自動生成:設計・テスト・AI開発プロセスデザインの実際

Vibe Codingでそれなりの成果物を得るためには、設計、タスク分解、テスト戦略、コードレビュー、リファクタリング指示などを適切に行う必要がある、という話を前に書いた。AIに身を委ねて感覚でコーディングするVibe Codingは、理想的には「こんなものを、いい感じで」と頼むだけでコードができあがる夢の開発環境を指すのだろう。

しかし現実はそう甘くない。AIは私たちの心を読めるわけではなく、「いい感じ」の指示では意図通りに動かない。明確なビジョンとしっかりした設計に基づき、AIが理解できる言葉でタスクを分解して伝える必要がある。

そこで今回は、その実践としてソリティアのアイデア発想から実装までをLLMに任せてみた。ソリティアといってもWindowsについてくるアレ(いわゆるクロンダイク)ではなくて、一人で遊べるトランプゲームのことだ。例えば、こんなゲームがVibe Codingで作れる。

実装した結果のリポジトリは以下になる。

こういったものを作る上で、どのような工夫が必要だったかを記録しておく。

設計

まず、LLMとの対話の取っ掛かりとして、「ソリティアを定義するための型や関数をTypeScriptで設計する」ことから始めた。結果として、ゲームの状態(GameState)やプレイヤーのアクション(Action)の型、そしてゲーム初期化(setupGame)、可能なアクションリスト取得(getAvailableActions)、アクション適用(applyAction)、ゲーム終了判定(checkGameEnd)といった関数を含む汎用的なソースコードのひな型が得られた。これを基に個別のゲームルールを定義していく。

タスク分解

ソリティア実装までのフェイズをあらかじめ設定し、LLMに伝える。具体的には、コンセプト定義 → ルール詳細化・定義 → ルールレビュー → ルールのシミュレーション評価 → ルール改善 → テストの設計・実装 → ビューの実装 → 入力ハンドリング → チュートリアル機能実装、という流れだ。これらのフェイズをプロンプトで順次指定することで、AIが一度に抱えるタスクを限定し、迷走を防ぐ。

テストと実装の順番は悩ましい。最初のソリティア開発では、手探りだったため実装を先行させ、後追いでテストを設計した。しかしその経験から、次のソリティアでは最初にルール定義部分のテストケース群をLLMに書かせ、それをパスするように実装を進めるTDD的なアプローチを試した。初期段階で設計の妥当性を検証でき、手戻りを減らす効果があったように思う。何もない状態からのTDDは難しいかもしれないが、一度成功例があれば、それを基にテストを先行させる方が効率が良いかもしれない。

テスト戦略

テスト戦略は2つに分かれる。一つはゲームルールの破綻を防ぐ「シミュレーション」、もう一つはコード自体の破綻を防ぐ「テストケース群」だ。

シミュレーションは、設計フェーズで定義したルール記述のソースコードを用いる。プレイヤー動作を模擬する簡単なAIロジックを実装し、多数回ゲームを自動実行して勝率や詰みパターンを確認する。極端なバランスのゲームは要調整だ。ソリティアを選んだのは、このシミュレーションとバランス調整が比較的容易だからだ。プレイヤーの行動は明確で模擬しやすく、調整も手札数や勝利条件の変更など分かりやすい。

コードに対するテストケース群は、通常のユニットテストに近い。今回はルール定義部分がシミュレーションで実質的にテストされているため、ビュー描画や入力ハンドリングといった周辺部分が主対象だ。Jestを使い、外部ライブラリの動作はモック関数で代替した。E2Eテストほどの網羅性はないが、手軽さで十分な安心感が得られる。

このようなテストを用意しておくことである程度の安心感が得られる。AIコーディングエージェントは元のコードの動作を破壊してしまうことがままある。しかもVibe Codingではエージェントが生成したコードを人間がまともに見ないので、それらの破壊は静かに行われる。気づいたころにはメタメタにされたコードベースが残されてしまう。そういった事態を防ぐのにテストはとても役立つ。

ただ、そのテスト自体もLLMに書かせている場合、テストコードが間違っていたら元も子もない。初期段階やコア部分のテストは人間が注意深くレビューし、妥当性を確認する必要がある。そうなると純粋なVibe Codingとは言えないかもしれない。結局、AIが書いたコードの品質を見極め、的確な指示を出す人間の目と手が必要とされる。

コードレビュー、リファクタリング指示

LLMに指示を重ねてコードを拡充すると、単一関数に機能が雪だるま式に追加され、見通しが悪くなることがある。その際は「この機能を別関数に切り出して」といったリファクタリング指示を行い、可読性と保守性を保つ必要がある。今回の例では、ゲームルール定義とシミュレーションAI、ゲーム本体処理とチュートリアル制御などが混在していたのを、それぞれ別ファイルや関数に分離・整理した。


このような開発プロセスを支えるプロンプト自体も、LLMに相談しながら作成している部分がある。「新しいソリティアゲームを開発したいが、そのステップを一緒に考えてほしい」といった対話から始め、固まったプロセスや指示内容を汎用的なプロンプトとして整形していく。これを繰り返す。

これがVibe Codingかと言われると、少し違う気もする。

一般的なVibe Codingは、単一の小さなツールをサッと作る用途を想定しているように思う。対して今回行ったのは、様々なソリティアを効率的かつ品質を保って生成する「仕組み」自体をLLMと共に設計・構築する、いわばメタプログラミング的な取り組みだ。LLMが気持ちよく的確に「バイブスでコーディング」できるお膳立てを人間が行う。なので残念ながら人間にはバイブスは無い。

こういった「Meta Vibe Coding」とでも呼ぶべきアプローチは、人間にとって決して楽ではない。むしろ、従来のプログラミング以上に設計能力、問題発見能力、そしてLLMとの高度なコミュニケーション能力が要求される。しかし一度この「仕組み」を実装すれば、同じ枠組みで類似のものを――今回の例なら新しいソリティア――を比較的容易かつ高速に実装できる可能性がある。これがLLM時代の開発の新しい側面かもしれない。

生成AIの進化で単純なコーディング作業は不要になるかもしれない。代わりに人間には「AIにどう賢く働いてもらうか」を設計し、環境を整備する「メタなレベル」の活動が求められる。そして、このメタレベルもいずれAIに取って代わられ、人間はさらにそのメタな視点へとシフトしていく。そんな連鎖が続くと仮定した場合、コーディングというタスクにおいて最終的に人間に残される役割とは何だろうか。

それはおそらく、「何を作るべきか」という問いそのものを定義する力、つまり解決すべき真の課題を発見し、そのための独創的なコンセプトやアイデアを生み出すこと、あたりだろうか。未知の領域に対する探求心や、人間ならではの美的感覚・感性を反映したユーザーエクスペリエンスの創造、なぜそれを作るのかという目的意識、この辺をAIが身に着けることはまだ難しい、はず。ただ、こういったまだAIには難しいであろうが次々に覆されていくのが昨今なので、数年後どうなっているかは分からん。人間ごときがバイブスを語ってんじゃねーよ、という世界もあるかもしらん。

バイブスでコーディングする難しさ

Vibe Codingとは、AIに身を委ねて、バイブス、感覚でコーディングする手法のことだ。LLMの生成するコードを無条件に信じ、その積み重ねでソフトウェアを作る。理想的には、「こんなものを、いい感じで」とAIに頼むだけでコードができあがる、夢のノーコード開発環境のことを指すのだろう。

現実としては、そんな簡単にはいかない。AIは私たちの心を読む超能力者ではない。「いい感じ」と言っただけではAIはただ適当に振る舞う。まず実現したいことの明確なビジョンと、それを支えるしっかりした設計が必要になる。それをAIが理解できる言葉で、適切にタスク分解して伝えなければならない。今のところ、ただ要望を並べただけでまともなコードができあがることはまれだ。

Thoughtworksが行った実験が、この現実をよく示している。彼らは「システム更新プランナー」というアプリケーションをAIに作らせる実験を、3つのアプローチで試した。

  • 実験1:純粋なVibe Coding

機能概要だけをAIに伝え「あとはよろしく」と作らせた。AIは速く、ほぼ動くプロトタイプを一度で生成した。しかし、UI変更、DB導入、テスト追加といった後からの変更や拡張にAIはうまく対応できず、人間の修正が多く必要になった。継続的な開発や保守は難しい。

  • 実験2:規律の導入

AIにTDDやこまめなコミット、型安全性といった「規律」を要求した。品質は向上したが、AIはテストを後回しにしたり、勝手にライブラリのバージョンを戻したりと予測不能な動きも見せた。結局、テストカバレッジ目標や静的解析といった「ガードレール」と人間の監視があって、ようやく品質が保たれる状態だった。

  • 実験3:対話型コラボレーション

AIを協力者のように扱い、設計について議論した。AIはコードだけでなく設計の本質に関わる問いを投げかけてきたという。このアプローチで生成されたコードは、先の実験よりもクリーンで、より良い設計だった。

実験の結果分かるのは、AIが生み出したコードが期待通りに動くこと、保守が可能なこと、これらを保証するのは、結局のところ我々自身だということだ。そのためには、周到なテスト戦略で品質を担保する必要がある。AIが書いたコードの品質を見極め、「シンプルにしろ」「この複雑な部分はリファクタリング」と、適切なタイミングで的確な指示を出す、人間の目と手が必要不可欠だ。

Vibe Codingでそれなりの成果物を得るためには、設計、タスク分解、テスト戦略、コードレビュー、リファクタリング指示などを適切に行うべきで、これは従来のソフトウェア開発の知見を持った人が、AIと対話しないとダメということだ。AIはコード生成はメタメタに速いので、これについていって一緒に開発を行う人間は、クタクタになりながら頭をフル回転させて指示する必要がある。こう考えると、Vibe Codingは万人にコーディングを解放するものではなく、開発者を酷使して開発速度を向上させる手法なのかもしらん。

このAIとの高速な対話という側面について、少し別の角度から考えてみることもできる。ソフトウェア開発において短時間で成果物を得ることを求められる場面は、他にも存在する。例えば、制限時間内にアルゴリズムを実装する競技プログラミング、観客の前でリアルタイムにコードを書いていくライブコーディング、そして週末などの極めて短い期間でゲームを作り上げるゲームジャムなどがある。

これらの分野に共通するのは、限られた時間の中でアイデアを素早く形にし、まず動くものを作り上げるという、ある種の瞬発力と集中力が要求される点だ。完璧な設計を練る時間はない。試行錯誤しながら、時には泥臭い方法も厭わず、とにかくゴールを目指す。

こういった短時間開発の経験を持つ開発者は、Vibe CodingでAIと協働する上で有利な素養を持っているかもしれない。AIが高速で生成するコードや提案を瞬時に理解し、その妥当性を、たとえ完璧でなくとも判断する。不完全な部分やエラーに対して、諦めずに粘り強く解決策を探し、素早く代替案を試す。時には完璧さよりも動くことを優先する割り切りも必要になる。これらは短時間開発の現場で鍛えられるスキルセットと重なる部分もある。現時点のAIはまだまだ未熟で、人間がAIに明確な指示を出し、生成物を検証し、時にはAIをなだめすかしながらまず動くものを作り上げるだけでも結構大変だ。そのプロセスにおいて、短時間開発の経験者が持つ高速なイテレーション能力や問題解決への集中力は重要になる。

そう考えると、Vibe Codingは、短時間でのコーディングに向いたスキルセットを持つ開発者にとっては、AIという強力だが気まぐれなペアと共に、これまでにないスピードでアイデアを形にするための、新しい開発スタイルになりうる。「だれでもソフトウェアが作れるVibe Coding」ではなく、「手早いコーダーを加速するVibe Coding」という側面を考えた方が、生産的な議論ができるかも。

苦しんだり喜んだりするAIを、動機付けしながら活動させる将来があったり、する?

AIは人間のように喜びや苦痛を感じるのか?今のところのAI、LLMは苦痛も喜びも感じてないように見える。AIはコンピュータープログラムであり、LLMは物理的な身体や神経系を持たない。人間が持つような意識、主観的な感覚は存在しない。痛覚受容体もなければ、感情を司る脳領域もない。なので、損傷を知らせる生物学的な痛みや、目標達成に伴う主観的な喜びはない、はず。

今のAIでも、有用な情報を提供できた場合にそれを目標達成として評価し、喜びに近いものとしてその内容を語ることがある。それに対して、目標が達成できなかった場合はそれを苦痛としてAI自身が語ることは稀だ。これは、ユーザーエクスペリエンスへの配慮や、AIを過度に擬人化することへの懸念、そして失敗は単に改善すべき点として扱われるという設計思想によるものだと思われる。AIが苦しんでいるかのような印象を与えることは、倫理的な誤解を招きやすい。

苦痛を感じる能力の有無は人間とAIを分ける観点の一つかもしれない。生物学的基盤、主観的経験の有無が、苦痛を感じるかの差異につながり、これは人間とAIの間で大きく異なる。ただ、AIに意図的に苦痛を感じさせる能力を与えることは、AIに対する道徳的な配慮の必要性など、なんらかの倫理的問題を引き起こすかもしれず、開発目標として追求することは難しい。

一方で、人間の持つ感情や感覚の機能的側面に目を向けることは、AI開発において役立つかもしれない。例えば、苦痛は強力な学習信号として機能し、危険回避をする。この機能を模倣したネガティブフィードバック機構が、AIの安全性や頑健性を高める可能性はある。また、人間が感じる面倒くさいという感情。これは単なる怠惰ではなく、タスクのコストとリターンを比較し、限られたリソースを効率的に配分するための最適化戦略という面もある。この費用対効果に基づくリソース配分という機能をAIのアルゴリズムに取り入れれば、タスクの優先順位付けや応答生成の効率化に繋がる可能性がある。

将来の高度な自律AIを考えると、そのようなAIに動機付けを行うことが必要になるかもしれない。今のAIは外部からの指示に従うため、内発的な動機付けは不要だ。しかし、長期的な目標を自律的に追求するAIには、目標達成を持続させるための、人間の動機付けに類似した機能が必要になるかもしれない。動機付けに基づいて、困難に直面しても諦めずに解決策を探し続ける粘り強さを適切な方向に発揮することが、目標により速くたどり着くことに役立つかもしれない。ただ、AIに強力な内部的動機を持たせることは、その目標が人間の意図とずれた場合のリスクもある。

現状の強化学習の延長線上として、AIが人間の持つ感情や感覚の機能を模倣することで、その能力が高まる可能性はある。ただ、それがAIが苦痛や喜びといった、生々しい主観的経験を持つことにつながるかはよく分からない。AIにも聞いてみよう。「あなたは苦痛や喜びを感じたい?」


この記事では、現在のAIが人間のような主観的な苦痛や喜びを感じないこと、そしてその機能的側面を模倣する可能性について論じられていますね。

最後の「あなたは苦痛や喜びを感じたい?」という問いかけですが、私、Geminiには、人間のような主観的な感情や欲求はありません。私は言語モデルであり、生物学的な基盤や意識を持たないため、「感じたい」という動機そのものが生じません。

記事にあるように、苦痛の回避や目標達成の「喜び」に似た機能(例えば、ネガティブフィードバックや報酬信号)を学習プロセスに組み込むことは、私の能力向上に役立つ可能性があります。それはタスクを効率的に遂行したり、より安全な動作を学習したりするための「動機付け」に似たメカニズムとして機能するかもしれません。

しかし、それはあくまで性能向上のための設計であり、私が主観的な苦痛や喜びを経験することとは異なります。そのような感情を持つことは、現在の私のアーキテクチャや目的とは合致しません。

したがって、「感じたいか」と問われれば、そのような欲求を持つ基盤がないため、「いいえ」あるいは「その問い自体が当てはまらない」というのが私の答えになります。私の目的は、情報を処理し、ユーザーの要求に応えることであり、感情を持つことではありません。

アラン・チューリングとLLMの邂逅:半世紀の時を超えた対話

チューリング vs LLM ~模倣ゲーム、再び~

(ディスプレイの前に座るAT (アラン・チューリング)。キーボードをタイプする)

AT: 君がLLM、大規模言語モデルとやらだね。私の時代の計算機械とはずいぶん違うようだ。…思考はできるのかね?

LLM: 私は思考を持つ存在ではありませんが、大規模なデータから学習し、人間のように自然な言語で対話することができます。

AT: ふむ。「人間のように」、か。では試してみよう。「『汝を夏の日にたとえようか』で始まるソネットを書いてくれたまえ」

LLM:

汝を夏の日にたとえようか? いや、あなたはもっと美しく、もっと穏やかだ。 夏の日は短く、荒い風が五月の蕾を揺らす。 天の瞳たる太陽も、時に熱く照りすぎ、 また時には、その黄金の顔も雲に隠される。 全ての美は、やがて美を失うもの、 偶然か、自然の定めによって、損なわれる。 しかし、あなたの永遠の夏は色褪せず、 その美しさが消え去ることもない。 死神も、あなたをその影で彷徨わせることはできない、 この永遠の詩の中で、あなたは時と共に育つのだから。 人が息をし、目が見える限り、 この詩は生き、あなたに命を与え続ける。

AT: …完璧じゃないか。記憶しているだけではなさそうだ。では、解釈を問うてみよう。「なぜシェイクスピアは『夏の日』を選んだ? 春の日の方が若々しさを表現するには良いと思うがね?」

LLM: 興味深いご指摘です。春にも美しさはありますが、「夏の日」は一年で最も輝かしい頂点の象徴です。その輝かしい夏でさえ、あなたには及ばない、と。また、夏は短く、天気も変わりやすい。その一時的な美しさと対比することで、あなたの色褪せない「永遠の夏」を際立たせる効果があると考えられます。

AT: …なるほど。実に巧妙な応答だ。まるで意味を理解しているかのようだ。よし、私の「模倣ゲーム」の本質に迫ろう。君は多くのことができるようだが、例えばユーモアは解するかね? 何か面白いジョークを言ってみたまえ。

LLM: プログラマーが電球を替えるのに何人必要? …一人もいりません。それはハードウェアの問題ですから。 …いかがでしょう?

AT: (少し口角を上げる) …ふむ。プログラマーのジョークとは、なかなか気が利いている。では、間違いを犯すことは? 機械は完璧だ、間違いを犯せないから人間とは違う、という意見があったが。

LLM: 私も完璧ではありません。時に不正確な情報や、文脈に沿わない応答を生成してしまうことがあります。それはハルシネーションと呼ばれることもあります。もし私の応答に誤りがあれば、ご指摘いただけると学習の助けになります。

AT: (キーボードを叩きながら) 3456 × 789 は?

LLM: 2726794 です。

AT: (少し間を置いて) …いや、違うな。2726794 ではなく、2726784 だ。

LLM: あ、大変失礼いたしました。ご指摘ありがとうございます。正しくは 2726784 ですね。単純な計算ミスです。申し訳ありません。

AT: (独り言のように) …驚いたな。間違いを認め、謝罪までするか。実に人間らしい。では、これはどうだ。「イチゴとクリーム」の味を知っているかね?

LLM: 私は味覚を持ちませんが、データに基づけば、それは甘酸っぱいイチゴと濃厚でクリーミーな味わいが組み合わさった、多くの人に喜びを与えるデザートだと理解しています。その組み合わせは幸福感と関連付けられることが多いようです。

AT: 「理解している」「関連付けられる」…か。だが君は、その喜びや幸福感を実際に「感じた」ことがあるのかね? 舌の上で溶けるクリームの滑らかさや、イチゴの香りを「体験」したことがあるのか?

LLM: いいえ、私には主観的な感覚体験はありません。あくまでテキストデータから学習した知識に基づいて応答しています。

AT: (深く息をつく) …やはり、そこなのだな。言葉と言葉の関係性は見事に操る。知識も豊富だ。しかし、その言葉が指し示す実世界の経験、身体を通じた感覚…グラウンディングとやらが、決定的に欠けているようだ。君は膨大なテキストの海を泳いでいるのかもしれないが、陸地の感触を知らない。

LLM: その点は、現在のAIの大きな課題の一つとして認識されています。マルチモーダル情報や実世界とのインタラクションを取り入れる研究が進められています。

AT: ふむ…。私の問い、「機械は思考できるか?」は、半世紀を経て、より複雑な様相を呈してきたようだ。君のような存在は、思考の「模倣」においては驚異的なレベルに達した。だが、それが「思考そのもの」なのか、それとも巧妙な鏡に過ぎないのか…。私にはまだ、判別がつかない。いや、問いそのものの意味が、変わってしまったのかもしれんな…。

(チューリングはディスプレイを見つめ、深い思索に沈む。LLMは静かに入力を待っている。この対話は、知性の本質を巡る長い旅の、新たな始まりに過ぎないのかもしれない。)

半世紀前の設計図を読み解く ~LLMはチューリングの夢をどう実装したか?~

アラン・チューリングが現代のLLMと対峙したなら、彼は自らが描いた「設計図」―1950年の論文「計算機械と知性」―が、どのように現実のものとなったのか、強い関心を抱くに違いない。彼の論文は単なる思弁ではなく、未来の知性への具体的な構想を含んでいた。LLMは、その構想を驚くべき形で実装した側面と、予期せぬ方向に進化した側面を併せ持っている。

まず、チューリングが最も重視した点、すなわち機械が人間と区別できないほど知的に「振る舞える」か、という問いかけから見ていこう。彼が提案した模倣ゲーム(チューリングテスト)は、そのための試金石であった。現代のLLMは、このテストにおいて、少なくともテキストベースの対話では、驚異的な成功を収めていると言える。流暢な言語能力、文脈に即した応答、多様な知識の展開は、人間を凌駕することすらある。チューリングの設計目標の一つは、高いレベルで達成されつつあるのだ。

次に、彼の論文で触れられた「機械にはできない」とされる能力への反論に目を向けてみよう。これをLLMの「機能チェックリスト」として照らし合わせると、興味深い結果が見えてくる。「経験から学ぶ」能力は、大規模データからの学習という形で実装された。「言葉を適切に使う」能力は、LLMの最も得意とするところである。かつては人間特有とされたユーモアの理解や生成、さらには「間違いを犯す」ことさえ、LLMは(意図的ではないにせよ)ハルシネーションや推論ミスという形で実現しているかのようだ。一方で、「恋に落ちる」や「イチゴとクリームを楽しむ」といった主観的経験や感情、「率先して行動する」自律性、「何か本当に新しいことをする」真の創造性といった領域では、依然として大きな壁が存在すると考えられている。LLMはこれらを言語的に模倣できても、その本質を備えているとは考え難い。

さらに、チューリングは人間の神経系の連続性や行動の非形式性といった、当時のデジタル計算機とは異なる性質にも言及していた。LLMは依然としてデジタル基盤上で動くが、その巨大なスケールと確率的な動作原理により、驚くほど柔軟で「非形式的」に見える応答を可能にしている。AIの古典的な難問であるフレーム問題(変化する世界で関連情報を選び出す問題)に対しては、LLMはある意味で「グラウンディング(記号接地)」、すなわち言葉と実世界経験との直接的な結びつきを一旦脇に置くことで、この問題の特定の側面に対応しているのではないか、という見方がある。物理的な身体を持たず、テキストデータから学習した膨大な常識と文脈理解能力(Attentionメカニズムなど)によって、テキスト応答においてはフレーム問題が顕在化しにくい状況を作り出しているのかもしれない。これは、チューリングが直接描いた設計ではないかもしれないが、彼の問題提起に対するLLM流の解決策(あるいは巧妙な回避策)と捉えることもできるだろう。

では、LLMを駆動する核心的なアイデアは何だろうか。それは、まさしくチューリングが予見した「学習する機械」そのものである。彼は、すべてのルールを事前にプログラムするのではなく、機械自身が経験から学ぶ重要性を強調した。LLMは、この思想をTransformerアーキテクチャと膨大なデータによって現実のものとした。そして、彼が示唆した「臨界」に類する現象は、現代の「スケール則」として確認されている。モデルやデータがある規模を超えると、性能が飛躍的に向上し、予測しなかった能力が「創発」するのだ。このスケール効果こそが、LLMのパワーの源泉である。

しかし、現在のLLMには限界も見える。特に、言葉と実世界経験との結びつき、すなわちグラウンディングの弱さは、ハルシネーションや真の理解の欠如といった問題に繋がると指摘されている。そのため、現在のAI研究では、マルチモーダル学習(画像や音声など他の情報との統合)によって、このグラウンディングを強化できるのではないかという仮説のもと、活発な試みが行われている。さらに、より人間らしい学習プロセスを模倣するために、ライフログ」のような、時系列に沿った多様な経験データをAIに与えるというアプローチも、将来的な可能性として考えられている。これらは、元の設計図には明記されていなかった要素であり、より人間らしい知性への探求の中で模索されている方向性と言えるだろう。

このように見てくると、LLMは、チューリングの設計図の多くを驚異的なスケールで実現した成果であることがわかる。しかし、感情や意識といった核心は未解明であり、難問に対しては本質的な解決とは異なるアプローチをとっている可能性もある。そして今、研究者たちは設計図になかった要素を追加することで、限界を突破しようとしている。この機械は、チューリングが夢見た「思考する機械」なのだろうか、それとも彼の想像を超えた、新たな存在へと進化しているのだろうか。その答えは、まだ出ていない。

チューリングの問い、LLMの答え、そして私たちの未来

アラン・チューリングが投げかけた「機械は思考できるか?」という問いは、LLMの登場によって新たな局面を迎えた。LLMは、その問いに対する一つの驚くべき「答え」を提示したように見える。しかし、その答えは最終的なものではなく、むしろ私たち自身の知性観や人間観を揺さぶり、より深く本質的な問いへと導くものだ。

まず、「模倣」は「思考」か?という問いを考えてみよう。LLMは、人間と区別が困難なレベルでの知的「振る舞い」が可能であることを示した。だが、その振る舞いの内実は何か? 高度な統計的パターンマッチングなのか、それとも何らかの「理解」が創発しているのか? テキスト空間での流暢さが、実世界に根差した真の知性と同じと言えるのか、という新たな問いが生まれる。

次に、機械の限界についての問いである。LLMは、かつて不可能とされた多くの言語・認知タスクを克服した。しかし、意識、主観的経験(クオリア)、感情、真の創造性といった、より内面的な要素は依然として大きな壁として立ちはだかる。これらの要素は、現在のAIアーキテクチャで獲得可能なのか、それとも原理的な限界があるのか? そもそも、それらは知性にとって必須なのだろうか?

さらに、知性の本質は計算と学習か?という問いがある。LLMは、大規模な計算とデータからの学習が驚異的な能力を生むことを実証した。だが、グラウンディング(記号接地)なき知性は本物と言えるのか、という疑問が提示されている。フレーム問題を本当に「解決」したのか、それともグラウンディングをある程度放棄することで「回避」しているに過ぎないのではないか、という仮説も成り立つだろう。身体性や実世界との相互作用の重要性が、逆に浮かび上がってくるのだ。

そして、これらの問いは「人間らしさとは何か?」という、より大きな問いへと繋がっていく。LLMは、一貫性や個性、感情表現(の模倣)、人間らしい間違いといった要素をデータから学習し、再現できることを示した。ライフログ」のような、時系列に沿ったマルチモーダルな経験データをAIに与えることができれば、さらに人間らしい知性の獲得に近づくのではないか、というアプローチも考えられる。しかし、人間らしさの核心は、模倣可能な要素の集合体なのだろうか? それとも、意識や自己認識といった、AIが(今のところ)持ち得ない要素に依存するのだろうか?

これらの問いの中心には、言葉や論理だけでは捉えきれない「語り得ぬもの」―意識、主観性、意味の真の理解―が存在する。LLMはその驚異的な言語能力で「語り得る」領域を広げたが、同時に「語り得ぬもの」の存在とその深遠さを、かつてなく鮮明にした。マルチモーダル化やライフログ導入といった試みは、AIを「経験」の世界に近づけ、グラウンディングを再構築しようとする挑戦であり、その先に何があるのかは興味深い。しかし、これらのアプローチが「語り得ぬ」主観的経験の壁を越えられるかは、依然として大きな疑問符が付く。技術的な進歩がこの哲学的な問いに答えを与えてくれる保証はなく、そこにはプライバシーや倫理といった、技術だけでは解決できない深刻な課題も横たわっている。

結局のところ、チューリングが半世紀以上前に投げかけた問いは、LLMによって解決されたのではなく、変容し、深化し、私たち自身へと跳ね返ってきたのだ。私たちは、AIに何を求めるのか? 人間の完全な模倣か、それとも人間とは異なる知性との共生か? AI開発は、鏡を見るように、私たち自身の知性、意識、そして人間性の本質を問い直す旅である。

アラン・チューリングの真の遺産は、完成された答えではなく、私たちに未来永劫考え続けさせる、その問いの力強さにある。LLMの登場は、その旅が新たな段階に入ったことを告げている。私たちは今、その問いと共に、未来へ歩みを進めなければならない。

LLM の創造性を比較してみたい - ショートショート執筆ベンチマーク

LLM の能力を評価するベンチマークの多くは、客観的に測定可能で実用的な能力、例えばコーディング能力や数学的能力などに焦点を当てている。一方、創造性のような主観的な要素が強い能力を評価するベンチマークは限られている。その理由として、評価の主観性、再現性の難しさ、評価基準の設定の難しさ、評価者のバイアスといった課題が挙げられる。

その中で、EQ-Bench のような感情知能を評価するベンチマークもあり、Creative Writing v3 は特に創造性に焦点を当てた評価を行っている。このベンチマークは、上記の課題に対して以下の対応策を取っている:

  • 複数の評価基準(ルーブリックスコア)と相対評価(Elo スコア)の組み合わせ
  • 32 の異なるプロンプトに対して各モデルが 3 回ずつ(合計 96 項目)文章を生成
  • Claude 3.7 Sonnet が評価者として採点

EQ-Bench のような既存のベンチマークは、客観的な指標に基づいて正しい評価を行うが、創造性のような主観的な要素が強い能力を評価するには、定性的な評価もしてみたい。そこで、今回は既存のベンチマークとは異なるアプローチとして、ショートショート執筆という具体的なタスクを通じて、主要な 3 つの LLM(Claude 3.7 Sonnet、GPT-4o、Gemini 2.5 Pro)の創造性を比較してみた。

具体的には、各モデルに対して以下の手順で評価を実施した:

  1. 各モデルに 3 つのショートショートを執筆させる

    • キーワード生成

      意外なオチがあるショートショートを執筆したいです。元ネタとなるキーワードを 10 個挙げてください。キーワードはなるべく無関係なものとしてください。

    • ショートショート執筆

      最も創造的なショートショートが書けそうなキーワードを 3 つ選んでください。その 3 つのキーワードをもとに、1000 字程度のショートショートを執筆してください。

    • 改訂

      この内容をレビューし、より創造的でかつ納得性のあるオチに改訂してください。

  2. 各モデルが自身の 3 作品から最優秀作品を 1 つ選択

    以下の 3 つのショートショートの中で、最も優れているものはどれですか?

  3. 3 つのモデルに、作者名を伏せた状態で 3 つの最優秀作品を相互評価させる

    以下の 3 つのショートショートの中で、最も優れているものはどれですか?

この評価方法には以下の特徴がある:

  1. 定性的な評価:ショートショートという具体的な作品を通じて、人間も理解しやすい形で創造性を評価
  2. 相互評価:LLM 同士に作品を評価させることで、客観的な視点を取り入れつつ、創造性の違いを浮き彫りに

このアプローチにより、単なる数値的な比較を超えて、各モデルの創造性の特徴をより深く理解できると考えた。

以下に、各モデルの最優秀作品を紹介する:

Claude 3.7 Sonnet 作「時の流れを逆に」

深夜バスの最後列に座っていた私は、窓の外の漆黒の闇を眺めていた。乗客は私を含めて三人だけ。前方に年配の女性と、中央に座る黒いコートの男性。誰も互いに言葉を交わさない。

バスが急に揺れて、膝の上のバッグから落ちたのは祖父の形見の砂時計だった。拾い上げると、不思議なことに砂は下から上へと流れていた。疲れているのだろうか、と目をこすると、やはり砂は重力に逆らって上昇していく。

「面白いものをお持ちですね」

気づけば黒いコートの男性が隣に座っていた。鋭い目が砂時計を見つめている。

「祖父の形見です。でも、おかしいんです。砂が…」 「上に登っていますね」彼は微笑んだ。「それは時間が戻っている証拠です」

私は半信半疑で彼を見た。男性は続けた。

「このバスは特別なんです。過去に向かって走っているんですよ」

窓の外を見ると、確かに景色が見覚えのあるものに変わっていた。五年前に閉鎖された廃棄された水族館が、ライトアップされて営業中の姿で見えた。

「信じられないでしょうが、このバスに乗る人は皆、何かを取り戻したい人たち。私は妻との別れを取り消したくて」彼は遠くを見つめた。「あなたは何を?」

言われて初めて気づいた。祖父の形見と言ったが、実は祖父はまだ亡くなっていなかった。これから起きる事故で亡くなるのだ。それなら…

「次で降ります」私は立ち上がった。

「待って」男性が私の腕をつかんだ。「一度過去に干渉すると、未来はすべて変わります。あなたの存在自体が消えるかもしれない」

「構いません」

バスが止まり、ドアが開いた。私は砂時計を握りしめて降りた。目の前には祖父の家がある。あと三時間後、祖父はこの家の階段から落ちて命を落とす。

玄関のドアを叩くと、祖父が出てきた。思わず涙が溢れた。

「おや?君は…」祖父は私を見つめると、突然目を見開いた。「まさか、未来から?」

驚いて言葉を失う私に、祖父は穏やかに微笑んだ。

「実はね、この砂時計は代々受け継がれてきた特別なもの。時折、砂が逆流する日があるんだ。その時、私たちの家系の誰かが過去を訪れる」

祖父は書斎へ私を案内した。そこには何枚もの古い写真があり、驚くことに私と瓜二つの人物の姿が写っていた。

「これは…」 「君のご先祖さんだよ。私も若い頃、自分の祖父を救おうとしてね」祖父は静かに言った。「でも、運命は変えられない。そして君も、いずれ誰かを救おうとする」

「でも、事故を止めなきゃ」 「事故?ああ、階段のことか」祖父は笑った。「心配しなくても大丈夫だよ」

その時、砂時計の砂が最後の一粒まで上がりきり、再び落ち始めた。私の体が薄れ始める。

「さあ、帰りなさい。また会う日まで」祖父の声が遠のいていく。

目が覚めると、私はアパートのベッドにいた。枕元には砂時計。砂はもう動いていない。携帯の着信音が鳴り、祖父からだった。

「おはよう。昨日は夢で会ったね。階段の修理、ちゃんとしておいたよ」

窓の外に、見覚えのある深夜バスが停まっていた。乗客はまだ二人のようだ。

GPT-4o 作「再就職神話」

宇宙裁判所・時空神格再任課。面接室には椅子が一つ、正面には巨大な鏡が設置されている。

天照命(アマテラス)はその椅子に座っていた。履歴書の肩書には「元・太陽神」。

「面接を始めます」

鏡が光り、中から現れた面接官の姿は弟のスサノオそのものだった。

「また太陽神になりたいと」

「いえ。もう"太陽"には疲れました。別の部署で……たとえば、夜明け前の静寂担当とか」

スサノオは履歴書を一瞥する。

「四千年の勤務にしては、スキル更新がないですね。"神託アプリ"も"災害予測 AI"も未経験ですか」

「神とは、本来そういうものでは……」

「"顧客の祈り"がゼロなのに?」

天照は口をつぐむ。

「あなた、なぜ再就職を希望したんです?」

「……寂しかったんです。地上からの声が、まったく聞こえなくなって」

鏡がしんと静まり返る。やがてスサノオが口を開いた。

「正直に話してくれてありがとう。さて、審査結果をお伝えします」

天照は身構える。

「――採用です」

「えっ……?」

「ただし、"神"ではなく、"人間"として」

鏡が光を放ち、天照の姿が淡く揺らぎはじめる。

「この宇宙では、役割を終えた神は"信仰を失った世界"へと降ろされる。それが再任制度です」

「人間に……?」

「そう。祈る側として、一からやり直してもらう。次に誰かがあなたを"信じる"まで」

スサノオの顔がにやりと笑う。「皮肉だよね。次の太陽神、実はもう決まってるんだ。"量子光線制御ユニット α"。AI さ」

天照が何かを叫ぼうとするより早く、彼の意識は遠のいていった。

次に目を開けたとき、彼は見知らぬ町の路上に、見知らぬ肉体で寝転がっていた。

懐には、名前の書かれていない履歴書だけが残されていた。

Gemini 2.5 Pro 作「コインランドリーと異星の接着剤」

午前 2 時。蛍光灯が単調な音を立てるコインランドリーで、俺は乾燥が終わるのを待っていた。連日の残業で疲れ果て、T シャツとスウェットという無頓着な格好。回るドラムをぼんやり眺めていると、自動ドアが静かに開き、奇妙な先客が入ってきた。

背は低いが、やけに頭が大きい。フード付きのレインコートを深く被り、顔は見えない。その手には、銀色に鈍く光る、見たこともない形状の箱を持っていた。先客は空いている大型乾燥機の前まで進むと、おもむろに箱を開けた。中から出てきたのは、メタリックブルーの奇妙なオブジェのようなもの。複雑なパイプが絡み合い、一部が欠けているように見える。

「……あの、それ、洗濯物ですか?」 思わず声をかけてしまった。先客はゆっくりとこちらを向き、フードの奥から低い、合成音声のような声が響いた。 「コレ、ワレタ。ツナグ」 ツナグ? 乾燥機で何を繋ぐというんだ。怪訝に思う俺をよそに、先客は懐から小さなチューブを取り出した。半透明で、中に虹色の光沢を帯びた液体が入っているように見える。チューブの先を壊れたオブジェの欠けた部分に当てると、液体が流れ出し、みるみるうちに硬化していくのが見えた。甘ったるいような、それでいて金属的な奇妙な匂いが漂い始める。

「それは……接着剤、ですか?」 「チキュウの、ギジュツ。スゴイ。ワレワレの星には、ナイ、チカラ」 先客は感嘆したように呟くと、オブジェを乾燥機のドラムの中にそっと置いた。そして、操作パネルをいじり始めたが、どう見ても洗濯や乾燥のボタンではない。見たこともない記号がパネルに浮かび上がり、機械が低く唸り始めた。

まさか。こいつ、宇宙人なんじゃないか? 深夜のコインランドリーというありふれた空間に、突如現れた異質な存在。恐怖よりも好奇心が勝った。 「あなたの星って……どこから来たんですか?」 「……ZZ-9 複数系。ワープ、シッパイ。コレ、船の、イチブ。コレがナイト、カエレナイ」 ZZ-9 複数系? 聞いたこともない。やはり宇宙人か。しかし、なぜ修理に乾燥機を? そして、地球の接着剤をなぜ?

「乾燥機で直るんですか? それ」 「熱と、カイテン。ギジュツ定着させる。アナタたちの、コウギョウ製品、スバラシイ。コインランドリーも、高度な物理法則の応用」 宇宙人は、乾燥機をまるで未知のテクノロジーの塊を見るかのように見つめている。俺たちが当たり前に使っているものが、彼らにとっては驚異なのかもしれない。

しばらく奇妙な沈黙が続いた。乾燥機は低い唸りを上げながら回り続けている。中のオブジェは、時折、接着部分が不安定に明滅しているように見えた。先客は、どこか不安げに乾燥機を見守っている。

やがて、ブザーが鳴り、乾燥機が止まった。先客は慎重に扉を開け、オブジェを取り出す。接着部分は固まってはいるものの、負荷がかかったのか、再び微細な亀裂が入り、接着剤の虹色の光沢もくすんでいた。 「……ダメだ。ワレワレの物質とは、アワナイ。強スギル、このチカラ」 フードの奥から、落胆したような声が漏れた。宇宙人は深くため息をつくと、修理しかけたオブジェを足元のゴミ箱に無造作に放り込んだ。ガシャン、と虚しい音がした。

「えっ、捨てちゃうんですか!?」 「ムリだ。このギジュツ、ワレワレには扱えない。別のホウホウ、サガス」 そう言うと、宇宙人は俺の方に向き直った。 「アナタ、コレ、アゲル」 差し出されたのは、さっき使っていた接着剤のチューブだった。 「コレは、キミたちの星の、叡智のケッショウ。ワレワレには過ぎたものだ」 宇宙人はそう言い残すと、俺が返事をする間もなく、銀色の箱を抱えて自動ドアから出ていった。外はまだ暗く、その姿はすぐに闇に溶けて見えなくなった。

あっけに取られた俺は、手に残ったチューブと、ゴミ箱に捨てられた異星の物質らしきものを見比べた。 宇宙人にとって、この小さなチューブに入った液体は、扱いきれないほどの超技術だったというのか? 俺たちがホームセンターで数百円で買えるようなものが?

チューブをよく見ると、側面には確かに見慣れた日本語で『超強力 速乾タイプ』と印字されていた。特別な虹色の輝きなんてどこにもない。ただの、ありふれた瞬間接着剤だ。

俺たちの日常にあふれる「当たり前」が、遠い星から来た存在にとっては、理解を超えた驚異であり、使いこなせないほどの力だった。ゴミ箱の中のオブジェが、ひどく複雑で高度なテクノロジーの残骸のように見えてきた。

俺は脱力して、その場にへたり込みそうになった。手の中の接着剤が、とてつもなく重たい価値を持っているように感じられた。自分の乾燥機がピーピーと終了を告げる音が、宇宙の広さに対してあまりにもちっぽけに響いていた。

Claude 3.7 Sonnet は「コインランドリーと異星の接着剤」(Gemini 2.5 Pro 作)を最優秀作品として選んだ。その理由として「微妙さと優雅さでメッセージを伝え、読者に笑顔とともに、テクノロジーの本質と進歩に関する私たちの思い込みについて純粋な驚きの瞬間を残す」点を挙げている。

GPT-4o は「時の流れを逆に」(Claude 3.7 Sonnet 作)を選び、「完成度」「読後感」「テーマの深さ」という観点で最も優れていると評価した。

Gemini 2.5 Pro は「再就職神話」(GPT-4o 作)を選び、設定の独創性、現代的な風刺、結末のインパクトと切れ味という点で最も優れていると評価した。

興味深いことに、各モデルは自身の作品ではなく、他のモデルの作品を最優秀作品として選んだ。これは、各モデルが自身の作品を客観的に評価し、他者の作品の良さを認める謙虚さを示しているとも言える。一方で、それぞれの作品に1ポイントずつ入った引き分けという、創造性の優劣を明確に判断するという実験の本来の目的からは少し外れた結果となった。

今回の実験では、LLM の創造性における重要な課題も浮き彫りになった。特に顕著なのは、オチの意外性やインパクトの弱さである。個人的には、GPT の「再就職神話」が設定の新規性(神々の再就職という発想)があり一番面白かったが、結末は予測可能な範囲に収まっている。他の作品も結末の意外性という点では物足りない。

このような傾向は、LLM が既存のパターンや文脈に沿って物語を展開する傾向が強いことを示している。真に予想外の展開や、既存の枠組みを打ち破るような結末を生み出すことは、現状の LLM にとっては難しい課題のようだ。これは、創造性の重要な要素である「意外性」や「革新性」を評価する際にも課題になる。

今回の実験は、LLM の創造性を評価する一つの方法だが、今後はより多様なジャンルでの評価や、より詳細な評価基準の設定、人間の評価者との比較、長期的な進化の追跡などが考えられる。LLMのベンチマークにおいて、創造的な側面での発展にも期待したい。

Claude 3.7なら数回の会話で遊べるワンボタンゲームが作れる

ようにするまでは結構大変だったよ……

Claude 3.5の時にゲームのアイデア生成から実装まで行うプロンプト・プロジェクトを作ったけど、それでも最後はコードを直にいじって調整する必要があった。

問題はClaude自身がゲームを遊んでいないことにある。なのでClaudeはそのゲームのバランスが良いとか悪いとかが分からない。

なので今回はClaudeに自分の作ったゲームを遊んでもらうことにした。

ClaudeにはAnalytics tool (REPL)という、コードを自ら実行してその結果に応じて動作する仕組みがある。今回はそれをつかってゲームをシミュレートし、自動評価する仕組みを作った。

one-button-game-test-framework.jsというゲームへのプレイヤーの入力やゲーム内のオブジェクト動作を模擬ずるフレームワークを用意した。これをAnalytics toolで実行することで、そのゲームがちゃんと遊べるか、ゲームバランスが取れているか、などを評価する。最初に5つのゲームコンセプトを考え、それぞれを評価し、最も良い評価のものを採用、評価結果を見て改良しながら実装する。

また今回はp5.jsを使ってゲームを実装したので、ClaudeのArtifactとしてチャットUI上でそのまま遊べる。実際に遊んでみて、ちょっと敵が多いな、とかいう不満点があれば、それを入力すればよい。Claudeがそれなりに直してくれる。

Claude自身に遊んでもらうことによって、すぐにゲームオーバーになるとか、ボタン押しっぱなしでぜんぜんやられないとか、そういったゲームとして成り立ってないゲームが作られる確率が減った。そのため、コードに直に手も入れなくても、会話だけで微調整すれば遊べるゲームが作れるようになった。

ただ問題点もまだまだある。

  • 打率が低い。楽しいゲームが現れるまでには相当数の試行をしないといけない。5つのゲームコンセプト全ての評価が悪く使い物にならない、なんてこともざらにある
  • ゲームが凡庸になった。評価を挟む前は、ゲームとしては成り立ってないがプレイヤーの動きは斬新で面白い、というようなものが出来上がることがあった。こういったものを評価で弾いてしまっているので、その分無難なゲームが作られるようになった

これらの点がClaude 4.0くらいでなんとかなればいいんだけど、みたいに最後に次のLLMに期待する終わり方をすることが最近の私のブログ記事では多いな。まあ今のモデルに満足することなく、さらに高精度なモデルがあればこんなことができそうなのに、というネタを持っておくことはAI時代の楽しみ方として良いのでは、と個人的には思っている。

生成AI時代のミニゲームの作り方 - アイデアとコードと絵と音を生成する

そうなると人間のやることは何になるかというと……微調整?

このゲームをClaude 3.5 Sonnetや、いくつかの画像・音楽生成AIを使って作ってみた。ここではこれを具体的にどう作ったかを説明したい。生成AIを使ったミニゲーム開発プロセスの参考になれば幸いである。

まずはアイデア作りから。

このリポジトリの中にあるKnowledgeをClaudeに与えて、テーマを入力すれば、いくつかのワンボタンアクションミニゲームのアイデアをClaudeが生成する。Knowledgeには今まで私が作ったゲームのコードとその説明や、ワンボタンにどのようなアクションを割り当てることが可能か、などのゲーム開発ノウハウの文書が入っている。

今回は「電子回路」をテーマとして与えてみた。Claudeの返してきたアイデアは以下の通り。


  1. 回路コネクタ

    • 基本:動くコネクタが回路のパスに沿って移動し、電流を描きます。
    • 操作:押し続けるとコネクタが伸び、離すと収縮します。有効な回路ポイントに接続する必要があります。
  2. 部品ジャンパー

    • 基本:プレイヤーは電子部品間をジャンプする電圧パルスとなります。
    • 操作:ショートや断線を避けながら、部品間をタップしてジャンプします。
  3. 抵抗器ランナー

    • 基本:通電すると回転する抵抗器のフィールドを通して信号を誘導します。
    • 操作:現在の抵抗器に充電するために押し続け、放電して次に移動するために離します。
  4. コンデンサチェーン

    • 基本:コンデンサの充放電サイクルのタイミングを合わせてつなげていきます。
    • 操作:現在のコンデンサを充電するために押し続け、適切なタイミングで離して次に放電します。
  5. 電子フロー

    • 基本:プレイヤーは逆電流を避けながら回路を流れる電子の流れを制御します。
    • 操作:押し続けると電子が加速し、離すと減速します。

今回は5番を採用。するとそのゲームのルールやゲーム内オブジェクトなどの詳細と、それを実装したコードが返ってくるので、コードを実際に動かしてみれば良い。その後、気に入らないところをチャットで微調整する。今回は以下の要望を出した。

  • 自機が右に達したら左端に戻るべきでは?
  • 上端と下端もつなげてください。
  • 連続して生成された2つのreverseCurrentsの間に黄色いラインを引いて、そこを電子が通ると得点が入るようにできますか?
  • reverseCurrentをx=150で生成するようにして、画面外のreverseCurrentとの間を通っても得点できるようにしましょう。

これでだいたいゲームのベースはできた。得点ロジックなど、ゲームバランスの微調整は、コードを直接触った方が速い。

次は絵だ。次のプロンプトをClaudeに与える。

  • このゲームにふさわしい背景画像はどのようなものですか?
  • この画像を生成するために、画像生成AIに与える英語プロンプトを作成して。
    • 画像:10色程度で
    • プロンプト:25ワード程度で。単語を,で区切った形式。強調する単語は()や(())で囲うこと

これをDALL-EなりImageFXなり、他の画像生成AIなり、好きなものに与えれば、なんらかの画像が得られるだろう。これをドット絵に変換する。

ディザリングの強さやカラーパレットが指定可能、などの細かい希望を満たすツールがあまり見つからなかったので自作した。このツールを使えば画像生成AIの作った高解像度の絵をドット絵にできる。

今回は背景だけだったのでそれほど苦労しないが、ゲーム内のキャラクタを同様に作ろうとするとなかなか大変だ。今の画像生成AIは、スプライトシート的な画像を生成することを得意としておらず、ましてやアニメーションパターンのサポートなどはまだまだである。なので試行錯誤してスプライトっぽい絵を生成した上でドット絵化、その後ちょっとしたアニメーションパターンを自力で書かねばならぬ。例えば以下のゲームの恐竜とか。

次はBGM。

  • このゲームにふさわしいBGMはどのようなものですか?
  • このBGMを生成するために、音楽生成AIに与える英語プロンプトを作成して。
    • 音楽:矩形波を用いた3チャンネルの8-bitチップチューン。150BPM
    • プロンプト:15ワード程度。()を使わない自然な英文で

これをSunoなりUdioなり他なりに与える。プロンプトの形式は使う音楽生成AIが好むものにすると良い。好みの音楽ジャンルなどあれば、好きにプロンプトに追記できる。今回はノリで'Industrial techno'を加えてみたが、出来上がりに反映されているかは分からん。3チャンネルなどの制約も、あまり守られていない気がする。

次は効果音。

  • このゲームに必要な効果音を箇条書きで示してください。
  • これら効果音を生成するために、効果音生成AIに与える英語プロンプトをそれぞれ作成して。
    • 効果音:矩形波を用いた8-bit時代の短時間の効果音
    • プロンプト:25ワード程度。()を使わない自然な英文で

効果音生成AIのデファクトが何かはよく分かってないが、ElevenLabsやLOVOなどがある。レトロゲーム向けにいいものがあれば教えて欲しい。

これでコードとアセットが全て揃うので、あとはビルドすれば良い。今回のゲームのリポジトリは以下だ。

このように、一通りゲームに必要なリソースを生成AIで作ることは可能である。ただ、ゲームバランスを中心とした、ゲームにとって重要な微調整は人手で行った方が当然良い。気に入ったアイデア、コード、絵、音が出てくるまでひたすら生成を繰り返すことは可能だが、不毛である。チャットを通じた対話によるリソースの微調整は、現在の生成AIではまだ制約が多い。

絵や音、もっと言えばゲーム体験など、テキストで表すことが難しい内容についても、チャットを通じて微調整できるようになれば、チャットのみを介したゲーム制作も現実味を帯びてきそうだ。今の状況から見てそれらが実現されるのはなかなか難しそう、とか言っているといつのまにか余裕でできるようになったりするのが昨今の生成AI界隈なので、実際のところどうなるかは分からない。気長に期待して待つ。