見出し画像

Cursorよさらば!これからはAIderで対話しながらプログラムを作る時代だ!

ドリ山田金之助がCursorというAI搭載テキストエディターを使って独自のビデオ編集をやってるという話を風の噂で聞いた。

ドリ山田くーん、遅い、遅いよー とか煽るのも可哀想だったので放置していたのだが、昨日(!!)もっとゴイスーなAIソフト開発環境を触って元に戻れなくなってしまったのでご紹介しておく。

その最新の開発環境とは、人呼んでAIder(エイダー)

こいつの何がすごいかというと、gitをcloneしてくると、ソースコード読ませて「これにこういう機能を追加しろ」と言うと勝手に追加してgit commitしてしまう。良きところで/git push origin mainとやればやってくれる。

まあAI開発ものにありがちな、「自信満々で提出されたけどいざ動かすとポンコツ」なケースが多くて、使うには忍耐が必要だが、頭は使わなくていい。たまに頭を使ったふりをして「もしかしてこの関数がやばいんじゃないか?」などと指摘するとうまく行ったりする。

このツールのすごいところは、ユーザー(開発者)が完全に受け身になると言うこと。

これまでのAI支援開発ツールは、あくまでも「支援」にとどまっていた。作りたいものをどう作るかイメージするのはプログラマで、AIはそれをサポートする役だった。その方が、開発者は入ってきやすい。

しかしAIderによる開発は、支援ではない。むしろ開発請負ツールと言ってもいい。

AIderに対してユーザーは一切遠慮しなくていい。
「こう言うものを作れ」と言ったらAIderは勝手に作るし、「この機能を作れ」と言ってもAIderは勝手に作る。

AIderの対話環境は「エディタ」ではなくチャットに近い。
しかし単なるチャットと違うのは、ソースコードを適宜修正してくれるところだ。

これまでCursorなどではソースコードの変更の提案をいちいち受け入れるか受け入れないか選んでいたが、AIderでは勝手に変更される。コミットログも勝手に追加される。楽なのだ。圧倒的に。

そんでもって、自分でもよくわからないコードがだんだん出来上がってくるのだが、そのうちわかってきて「おい、ここを直せばいいんじゃないか」と対話してるかのような作業でコードを修正できる。これが非常に楽しい。

言ってみれば、新人プログラマーにお題を出して、適宜修正してやるような感じ。

僕は職業柄、新人プログラマーに「試しにやってみたいけどやるのが面倒すぎてやりたくないコード」を書いてもらうことが多かったので、新人が頑張って書いたけど全然だめなコードを後から「こうじゃ無いんだよーこうジャー」と修正することが多かった。ただ、このやり方は新人も力がつくが、何より僕にとって圧倒的に楽かつ早い方法だったのでよく使っていた。

時には、新人は自分が何を作らされているかわからないまま、ある時突然、「お、俺はこんなに便利なものを作っていたのか!」と気付いたりすることだ。

AIderによるプログラミングはそんな感じである。
まるで新人プログラマーとセッションをやってるようで楽しい。

まあ今の段階ではまだ少しコードがわかる人向けだが、これをやっているとそもそもコードを書く力が指導側(ユーザー側)にも身につくし、Codestral Mambaみたいに事実上の無限長に対応したLLMとか使えばかなりソースコードの規模が大きくなっても耐えるはずだ。そのうちもっとざっくりと「こんな感じのたのむよ」と言えば作ってくれるようになるだろう。そう、npaka大先生に僕が発注する時の感じだ。

残念ながら今のAIderはこのレベルには到達していない。
しかし時間の問題だろう。

ここで思うのは、しかし「誰でも」大先生に依頼できるわけではないということだ。

大先生にお願いして、それがさっさと形になるのは、そもそも僕がプログラミングというものの根本を理解しているからである。

つまり、これからの人類は超高性能コーディングAIを使うことができるようになるが、超高性能コーダーを使いこなすには、俺と同じくらいプログラミングの経験を積み、精通する必要があるのだ。つまり今まで以上にプログラミングを理解することがポストAI時代に生き残るのに必要になる。そのためには、プログラミングだけでなくさまざまな発想や観察力、表現力、行動力といったものが必要になる。

EasyLispにマクロ機能をつけようとして午前4時から取り組んでいたが、ついに成功した。

この感動をどう表現したらいいのかわからない。
Lisp(風)言語にとって、マクロは心臓部とも言える機能だからだ。

gitへのpushまでAIder環境でできる。

とりあえず一番簡単なマクロが動いた。
ループマクロの動作はまだおかしいが、着実な一歩と言える。

easylisp> (define-macro (increment var amount)
      ;; `var` と `amount` を展開して、変数 `var` の値を `amount` だけ増加させるコードを生成します。
      `(set! ,var (+ ,var ,amount)))
easylisp> (define x 0)
easylisp> (increment x 2)
2
easylisp> (print x)
2
easylisp>

時差ぼけ解消にはプログラムを書くに限る。
残念ながらまだ機内からはAIderは快適に使えない。そこが唯一の泣き所である。

今日はジェンスン・フアンとマーク・ザッカーバーグの基調講演がある。
夜は忘れたが何か大事な用事があるはずだ。
もう朝の七時なので、ホテルの朝食でも食べて夜に備えたい。

やっぱりプログラミングは最高だ。
たとえそれが、機械と二人三脚でやるものであったとしても。