音符のあいだで休むということ

2026年10月12日月曜日

少し前に見たある講演動画が、いつになく長く心に残った。Extreme Programmingを生み出し、TDDを世に広めたケント・ベック(Kent Beck)のProdacity 2026での講演で、タイトルは「Software Engineering in the Age of AI」だった。AIがコードのかなりの部分を書く今、ソフトウェアをうまく作るとはどういうことかを問いかける内容だった。52分あまりの講演のなかで私にいちばん強く響いたのは、二つの単語と、あるチェリストの短い逸話だった。

ベックは、ソフトウェア開発を二つの軸で説明した。featuresとfutures。一つは私たちが実装する機能で、もう一つは、このソフトウェアをこの先どう変えられるかという選択肢、つまり変化の余地(optionality)だ。プロジェクトは、機能は何もないが可能性は無限にある状態から始まり、機能を一つずつ実装するたびにfuturesが減っていくという説明だった。結局、機能ばかりを積み上げていくと、どこに手を入れるのも難しくなり、futuresの値が0の、死んだソフトウェアになるという話だった。

講演の25分45秒にケント・ベックが描いたfeaturesとfuturesのグラフ。赤い線は機能だけを積み上げる場合、緑の線は機能と整理を行き来する場合(出典:Rise8のYouTubeチャンネル)

ある意味でこれは、エンジニアとしてこれまで現場で身をもって感じてきた、リファクタリングの大切さの話だ。機能を実装している最中でも、改善できるところがあれば並行してリファクタリングを進めていた。次の機能に取りかかる前のちょっとした空き時間も、リファクタリングの時間だと考えていた。ところが、ある時からAIにコーディングを丸ごと頼むようになり、それ以来「リファクタリングの時間」を見失っていた気がした。機能を実装するときは、いろいろなハーネスに気を配っていた。テスト、lint、フック、制約を伝えるプロンプトや検証エージェントのように、AIの作業のずれを直す仕組みのことだ。でも、「リファクタリングのためだけの作業」はしていない自分に気づいた。

ベックが続けて語った、「以前は100人が10年かけてやっとfuturesが0の状態にたどり着いたのに、今はAIのおかげで、一人で1週間あれば完璧なカオスを作れる」という話にも、とても共感した。私にどんなことがあったのか、ここですべては書けない。ただ、講演を聞いているあいだずっと、そうした過程で繰り返した試行錯誤が、あの図の上に一つ、また一つと重なって見えた。振り返ってみると、私は機能と機能のあいだのクールダウンがどれだけ大事かを、すっかり忘れていたのだと思う。

ベックは、ではどうすればいいのかを説明するなかで、チェリストのパブロ・カザルス(Pablo Casals)の逸話を持ち出した。自分が音大でクラシックギターを専攻していた若いころに聞いた話だと言っていた。チェロは体を大きく使う楽器だが、カザルスが弾いていた曲に、16分音符が延々と続く箇所があったそうだ。誰かが、あれだけたくさんの16分音符を弾いて疲れないのかと尋ねると、カザルスは「いいえ、私は音符のあいだで休んでいます」と答えた。実はカザルスがそう言ったことはなく、作り話なのだという。それでも、とてもいい話だから話さずにはいられないと付け加えていた。

作り話ではあっても、音符のあいだで休むという話を聞いて、あらためて思った。「次の音を正確に押さえるために、手と呼吸を整える時間」、つまり「整理の時間」は、速いテンポで進むAIとの作業のなかでも必要なのだろう。前に書いた「リファクタリングの時間」が、まさにこの音符のあいだだったのだ。機能の合間合間に整理をしてはじめて、柔軟で拡張しやすいソフトウェアが作れる。エンジニアなら誰もが知っている基本だが、機能が次々と生まれる今こそ、その基本にもう一度立ち返るときなのだと思う。カザルスが果てしなく続く16分音符のあいだでも休んでいたように、速いペースで開発されていくfeatureのあいだにも、リファクタリングとテストケースの整理を挟むべきではないだろうか。ベックが挙げた「切りながら包丁を拭くことはできないが、包丁は拭かなければならない」というたとえも、すっと腑に落ちた。

整理をしないまま走ってきた跡は、コードだけにあったわけではなかった。私のMacBookの中にも、そっくりそのまま残っていた。しばらく立て込んでいた作業が終わり、少し空き時間ができて手を止めてみると、はじめて見えてくるものがあった。整理しそびれたgit worktreeやDBコンテナがあちこちに溜まっていて、ストレージの空き容量は底をつきかけていた。そのまま次の作業に飛び込んでいたら、どこかで空き容量が0になって、すべてが止まっていたかもしれない。溜まったものを一つずつ消して、ようやくMacBookはまた次の作業を受け入れる余裕を取り戻した。私のMacBookのfuturesも、そうやって少し戻ってきたわけだ。

少し前に、家族で済州島へ行ってきた。旅のなかでいちばん長く心に残ったのは、西帰浦で迎えた日の出だった。朝早く起きて、日が昇るのを眺めていたあの時間がとてもよかった。空一面に広がったうろこ雲が下のほうからオレンジ色に染まり、ヤシの木のシルエットの向こうから、太陽が少しずつ顔をのぞかせた。

西帰浦で迎えた日の出

不思議なことに、旅行から帰ってきてから、家族の朝の雰囲気があっという間に変わった。朝早く起きて一日を始めるのが、いつの間にかわが家のリズムになり、おかげで体の調子も前より少しずつよくなってきているのを感じる。あの旅行は、うちの家族にとって音符のあいだの整理だったわけだ。考えてみれば、私たちの暮らしもソフトウェアとそれほど変わらないのかもしれない。仕事でも子育てでも、一日一日は次のfeatureに向かって追い立てられるように過ぎていく。そのあいだに整理がなければ、暮らしのfuturesも少しずつ燃やされていくのではないだろうか。