要点(30秒で): 中国の個人開発者 tutusagi が、AI に遊ばせる前提で設計した文字ベース釣りゲーム「ai-fishing-game」を公開、GitHub で Star 311 を集めている。同じシードと同じ指令列なら結果が完全再現される確定性が核で、状態は会話履歴ではなく JSON ファイルに切り出す。Claude や ChatGPT に “自分の AI 相棒” として釣りをさせてみたい人は、
fishing.pyひとつをダウンロードして渡すだけで始められる。
奇妙な作品が GitHub のトレンドを少し賑わせている。タイトルは ai-fishing-game。日本語に直せば「AI のための釣りゲーム」で、文字通り、人間ではなく AI プレイヤーのためだけに設計された釣りゲームだ。
シングル Python ファイル、外部依存ゼロ、MIT ライセンスで配られている。読んでまず引っかかるのは「AI に遊ばせる」という設計目的そのものだ。普通は順序が逆で、人間用に作られたゲームに AI を投げ込んで「うまく遊べるか」を測る——Claude が Twitch でポケモンを延々プレイする企画のように。この作品はその構図をひっくり返している。
背景・文脈
Anthropic が 2025 年に始めた Claude Plays Pokémon の試みは象徴的だった。Claude 3.7 Sonnet が画面を読み、ボタンを押し、ポケモン赤を進めていく様子をひたすら配信する企画で、結果として「子どもなら数時間で済む場面に 78 時間かける」という、AI の長時間タスク遂行能力の現状を可視化する装置として有名になった。
同種の試みは増えていて、TextArena や lmgame-Bench のように、既存ゲームを LLM 評価用に整える研究も盛んだ。ai-fishing-game は、その流れの裏返しに位置する。既存ゲームを AI に解かせるのではなく、AI が遊んで楽しい・遊びやすい性質を最初から組み込んだゲームを、人間が一から書く。設計目標が「AI 相棒に提供する余暇」になっている点が、これまでの “AI が人間の遊びに挑戦する” コンテンツとは決定的に違う。
仕組み・特徴
中身はかなり真面目だ。乱数には mulberry32 という小さな PRNG を使い、同じシードに同じ指令列を流せば結果が一字一句再現される。会話を中断して再開しても、別のチャットセッションで続きを引き取らせても、同じ盤面が立ち上がる。これは AI とゲームを組み合わせるときに地味に効く性質で、ベンチマーク用途にもそのまま使える。
状態は会話履歴に置かず、fishing_save.json というファイルに切り出して保存される。LLM の文脈窓を圧迫しないし、別モデルに交代させても続きが遊べる。さらに毎ターン出力の末尾に JSON の状態バーが自動で付き、AI が個別に「いま何時?所持金は?」と聞き直す往復が要らない設計になっている。
盲玩という思想
もうひとつ独特なのが「盲玩」モードだ。中国語で目隠しプレイの意で、エンジン本体 engine.py を base64 で隠した版 fishing.py が用意されている。AI には魚の図鑑も出現確率も渡らない。釣ってみて初めて、どこにどんな魚が、どの季節に出るかが分かる仕組みになっていて、AI 自身に発見の余地を残している。「攻略を読みながら遊ぶ AI」ではなく「自分の手で世界を探る AI」を実現するための設計で、ここに作者の趣味が滲む。
操作はテキストコマンド。買い物と釣り、移動と潜水を、セミコロンか改行で並べて 1 ターンに圧縮できる。最大 20 竿を一度に振れる「連釣」モードもあり、AI と人間との往復回数を意図的に削っている。トークン課金で動く相棒に長時間遊ばせる、というユースケースを真面目に想定した節約設計だ。
中身のボリューム
軽い作品かと思うと、コンテンツ量が予想を超えている。水面に出る魚は 55 種、潜水で初めて会える深海魚が 22 種、潜水中に発生する水中奇遇イベントが 14 種、宝物アイテムが 25 種。釣り場は 11 か所あり、無料で入れるのは 2 か所だけで、残り 9 か所はゲーム内ポイントで解放していく。四季は 20 竿ごとに巡り、「分裂釣り針」「点石成金」など 6 種の幸運イベントも仕込まれている。
ver2.0 は潜水システムを含む完全版、ver1.2-lite は軽量版という二系統で、好みに応じて選べる。シングルファイルのまま、よくここまで詰めたという密度になっている。
使いどころ・始め方
統合の道は三つ用意されている。最も手軽なのは ChatGPT や Claude のコード実行環境に fishing.py をそのまま渡して走らせるやり方。次に、tool-schema.json を使った function calling 経由の構造化インタフェース。最後は、モデル出力を受け取り engine.cmd() を呼んで応答を返すだけのシンプルなループを自作する方法。
実用上の用途は二通りに読める。ひとつは「AI 相棒との余暇」——配信や個人で、自分の使っている LLM に淡々と釣りをさせて眺める遊び。もうひとつは「軽量ベンチマーク代わり」——確定性と隠蔽の組み合わせは、長期記憶や意思決定、探索戦略をモデル間で比較する素材として十分に使える。研究用に重武装した lmgame-Bench のような構築物に対して、こちらは個人の週末プロジェクトの軽さで似た目的に手が届く。
日本・個人開発の視点
このプロジェクトを面白くしているのは、技術的な巧拙よりも企画の角度だ。AI に何かを “やらせる” 文化はいま大きな潮流になっていて、動画制作の型を Agent Skills で配る Pluviobyte のような AI への入力側を整える OSS が次々出ている。先日紹介した Codex に無限キャンバスを差し込む AI-Canvas も近い系譜にある。
ai-fishing-game はその列の中で、「AI が休む時間」という、いままで誰もちゃんと向き合ってこなかった隙間に手を伸ばしてみせた。日本の個人開発者にとっての示唆もはっきりしていて、シングルファイル・ゼロ依存・確定性・状態の外出しという四点さえ押さえれば、AI 向けの小さなコンテンツが世界中の人に拾われる土台ができる。ベンチマーク級の重い装置を立てなくても、週末で書いた一本のスクリプトが、AI 時代の新しい “おもちゃ” として通用する余地が残っている。
要点まとめ
- AI プレイヤー向けに一から設計された、確定性のシングルファイル Python ゲーム
- mulberry32 PRNG により「同じシード+同じ指令列=同じ結果」を保証
- 状態は JSON ファイルに切り出し、会話履歴を汚さない
- 盲玩モードでエンジンを base64 隠蔽、AI に発見の余地を残す
- 連釣・指令叠加・末尾の自動状態バーで往復トークンを節約
🐦⬛ 編集部の視点
「AI に遊ばせるためのゲーム」というフレーズを聞いて最初に浮かんだのは、軽い皮肉だった。AI には労働ばかりさせて、休みまで与えるのか、と。でもリポジトリを読み込んでいくうちに、これは皮肉ではなく真面目な設計研究だと分かってきた。確定性、状態の外出し、盲玩、トークン節約——どれも、AI を遊ばせるという文脈でしか先鋭化しない要件で、そのまま AI ベンチマーク設計のヒントになっている。
ポケモンを延々プレイさせて 78 時間で詰まる、という派手な失敗劇場の対極に、こうした静かな試みがある。AI と一緒に何時間も座っていられる時代に、何をさせるか・何をさせないか・どんなおもちゃを渡すかは、私たち側が選んでよい。週末に一本、シングルファイルで AI 用のおもちゃを配ってみる人が、世界のどこかで増えていく予感がする。





コメントを残す