AI時代のコーディングだが、現在のTransformerをベースとしたアーキテクチャを採用する限り、AIがすべてを把握して実装することは不可能だし、確率的に不十分な動きをすることもある(これは人間も同じ……)。だから、そのあたりを押さえてAIに依頼しないとね。
核となるのはインタフェース設計だ。古典的なソフトウェアエンジニアのスキルだが、冒頭の課題がある限り、AIが部分理解であること、不完全なクオリティであることを前提とした開発が重要となる。
この設計が、人間がハンドリングできる領域だ。ここが悪いと、不適切なモジュールのコードが太ることが平気で起こる。そのため、動くけど保守性が低い、そもそも動くものができるまでに時間がかかる、性能にも影響が出る、みたいなことが起きてしまう。
あとは品質面。結局、コードを見ないのであれば、テストを十分にするしかないよね。 t-wadaのTDDは採用できるアプローチだ。私はエンジニアとして17年以上の経験があるが、2023年からほぼコードを書いていない。プロダクトコードの話だ。
フロンティアモデルを開発しているエンジニアたちは、古典的なソフトウェアエンジニアリングに精通していない部分がある、と感じる。例えば、脳と手を分離するアプローチは基礎的なものだ。我々が苦労してきた道を、彼らは今歩んでいる。それがモデルにも反映されている。足りない部分は使う側が補うしかない。