デバッグのコストと開発の方針
あくまで個人開発の話
デバッグのコストが高いと「とりあえず書かせて動かしながらデバッグする」をやるのに時間がかかる
実機でしか発生しない問題、たとえばRaspberry Pi 4のUART出力のデバッグみたいなのは、どこが間違っているのか一つずつ検証していく必要があった
QEMUのvirtマシンで開発していたときも同じシリアル通信デバイスを使っていて、使いまわそうとしたことに起因すると考えているけれど、1から書くのと天秤に乗せる余地はあった
実機にSDカードを抜き差ししたりPCでフォーマットしたりするのは大体2分くらいかかる
この場合、インクリメンタルに開発して、小さい差分を重ねていくのが結果的に早いと思った
GICv2ドライバの実装はその反省を踏まえてインクリメンタルな開発を意識している
ベースアドレス取得から始めて、読み取り専用レジスタから情報だけ取ったり、機器の割り込みではなくソフトウェア割り込みから始めるなど小さいステップを重ねている
この際のAIの活用方法として、チャットUIの方が良い気がしている
AIエージェントはコードベースを踏まえた上でコードを最適な形で出してくるが、これが実機開発だとあまり嬉しくない場合がある
たとえば、直接固定値でメモリ読み出しを試すだけをしておきたいステップで、DTBから取得して構造体を作ってメソッドを定義してまで進んでしまうことがある
プロンプトで書けばいい話だけど、感覚的な粒度って行数とは言えないので…毎回指定しているのも億劫に感じてしまう
あとは、そのようなステップを刻みたい時にコードベースが直接編集されるのがわりと認知負荷高い
チャットUIなら克服できるのかというと、完璧ではないにしろ、うまくいくと感じている
コンテキストをあえて与えずに小さく試す方法を聞いて、後から大体挙動が安定してきたらコンテキストを渡して良い感じに抽象化のアイデアを出してもらう
あとは単に丁寧なコードリーディングが苦手で、コピペあるいは写経した方があとからバグがあった時の検討をつけやすくなるのもある