AIコーディングについての現状の見解

現時点でのおれのAIコーディングに対する見解。まず、人間はもはやシステムの理解を諦めて、見返りにとんでもない速度で機能をリリースするべき派(実際こう言ってる同僚が前職に居た)と、依然としてソフトウェアエンジニアは、遅くともレビューに時間をかけ、システムを理解すべき派があるけど、個人的には、スピードを落しつつ、読んで理解することに時間をかけるべきだと思う。それでもAIコーディングの恩恵は十分受けられる。そのためのメインの方法は、CloudflareのBoris Taneや、NetflixのJake Nationsが推奨しているリサーチとプランに時間をかけるやりかた。それから、NotionのGeoffrey Littが推奨しているような、AIにシステムの理解を手助けさせるやりかたなんかも良いと思う。トップスピードでやると低品質なシステムになるのは避けられないので、トップスピードを出すべきではない派。

www.youtube.com/watch

Netflixの500万行ある認証関連コードをAIにリファクタリングさせようとしたけど、(最初の試みは)うまくいかなかった話。毎度こういう話聞くと思うけど、500万行!?ナンデ!?

宣言的な言語と手続的な言語という対比があって、宣言的であることはだいたいにおいて良いこととされてきた。宣言的な言語で記述するというのは、最終的な目標や達成されて欲しい状態のみを記述し、そこに至る過程はすっとばすということ。その過程は、背後にあるかしこい仕組みが自動的にプランニングして達成してくれる。SQLは宣言的な言語の代表例だけど、SQLを見たときに、それがどのような手続の列に変換されるのかイメージできるプログラマーは多くない。それはSQLが人々を生産的にしている証拠であり、とても良いことだ。

AIコーディングは、宣言的なプログラミングの究極形と言えるかもしれない。人々は詳細な手続きをすっとばした状態でシステムを構築できる。大きな違いは、決定的か非決定的かということで、通常の宣言的な言語であれば、記述した通りの結果が保証されるものと考えて差し支えないけど、AIコーディングでは、宣言したことが必ずしも実現されるとは限らない。また、宣言自体が正しい内容なのかどうかの分析も、能力の限定的な宣言型言語よりも難しいと思う。

GitHub Copilotのコード補完て、かなりいい感じに補完してくれて手書きするときに好きなプロダクトではあるんだけど、それだけのためにCopilot課金するかというと……手書きする量のすくなさを考えれば、まあなくてもなんとかなるかな。Copilot拡張アンインストールするかー。だとしたら、おれがVS Code使いはじめた理由も、あまりなくなってしまうな。まあ、LSPがものすごく快適に動くので、それだけでも価値あるとは思うけども。