AIのために働け。AI リーダブルコーディングな未来。
2025.05.21
どもです。
おっと気がつけば前回の投稿から1ヶ月が経過しようとしている。
は、早すぎる。。
色々油断しすぎたせいか、人生過去一番 太ってしまった。。
恐る恐る体重計に乗ったところ、
体重を指す数値を見るやいなや、「なんじゃこりゃぁ」ですよ。
松田優作ばりです。
なので、リモートの日は必ずプールに行くようにしております。
自宅近くの市民プールが改修工事のせいで、自転車で隣町までいかないといけないのが結構苦痛ですわ。
それはいいとして、タイトルの「AIのために働け。AI リーダブルコーディングな未来」ですが、何を思ってそのタイトルにしたかというと、3週間くらい前ですかね。
噂の「Devinくん」が手に届く価格(19$)になったので、(前は350$だったかな(高い))
使ってみたところ、衝撃を受けたのでついついその様なタイトルになってしまいました。
私自身は、皆さんのようにゴリゴリAIツールを試しているわけではなく、日頃使いとして ChatGPTとCursorを嗜む程度で、実際 Vibe Codingとして「Tauri(Rust) × AI で作る GitGUIクライアントアプリ その5」のような記事も書いてはいますが、なんだかモヤッとしていたのは「結局まだまだ自分がコーディングしているな」ということだった。
日頃からプログラミングを行っている方なら分かると思いますが、Vibe Codingなどは確かに立ち上げが速いです。2〜3時間程度で動くところまで持っていくのも容易で、
0からモックだったり動くものだったり何かを作成するには非常に持って来い状態です。
ただ、結構エラー出したり、何度もやり取りしたりと、AIとペアプロやっているみたく、つきっきりな状態なんですよね。
ですが、Devinくんは、ClineやCursorとは全く別の体験を得たのでちょっと感動しちゃいました。
何より「非同期」なんですよ。
途中で変更したい場合などは、ChatGPTみたいにレスポンスを待つことなく、非同期でチャットに投げることが可能で、これは普通にメンバーとSlackでやり取りしている感覚でした。
途中で、勝手にcrate(ライブラリ)のバージョンを上げたりしてくるときもあって、「おいおいおいおい待て待て待て」みたいな感じで、Chatに投げることもありましたが、それが作業中でもしっかり修正を行います。
まず、retrodig/damdaraにアクセスしてください。 src/battle.rsが戦闘のロジックとなっています。 println!(" ダメージを うけた");のように、メッセージを出力している箇所がありますが、 今現状では、Battleの内部で println!() を直接打ってしまっていて、依存性が高いので、 src/message.rsの方に別モジュールとして切り出し、メッセージシステムを作りたいです。 ■ 現状の問題点 - 表示(UI)とロジックが強く結びついてしまう - テスト時にも標準出力に出てしまう - CLI以外(たとえばGUIやWebUI)に発展させる時に詰まる - 自由な出力制御ができない これを改善するために、 - Battleの中では「メッセージ」をためておくだけ - 表示処理は Battle の外側が担当する という設計に変えたい。 完成したら、内部依存はありますが、一旦 現状のsrc/battle.rsで出力しているところは置き換える形でお願いします。 大枠の設計は追って検討します。
と言った感じでタスクを投げたら、結果はこちら。
https://github.com/retrodig/damdara/pull/9/files
「AIが理解出来るように文章を書き、指示書を作り、エラーコードを貼り付け…」と、
もう完全にAIリーダブルな働き方じゃん。と。
部下とやり取りするよりChatGPTとやり取りしてる回数が格段に多いし(逆も然り)。
こう投げれば、こう返ってくるなぁ。と大体予想がつくようになっているし。
完全に働き方が変わっている。
とはいえ、成果物は完璧ではありません。
ClineやCursorを用いたVibe Codingを行った場合、明確な指示をしなければ、理想のアーキテクチャで成果物が上がることは殆どないです。
また、結構煩雑なソースコードで挙がって来ることもあり、整理整頓のタイミング、明確なアーキテクチャの指示は必要となってきます。
そのあたりはしっかり指示しないといけないこともあり、
「ソースコードの理想の形」が描けないエンジニアはその指示を行うことも出来ないし、判断、決断も行えないので、その能力は今後も必要でしょう。(今のところ)
また、それらをChatGPTと壁打ちするのも有効なフローでもあるでしょう。
「マインスイーパーをJSで作って」
と言った指示はサンプルです。
「今回の要件は、4ページとページ数は少ないがサーバーAPIが40個ある。ドメインの管理はしっかり行わないと行けないので、オニオンアーキテクチャを導入しようと思う」
など、全体設計に関わる相談、壁打ちを行うと良いでしょう。
また、Vibe Codingを行った場合はソースコードの把握も必要となってくるでしょう。
ソースコードを把握せずガンガン動くouputを出していくのがVibe Codingが故に矛盾を感じるところですが、使い捨てのソースであれば何ら問題ないのですが、本番運用まで持っていくのをVibe Codingで起ち上げ行った場合は、当たり前ですが必ずソースコードの把握が必要となり、把握しているとガンガン整理しないと行けない問題に気がつくことでしょう。
「整理整頓のタイミング」とはそのことです。そのタイミングをどこに置くかの判断もエンジニアの力量として求められることでしょう。
Tidy First? 読みましょう。
最初はChatGPTなどでもキャッキャ言って触っていたのですが、最近ではだんだんと、AIのレスポンス、アウトプットが悪い場合はイライラし、ストレスすらも感じるようになってきてしまいました。
これは、無意識的に「AIをより人間」として感じ、日々触れ合って過ごしているのでは。
と感じるようにもなってきました。
明日も AIのために働くか。