an alternative

AI と作る手、自分で書く手

抽象画。モスグリーンの細い地面の上に、黒い四角とテラコッタの四角が同じ大きさで立っている。その間をくすんだ青の縦線が地面ごと区切り、少し左に、線が以前あった位置を示す破線がある
generated by Claude

久しぶりに、Java を手で書いた。

仕事では長く Java を使ってきた。ここしばらくは、コードの多くを AI に書かせている。納期がある。手で書くより速い。書かれたものを読み、わからないところを訊き、直させる。それで回ってきた。

先日、少し込み入った箇所を、自分で書いてみようと思った。書けないわけではない。でも、手が覚えていない。次の一行が、以前のようには出てこない。

ああ、やっぱり、と思った。ショックは小さかった。


小さかったのには理由がある。以前、もっとはっきり愕然としたことがあったからだ。

Rust で小さなツールを作った。Rust はほとんど書いたことがない。AI に書かせた。動いた。そして、自分が何も理解していないことに気づいた。なぜその構造なのか、なぜそこでその型なのか、説明できない。

考えてみれば、当たり前だ。知らない言語で、書かせただけなら、何も残らない。でも当時は、それでも何か残ると思っていた。動くものを作れば、作った分だけ、少しは。そうではなかった。

ただ、もう一つ、当たり前のことがある。AI がいなければ、あのツールはそもそも存在していない。ほとんど知らない言語で、動くものが手元にある。何も残らなかったことと、作れたこと。あの経験は、両方の顔をしている。


AI と作るようになって、広がったものは多い。

私は Web の UI が苦手だ。長年、CSS フレームワークを駆使してなんとかしようとしてきたが、うまくいかなかった。今は AI にスクラッチで CSS を書かせる。うまくいく。長年の苦手が、こういう形で片づくとは思っていなかった。

得意なはずのバックエンドでも、理解が曖昧なところ、実装が甘いところはある。そこを AI がしっかりカバーしてくれる。一人で書いていたときは、自信の持てない箇所を抱えたまま進むしかなかった。今は違う。

自分の経験や思想に、AI の力が組み合わさる。すると、一人ではうまく作れなかったものが、形になっていく。いま自分のプロダクトを作りながら、その実感がある。これは面白い。


それでも、Java の一件が示すものは残る。

書いて、詰まって、ひねり出して、直す。そのループの中でしか起きない発見がある。ふと構造が浮かんでくる、あの瞬間。AI に書かせて、読んで理解する、という作り方では、あれは起きない。理解は残るが、それだけだ。手からは離れていく。

だから、区分けをしている。

効率が悪くても、自分で手を動かすところ。 AI に書かせるが、わからない箇所を残さないよう、突っ込んで訊くところ。 理解がおぼつかなくても、AI に任せるところ。

三つ目は、決めやすい。壊れてもすぐわかり、大事にならないところ。二つ目は、納期が押してくるところ。そして一つ目は、設計の芯になるところと、単に自分が興味のあるところ。効率とは関係ない。手放したくない、というだけの理由で、手元に置いている。

この区分けは、AI から何かを守るための線ではない。手を動かすことでしか育たないものと、AI と組むことで初めて届くもの。両方に場所を与えるための線だ。


コードを書く手の感覚。それとは別に、AI と作る感覚——どこを任せ、どこを訊き、どこで手を出すか——も、少しずつ手に馴染んできている。これも一つの身体知なのだと思う。前者だけに立てこもれば、届く範囲は狭いままだ。後者だけに流れれば、あの発見の瞬間を失う。

二つは、置き換わるものではないらしい。両方を育てながら、線を動かしていく。Java の一件で、線はまた少し動いた。これからも動くだろう。

どこに落ち着くのかは、わからない。いまは、探すこと自体が面白い。