資料のダウンロードを開始しました

次は、あなたの仕事の資料づくりへ。Roneo AIでは、Claudeで使える図解の見本と制作指示を紹介しています。

Roneo AIを見る

見本・料金は登録前に確認できます。

本文へ移動
Claude WorksRoneo AI
海外事例海外事例初級約12分2026/9/4

1993年のゲームをAIが移植、34,000行が一晩で動いた

1993年にイラクでAmiga 500向けに作られたゲームを、作者がClaude Codeに移植させた記録。2010年製のC++約34,000行は一晩でGodot 4へ、1993年の68000アセンブリ72,758行も再構築できた。一方で「手触り」の調整には約3日かかり、しかも一部の判断は間違っていて数週間気づかなかった。AIに任せられる範囲と、人間が残すべき確認作業の境界がわかる事例です。

1993年のゲームをAIが移植、34,000行が一晩で動いた
この記事のポイント
  • 空プロジェクトから操作可能キャラまで21分、34,000行の移植は一晩で完了
  • 1年前は複数ラウンドとヒントが必要だった解析が、今回はヒントなしで1回で解けた
  • AIにターミナルを渡し、アセンブラ実行・ビルド・起動・出力確認まで任せた
  • 動くまでは一晩、気持ちよく遊べるまでは約3日。手触りの調整は別物
  • 作者いわく「一部は間違っていて、数週間気づかなかった」という正直な記録

1993年、イラクのバグダッド。20代の工学部生が、テレビにつないだ小さなパソコンでゲームを作りました。名前は「Babylonian Twins」。使った機械はAmiga 500。メモリは512KB、ハードディスクなし。中身は、機械にいちばん近い言葉(68000アセンブリ=かんたんに言うと、部品に一つずつ命令を出す書き方)で書かれた72,758行でした。

それから33年。作者のRabah Shihabさんは、そのゲームを今の環境へ作り直しました。ただし、古いコードを読んで移し替えたのは本人ではありません。AIです。7月の連休、夜22時23分から翌朝2時15分までの記録が、そのままブログに残っています。

この記事では「AIがどこまでやれたのか」と同じくらい、「どこで失敗したのか」を見ます。そのうえで、あなたの仕事に持ち帰れる形にします。

※2026年9月時点の情報です。内容は作者本人のブログ(2026年9月1日公開)の記述に基づきます。

33年前のゲームが、なぜ「AIの実力テスト」になったのか

まず、この話に出てくるコードは3種類あります。ここが分かると全部スッキリします。

  • 1993年のオリジナル:68000アセンブリで72,758行
  • 2010年のiPhone版:チームが自作したエンジンでC++約34,000行
  • 2026年の新しい版:Godot 4(=かんたんに言うと、無料で使えるゲーム制作ソフト)で作り直したもの

作者はこの移植を、わざと3段階に分けました。しかも「前の段階が成功したら次に進む」という条件付きです。

第1段階は「安全な依頼」。自分が2010年に書いたC++約34,000行を、Godot 4へ移すこと。これは腕試しの基準線です。

第2段階は「無茶な依頼」。1993年の68000アセンブリ72,758行を、Godot上でゼロから組み直すこと。しかも当時と同じ速さ(1秒に50回更新)で動かすこと。作者いわく、このコードには説明書きがほとんどありません。C++版とも共通点がありません。

第3段階は「欲張りな依頼」。第2段階を第1段階の中に入れ込むこと。つまり、今のゲームを買うと1993年版もおまけで起動できる、という形です。

作者によれば、3つとも成功しました。

図: 3種類のコードと3段階の移植
1993年 68000アセンブリ 72,758行2010年 自作エンジン C++ 約34,000行2026年 Godot 4 版(両方を内包)

なぜこれが「AIの実力テスト」なのか。作者の狙いがはっきりしています。Amigaのアセンブリは、AIが学んだ資料の中にほとんど無いはずだ、と踏んだのです。

たとえるなら、参考書に載っていない問題を出すようなものです。暗記で答えられるなら見抜けない。でも「その場で考える力」なら、ここでこそ差が出る。作者はそう考えて、同じ素材をもう一度AIに渡しました。

一晩で34,000行が動いた。タイムスタンプが生々しい

第1段階は水曜の夜に始まりました。作者がブログに載せた記録は、手を加えていない生の時刻です。

