始めに
2025年初頭に安価となったClande code、その時に試したのは、πを1000桁計算するCのプログラムを書かせることでした。その時は、Claude codeは何やら数分間コードを作ってはエラーを訂正してテストするを繰り返した末に、char配列に一桁ずつ正解が入っているコードを最終版として出してきてがっかりした覚えがあります。それから1年、何やらものすごくなっていると聞いたので、再トライしてみました。
題材
今回は、π計算からはかなり高度になった、Z80エミュレータをお題としました。これを(趣味で)開発しているRISC-V CPUのテストベンチの一つとすることを目標としました。(自作RISC-Vへの移行は自分で行う)
経緯
①まず単純に「Z80エミュレータを作って」と伝えたところ、100行ほどの簡単なコードを作成してきました。
②明らかに行数が足りないので、「自分でテストをして」と伝えると10本ほどのテストを通して、いろいろ足りないレジスタ等を追加してきました。
③まだ出てきていないものがありそうなのと、コードをレビューして合っている/合っていないを判定するのはダルいので、いい案は無いかと考えたところ、Open SourceのNascom Basicというものを発見し、これが動作するようにしようと考え、ソース(アセンブラ)をたたきこんで、これが動くようにしてと伝える。
参考文献
https://www.xenesis.jp/2022/05/z80-nascom-basic/
④ここからClaude codeは長考に入り、ソースの調査を開始(しているらしい)。たまにYes/Noクエスチョンを投げてくるので、ポチポチ押すこと25分、105件のテストを行って、エミュレータが出来上がりました。
⑤小修正(printfとscanfだけで動作するよう追加で注文)でさらに5分ほどかかり、合計で35分ほどかかりましたが動作するものができました。Nascom Basicが起動し、コンソールが出ました。試しにBasic上でアスキーのマンデルブローを出力しましたが、ちゃんと動作しました。
⑥シンプルなCでprintfとscanfだけで動作するようにしたので、自作RISC-Vのベアメタル環境で動作するように5行ほど手で追記して、動作確認。見事に動作しました。
その時点での状況
自作RISC-V ⇒ Z80エミュレータ ⇒ Nascom Basic ⇒ マンデルブロープログラム
と4階建てのプログラミングとなりました。
終わりに
・1時間足らずで目的を達成してしまい、かなり衝撃を受けました。この間、Z80エミュレータのソースコードには指一本触れずにwsl上でNascom Basicが動作してしまいました。
・目標(どこまで作るか)が明確だと、そこにはきっちり当てはめたものを作ってくれるようです。今回はNascom Basic動かすという明確な目標があったため、すっきりと終了したと思われます。
・下手に人間が書いたコードを渡して改変するよりも、スクラッチビルドの方が速く収束するように思われます。
・現在不完全な自作RISC-V上でLinuxカーネルの起動を試みており、Claude codeを使い、デバッグを進めていますが、長考が多く、なかなか進みません。もともと不完全な土台に立っているため、仕方ないのですが。できたらまたレポートしてみようと思います。

