AI と作る手、自分で書く手
久しぶりに、Java を手で書いた。
仕事では長く Java を使ってきた。ここしばらくは、コードの多くを AI に書かせている。納期がある。手で書くより速い。書かれたものを読み、わからないところを訊き、直させる。それで回ってきた。
先日、少し込み入った箇所を、自分で書いてみようと思った。書けないわけではない。でも、手が覚えていない。次の一行が、以前のようには出てこない。
ああ、やっぱり、と思った。ショックは小さかった。
小さかったのには理由がある。以前、もっとはっきり愕然としたことがあったからだ。
Rust で小さなツールを作った。Rust はほとんど書いたことがない。AI に書かせた。動いた。そして、自分が何も理解していないことに気づいた。なぜその構造なのか、なぜそこでその型なのか、説明できない。
考えてみれば、当たり前だ。知らない言語で、書かせただけなら、何も残らない。でも当時は、それでも何か残ると思っていた。動くものを作れば、作った分だけ、少しは。そうではなかった。
ただ、もう一つ、当たり前のことがある。AI がいなければ、あのツールはそもそも存在していない。ほとんど知らない言語で、動くものが手元にある。何も残らなかったことと、作れたこと。あの経験は、両方の顔をしている。
AI と作るようになって、広がったものは多い。
私は Web の UI が苦手だ。長年、CSS フレームワークを駆使してなんとかしようとしてきたが、うまくいかなかった。今は AI にスクラッチで CSS を書かせる。うまくいく。長年の苦手が、こういう形で片づくとは思っていなかった。
得意なはずのバックエンドでも、理解が曖昧なところ、実装が甘いところはある。そこを AI がしっかりカバーしてくれる。一人で書いていたときは、自信の持てない箇所を抱えたまま進むしかなかった。今は違う。
自分の経験や思想に、AI の力が組み合わさる。すると、一人ではうまく作れなかったものが、形になっていく。いま自分のプロダクトを作りながら、その実感がある。これは面白い。
それでも、Java の一件が示すものは残る。
書いて、詰まって、ひねり出して、直す。そのループの中でしか起きない発見がある。ふと構造が浮かんでくる、あの瞬間。AI に書かせて、読んで理解する、という作り方では、あれは起きない。理解は残るが、それだけだ。手からは離れていく。
だから、区分けをしている。
効率が悪くても、自分で手を動かすところ。 AI に書かせるが、わからない箇所を残さないよう、突っ込んで訊くところ。 理解がおぼつかなくても、AI に任せるところ。
三つ目は、決めやすい。壊れてもすぐわかり、大事にならないところ。二つ目は、納期が押してくるところ。そして一つ目は、設計の芯になるところと、単に自分が興味のあるところ。効率とは関係ない。手放したくない、というだけの理由で、手元に置いている。
この区分けは、AI から何かを守るための線ではない。手を動かすことでしか育たないものと、AI と組むことで初めて届くもの。両方に場所を与えるための線だ。
コードを書く手の感覚。それとは別に、AI と作る感覚——どこを任せ、どこを訊き、どこで手を出すか——も、少しずつ手に馴染んできている。これも一つの身体知なのだと思う。前者だけに立てこもれば、届く範囲は狭いままだ。後者だけに流れれば、あの発見の瞬間を失う。
二つは、置き換わるものではないらしい。両方を育てながら、線を動かしていく。Java の一件で、線はまた少し動いた。これからも動くだろう。
どこに落ち着くのかは、わからない。いまは、探すこと自体が面白い。