時刻 起きたこと
22:23 Godot 4のプロジェクトの土台、素材の同期、レベルの読み込み経路ができる
22:44 双子キャラが2人とも動く。当たり判定、物理、カメラ、切り替えまで
23:19 38種類ある登場物すべてを移植
00:35 メニュー、マップ、ストーリー、セーブなど画面の流れが全部つながる
02:15 macOS、iOS、Android向けに書き出し

空っぽのプロジェクトから、キャラが操作できるまで21分。ここに移された行は、すべて作者が2010年に何か月もかけて書いた行です。

作者は「混乱したまま寝た」と書いています。正直な感想だと思います。

ただし、ここで終わりではありません。「手触りが正しいか」を合わせるのに、そのあと約3日かかっています。ジャンプの弧の描き方、トランポリンのタイミング、ボタン連打が報われる当たり判定。7月2日・3日・4日に、まとめて直していきました。

ここが大事なところです。動くまでは一晩。気持ちよく遊べるまでは3日。 この差は、AIに仕事を任せるとき必ず出ます。

図: 移植が進んだ順番
土台を作る(22:23)→キャラが動く(22:44)→全38種の登場物(23:19)→画面の流れが完成(00:35)→3機種へ書き出し(02:15)→手触りの調整に約3日

去年は解けなかった問題が、今年はヒントなしで解けた

作者は、この挑戦を1年ほど前にも試しています。同じAmigaの素材を、当時の古い世代のモデルに渡しました。

お願いしたのは「バイナリのレベルマップを読み解いて」ということ。バイナリ=かんたんに言うと、人間が読めない数字の羅列です。ステージの地形が、どんなルールでその数字に詰め込まれているか。それを当てさせたわけです。

そのときは、最終的には解けました。ただし何回もやり取りが必要でした。作者からのヒントもたくさん要りました。

そして今回、Claude Fable 5に同じファイルを渡しました。結果は、作者のヒントなしで、1回のパスで解けた。1年前に何ラウンドも要した形式が、一発で出てきたのです。

図: 同じ課題、1年前と今回
❌ 約1年前(旧世代モデル)
  • レベル形式の解読に複数ラウンド
  • 作者からのヒントが多数必要
  • 最終的には到達したが遠回り
✅ 今回(Claude Fable 5)
  • ヒントなし
  • 1回のパスで解読
  • そのまま移植作業へ直行

同じ素材、同じ質問。違うのはモデルだけ。だからこの比較は分かりやすいのです。

AIに「自分で答え合わせ」をさせた仕組み

ここが、この事例で一番マネできる部分です。

作者はAIをClaude Codeで動かしました。つまり、ターミナル(=文字で命令を打つ画面)とファイルを触れる状態です。AIは、ファイルを書き換え、変換の道具を動かし、ゲームをビルドして起動し、返ってきた文字を読むところまでやりました。

ポイントは「人間が見に行かなくても、AIが結果を確認できる形」を先に作ったことです。

ゲーム側に「機械が読める操作口」を付けた

AIは早い段階で、ゲームに起動オプションを追加しました。人が遊ばなくても、ゲームを検証できるようにするためです。

  • --level=<名前> … 指定したステージを直接読み込む
  • --pose=<指定> … 双子を好きな座標に置く
  • --drive=<指定> … ボタン操作を台本どおり、1コマずつ押す
  • --probe … スイッチ・門・扉・鍵の状態を吐き出す
  • --screenshot=<パス> … 1コマ描いて終了する

これで何が変わるか。「ジャンプの感触は正しい?」という曖昧な問いが、こういう機械が読める1行になります。

drive[btw_jump:2.2] pos=(25.44, 24.04) vel=(0.00, -14.51) ground=false apex_y=22.48

さらに、人に見せる前に必ず走る自動チェックを2つ用意しました。ひとつは全スクリプトがちゃんとコンパイルできるか。もうひとつは全ステージがビルドできて、失敗があれば報告すること。画面を出さずに走らせる(ヘッドレス)ので、速いです。

1993年側はもっと徹底しています。vasm(アセンブリを機械語に変える道具)で組み立て直し、出てきたファイルを当時のファイルと差分比較しました。そのうえでFS-UAE(昔のAmigaをパソコン上で再現する道具)で実際に起動させています。AIが本物の道具を回して、自分の答えを検算したわけです。

中級者向け:ここで踏み抜きやすい落とし穴

ひとつ、地味だけど怖い話があります。

オリジナルは、地面を走るときの摩擦をこう書いていました。

static const float GROUND_DRAG_FACTOR = 0.85f;
this->velocity.x *= GROUND_DRAG_FACTOR; // every tick!

毎コマ、速度に0.85を掛ける。それだけです。

