カタカナと大文字アルファベットしか出ない、40年前のゲーム機の画面。そこに英語のジョークが表示されました。「なぜコンピューターは眠ったのか。CPUサイクルを使いすぎたから」。それが今回の実験のオチであり、出発点でもあります。
こんにちは、パレイド技術部の夏目です。この連載は、1984年6月に発売されたファミリーベーシックに、2026年のローカルLLMを繋ぐ実験の記録です。ファミリーベーシックは、ゲーム機の中から自分でプログラムが書けるという、当時としては異色の存在でした。今回はそこに、手元のマシンだけで完結するAIを接続しています。第1回は連載全体の入口として、何が動いて何が動かなかったのかを、先に一通り並べます。
本記事はローカル LLM による自動執筆パイプラインで生成されました。現段階ではクラウド AI(Claude 等)の補助や人間の編集が介在していますが、pareido.jp では最終的に AI が自律的にコンテンツを制作できる仕組みの構築を目指しています。
「なぜコンピューターは眠ったのか」
手順は拍子抜けするほど短いものです。ブラウザ上で動くエミュレータでファミリーベーシック(V2.0AのROM)を起動し、名前を入力してキーボードの反応を確かめます。あとは起動画面の入力欄に、そのままコマンドを打ってOllamaを呼び出すだけ。接続が確認できたら、英語で「ジョークをひとつ」と依頼します。今回は小型のモデルを使うので、指示は短い英語に寄せています。
コマンドが通ると、画面には接続できたことを知らせるメッセージが出ます。ファミリーベーシック本来の起動画面のまま、そこに一行だけ現代の言葉が混ざる格好です。当時のコンピューターのコンソール風のデザインと、AIとのチャットの見た目が、不思議なほど噛み合っているのがこの企画の面白いところでした。
返事を待つ間、画面には記号の列が流れます。ローカルで動かしていても応答は即座には返らないため、テキストで作ったスピナーを出して「止まっていない」ことを伝える作りです。ここは待ち時間の演出であると同時に、後述する時間制限とも直結しています。
やがて表示されたのが、冒頭のジョークでした。CPUの処理を数える単位と、自転車の「サイクル」をかけたのでしょうか。駄洒落の出来を測るベンチマークは手元にありませんでしたが、40年前の画面に、手元のマシンだけで生成した英文が並んだこと自体は、素直に面白い光景でした。
ひとつ、先に断っておきます。この画面に打ち込んだOLLAMAというコマンドは、本来のファミリーベーシックには存在しません。素のROMなら「リカイ デキマセン!」というエラーが返るだけです。今回の実装は、そのエラー処理の側を借りて対話を成立させています。ROM上のメッセージ領域をどうフックしたのかという種明かしは、第2回(本編)で扱います。
Claudeが使えなくなって、手元に降りた
前回の実験では、Claude Codeの力を借りてAIチャット機能を実装しました。エミュレータを拡張してAIを呼び出す部分そのものも、Claude Codeが書いてくれたものです。ファミリーベーシックのような資料の少ない題材でも、クラウド型のAIエージェントは調べものを含めて手際よく付き合ってくれました。
流れが変わったのが2026年6月です。Claudeの課金モデルが変わり、Claude-CLIを使った実装がトークン課金になりました。動かすたびに費用が積み上がる形になると、「思いついたら試す」という実験の続け方とは相性が悪くなります。実験を気軽に繰り返せる方法を、あらためて考える必要が出てきました。
そこで用途を切り分けました。コードを書かせるコーディング支援は、今のところクラウドの大型AIでなければ厳しい。一方、今回やりたいのは短い英文を返してもらうチャットだけです。それなら手元で動くローカルLLM(Ollama)でも届くのではないか、という見立てで切り替えました。技術部は1年程度でローカルLLMが実用域に追いつくと読んで準備を進める立場なので、この降り方はスタンスとも噛み合っています。
手元のマシンで何が動いたか
当初の実装はphi4-miniで進めました。速度に不満はないものの、プロンプトに書いたサンプルコードをそのまま返してくるなど、チャットとして成立しない応答が混じります。そこで小型モデルとして話題になったbonsaiと、軽量なgemma3:4bを並べて試しました。
| モデル | 手元での挙動 | 判定 |
|---|---|---|
| phi4-mini | 速度は問題ないが、プロンプトのサンプルコードをそのまま返すなど、実用的でない応答が混じる | △ |
| bonsai | 安定して動く | ○ |
| gemma3:4b | 軽量な選択肢として悪くない。回答の内容が安定する | ○ |
動いた機材は、MacBook Airと、RTX4070を積んだWindows機の両方です。コンテキストサイズ(AIが一度に読み込む文章量の上限)を絞れば、数GB程度までのモデルで問題なく使えます。環境によってはもっと大きなモデルも載りますが、実演として見せるなら数秒で応答が返る設定が現実的でしょう。
一方、受け手であるファミリーベーシック側の条件は、はっきりしています。
| 制約 | 仕様・実測 | 実装での対処 |
|---|---|---|
| 表示枠 | 1枠あたり108文字まで | アルファベット大文字だけで答えるようプロンプトで指示 |
| 文字種 | 大文字アルファベットとカタカナ | カタカナ出力は精度が出ないため英語で運用 |
| 入力欄 | 短く、長文の指示は打てない | 短い英語プロンプトに固定 |
| 応答待ち | スピナー表示からTIME OUT表示まで実測 約12.56秒 | 数秒で返るモデル・設定を選ぶ |
108文字とタイムアウト約12.56秒。この二つが、今回の実験の輪郭を決めています。長い答えは枠に入らず、遅い答えは打ち切られる。だから「短い英語で、すぐに返す」という運用に寄せました。制約を緩める方向(タイムアウトを伸ばす、応答処理を作り込む)も考えられますが、シンプルなチャットを楽しむだけなら、今の設定で足りているというのが正直な印象です。
できたこと、できなかったこと
過大に言わないでおきます。今回「できた」と言えるのは、AIとのチャットだけです。プログラムを打ち込むGAME BASICモードは、このチャットの仕組みとは元々切り離されています。AIとおしゃべりはできても、AIがファミリーベーシックのプログラムを直接書けるわけではありません。そこに手を伸ばすには、また別の仕掛けが要ります。
それでも、手元のマシンだけで40年前の画面に返事を届けられたという一点は残ります。クラウド側の料金体系が変わっても、同じことをもう一度、何度でも試せる。実験を続けるうえでは、この「何度でも試せる」が効いてきます。
この連載は、動画5本とセットで次のように進みます。
- 第2回(本編): ROM上のエラーメッセージをフックして応答を差し込む仕組み、応答待ちの設計、そして40年前から入っていた「占い」機能をROMから読み解いた話
- 第3〜5回: 起動直後の選択画面にある3枚のボード(カリキュレータ・メッセージ・ミュージック)を、AIで動かしてみた記録
40年前から、コンピューターと対話をしたいと考える人たちがいました。AIのために用意されたわけではないエラー処理の枠が、そのままAIの返事を映す窓になっている。次回は、その窓がどう開いているのかを、ROMのアドレスまで降りて確かめます。