Gemini CLIに作ってもらったpf-tui.pyはすでに2600行ほど。
https://qiita.com/self-learner/items/b4afb631958f6ecab4e5
このコードにGemini CLIで機能追加をしようとすると、他の機能がデグレする事象が目立つようになってきました。
一つのファイルをコピーすれば使えるようにしたいので、機能ごとにファイルを分けるのはできれば避けたい。
ソースコードは複数あっても実行ファイルが一つならOKなので、Goに書き換えてもらうことにしました。TUIフレームワークには、前から興味のあったBubble Teaを採用。
Python版だとデグレが目立つようになった反省を踏まえて、Go版ではまず仕様書みたいな機能を説明したfeatures.mdを作ってもらい、実装する時にやったことはtodo.mdに記録しながら進めました。
UIはなるべく移植元のPythonに似せた関係であまりBubble Teaの良さを活かせてないかもしれないけれど、3週間ほどかけてこんなのが出来上がりました。
https://github.com/kh813/pf-tui-go
メインメニューpf-tui.pyとほぼ同じだけど少しだけおしゃれになってます。
パケットフィルター設定画面もこんな感じでちょっとおしゃれになりました。
結局コードは2460行でPython版と同じくらいになりましたが、デグレしてしまうことをあまり心配せずに実装が進められた感覚があります。
% wc -l *.go
424 firewall.go
107 logging.go
89 main.go
312 pf.go
1528 tui.go
2460 total
features.mdとtodo.mdを作ったのが良かったのか、それともBubble Teaが優秀なのでデグレを起こしにくいのか、引き続き検証していきたいですね。