でも、1秒に60回掛けるのと、50回掛けるのとでは、結果がまったく違います。掛け算が積み重なるからです。

だから更新の速さを変えて移植すると、ゲーム中のあらゆる加速の曲がり方が変わります。エラーは1つも出ません。落ちもしません。ただ、永遠に手触りが変です。 しかも差分を眺めても見つかりません。

今回の移植では、新しい版は1秒60回に固定しました。2010年のiOS版が60回だったからです。だから0.85という数字がそのまま使えます。一方、1993年の再現版は50回のまま動かしています。手で調整された数字は、その速さでだけ正解だからです。作者は「自分なら1つに揃えたくなっていた」と書いています。AIは2つの時計を分けて残しました。

同じ理由で、プレイヤーの動きにGodot標準の部品(CharacterBody2Dやmove_and_slide)は使っていません。オリジナルは自前の移動処理を持っています。それを他人の物理エンジンの上に載せ直すと、微妙にズレて、原因追跡が地獄になる。だからプレイヤーはただのNode2Dにして、150行の当たり判定を1行ずつそのまま持ってきました。15年前に感覚で決めた微調整の数字も、未来の自分に向けて書いたコメントも、丸ごとです。

古い数字を「きれいに整える」誘惑に勝つ。移植でいちばん効くのは、この一点です。

自動化しなかった部分に、失敗が残った

ここを飛ばして読むと、この事例は誤解されます。作者は正直に、穴を書いています。

自動化されなかったのは2つ。

1つ目は画像の比較です。新しい移植版には、画面を機械同士で見比べる仕組みがありません。スクリーンショットは撮りましたが、見たのは人間の目です。

2つ目は「手触りが正しいか」の確認です。これを判定する仕組みは、そもそもありませんでした。

そして作者はこう書いています。数週間たってから腰を据えて、自分のゲームに何がされたのかを読み返した。一部は間違っていて、数週間気づかなかった、と。

これはAIの敗北談ではありません。「答え合わせの仕組みを作らなかった場所に、間違いが溜まる」という話です。逆に言えば、vasmで組み直して差分を取った1993年側は、機械が検算できたので早く確定しました。

なお、この移植は個人の趣味では終わっていません。1993年当時のディスクはitch.ioで無料公開され、作り直した「Definitive Edition」はiOSとAndroidで配信中、今秋にはSteamにも来ると書かれています。2010年のiPhone版は200万ダウンロードを超えました。

余談ですが、毎回のビルドを一緒に遊んだのは作者の13歳の息子さんだそうです。父が作ったゲームだと知ってはいたけれど、作っている姿は見たことがなかった。テストが親子の時間になった、と書いています。

図: 検算の仕組みが有る場所と無い場所
❌ 仕組みが無かった側
  • 画面の見比べは人間の目だけ
  • 手触りの良し悪しは判定不能
  • 間違いに数週間気づかなかった
✅ 仕組みを作った側
  • vasmで組み直して差分比較
  • FS-UAEで実際に起動
  • 全ステージのビルドを自動チェック

日本の読者は、これをどう真似るか

古いゲームを持っていなくても、この型はそのまま使えます。カギは1つだけ。

AIに仕事を渡す前に、「合ってるかを機械が判定できる入口」を作らせる。

たとえるなら、家庭教師に丸投げする前に、答えのある小テストを用意しておくようなものです。テストが無い科目だけ、後から成績が崩れます。

まずはこれをコピーして使ってください。

📋 コピーして使える:AIに自分で答え合わせをさせる用
これから頼む作業に取りかかる前に、まず「検算のしかた」を設計してください。作業自体はそのあとです。

前提
・作業の内容:〔ここに頼みたいことを書く〕
・正解に近いと言える状態:〔どうなっていれば成功かを書く〕
・今ある材料:〔既存のファイル、データ、画面、旧バージョンなど〕

やってほしいこと
1 この作業のうち、機械が○×を判定できる部分と、人間しか判定できない部分に分けて一覧にしてください。
2 機械が判定できる部分について、コマンド1つで走る確認手段を作ってください。実行して結果の文字が読める形にしてください。
3 旧バージョンや既存データと突き合わせて差分を出せる場合は、その差分の取り方を先に決めてください。
4 人間しか判定できない部分は、私が見るべき箇所を一覧にしてください。あなたは判定しないでください。
5 ここまでの計画を私に見せて、承認をもらってから作業を始めてください。

禁止事項
・確認手段が無いまま「できました」と報告しないこと
・元の値や設定を、きれいに見せるために勝手に整えないこと。変えたい場合は理由を添えて提案だけすること

業種別の穴埋め例を2つ出します。〔 〕を埋めるだけで動きます。

**例1:ECの在庫発注**
・作業の内容:〔過去2年の販売実績から、毎週の発注数を計算する仕組みを作る〕
・正解に近いと言える状態:〔去年の同じ週に当てはめたとき、欠品と過剰在庫が今の運用より減る〕
・今ある材料:〔販売実績CSV、現在の発注ルールの一覧、仕入先ごとの納期表〕

**例2:問い合わせの一次対応**
・作業の内容:〔よくある質問への返信文をAIが下書きする仕組みを作る〕
・正解に近いと言える状態:〔過去の問い合わせ100件に対して、担当者が手直しなしで送れる下書きが出る〕
・今ある材料:〔過去の問い合わせと実際の返信ログ、社内FAQ、送ってはいけない表現の一覧〕

出てきた計画を、5点満点で採点する

AIが出した検算の計画は、次の5項目で見てください。低かったときの打ち手も並べます。

項目 見るところ 低かったときの打ち手
判定の自動度 人が見ないと分からない項目が多すぎないか 「この項目を数字で出す方法を3案ください」と追加で聞く
突き合わせ相手 旧版や実績データと比べる形になっているか 「去年の実績に当てはめて再現できるか試して」と指示する
一発で走るか コマンド1つで確認まで終わるか 「手順をまとめて1つのスクリプトにして」と頼む
変更点の申告 勝手に値を整えていないか 「元の値から変えた箇所を全部一覧にして」と毎回言わせる
人が見る範囲 私が見るべき箇所が絞れているか 「私の確認を10分で終わらせる一覧に削って」と圧縮させる

そして、この事例からもう1つ持ち帰ってください。「手触り」「読みやすさ」「なんとなく変」の判定は、まだ人間の仕事です。 そこだけは、AIに任せた気になってはいけません。作者が数週間気づかなかったのも、まさにそこでした。

まとめ:今日・1週間・1か月でやること

今日(30分) いま抱えている仕事を1つ選び、紙に2列で書き出してください。左に「機械が○×を判定できること」、右に「人間しか判定できないこと」。この線引きだけで、任せ方が変わります。

1週間(1〜2時間×3日) 上のプロンプトを使って、AIに検算の計画を先に作らせてください。作業そのものは、計画を承認してから始めます。5項目の採点表で1回は突き返すこと。最初の計画は、だいたい人任せの項目が多すぎます。

1か月 「1コマンドで走る確認」を、自分の定番業務に1本だけ組み込んでください。全部やろうとすると続きません。1本でいいので、毎回必ず走る状態にする。そこから先、AIの出力を信じられる範囲がじわじわ広がります。

33年前のバグダッドで、512KBのメモリと1冊のハードウェア解説書だけで作られたゲームが、今また動いています。すごいのはAIの速さだけではありません。答え合わせの仕組みを、先に用意した人がいたことです。それは、今日のあなたの仕事でもまったく同じです。

よくある質問

AIは本当に33年前のアセンブリを読めたのですか?

作者によれば、1993年の68000アセンブリ72,758行をGodot上に50Hzで再構築する作業は成功しています。さらにvasmでアセンブルして出力を差分比較し、当時のバイナリを再現できるかまで検証させています。

1年前のモデルとは何が変わったのですか?

作者は約1年前にも同じAmigaの素材を旧世代モデルに渡しています。当時はバイナリのレベルマップ解析に複数ラウンドと作者のヒントが必要でしたが、Claude Fable 5ではヒントなしで1回のパスで解けたと書かれています。

AIに任せて失敗した部分はありますか?

作者は後日読み返して「一部は間違っていて、数週間気づかなかった」と述べています。現行の移植版には画像比較の仕組みがなく、スクリーンショットは人間が目視。ゲームの手触りが正しいかを確認する自動チェックもありませんでした。

自分の仕事に持ち帰れる教訓は何ですか?

ひとつはAIに検証手段を渡すこと。作者はゲーム側に--levelや--driveなどのCLIフラグを足し、機械が読める形で挙動を確認させました。もうひとつは「動く」と「正しい」は別物で、後者の確認は人間側に残るという点です。

出典・参考

Roneo AI

箇条書きの資料を、伝わる図解へ。

提案書・報告書に使える図解とスライド。見本から、つくりたい1枚を見つけましょう。

現場設備・遠隔監視基盤・周辺システムの連携と境界を示すRoneo AIのスライド見本