vibe codingも良いけれど
皆様こんにちは。滑り込み投稿のVim駅伝になります。 僕が書く記事はVimというより自分の周辺技術に関する記事が多くなっていて、Vim関係ないんちゃうん?みたいな感じですが、そんな方向でよろしくお願いいたします。
この記事はVim駅伝の2025-07-30の記事です。 前回2025-07-28は、eetann/えいじさんのNeovimで検索文字の入力中にvery magicをトグルするでした。 Vim駅伝は常に参加者を募集しています。詳しくはこちらのページをご覧ください。
vibe codingの流行
昨今、生成AIにプロンプトを投げて雰囲気でコーディングするvibe codingが流行っています。実際にやってみると、ちょっとした簡単なアプリとか前例があるアプリになると、威力を発揮するすごい開発手段です。多くの初学者の方が、この動きを見てプログラマ不要説を唱えたりしますが、まだまだプログラマは必要だなと個人的には感じています
生成AIがニガテな事
生成AIには得意不得意なジャンルがあります。一見すると、創造性の高い部分も担っている雰囲気を醸し出していますが、実は既存とそのちょっとした延長に対する事には強いものの、全くの新規だったり、存在していない事柄に関する生成は非常にニガテです。どれくらいニガテかと言うと、vibe codingで要件定義を決めて生成しても全く動かない代物が出来上がり、最終的に8割くらいのソースのデバッグ指示をこちらから出さなければならないという感じです。
例えば、GeofencingアプリをReact Nativeを使って作ってくれみたいな事をやっても、ほぼほぼ役に立たないコードを吐き出します。何が原因なのでしょうか。Googleを使って検索するとわかりますが、React Nativeを使ってGeofencingをやっている人がほとんどいない=ソースコードがあまり転がっていない関係で、ロクなコードを生成しないのです。加えて、僕自身のスキルがGeofencingやReact Nativeの知識不足でどこで詰まっているのかすら分からないという二重の問題があります。
すなわち、プロンプトを投げる人のスキルが足りないのと、既存のコードが存在しない場合、ちゃんとしたコードを生成してくれないのです。悲しすぎますね。
生成AIが活躍する分野
生成AIは要約とかミスの発見などが得意ですので、自分が書いたコードをリファクタリングさせる時に非常に強力に動作します。一旦は頭の悪い逐次処理のコードを書いて、それをどれだけエレガントに出来るかを生成AIに任せることが出来ます。そして、生成AIが吐き出したコードを今度は自分自身にフィードバックする事で、自分のコーディングスキルも上がるという相乗効果が期待出来ます。
また、ゼロからコードを吐き出させる場合、自分が得意な分野ですと威力が絶大です。最近の僕はNext.js周りの知識が多くて、それに関連したちょっとしたコンポーネントの生成や、NextAuthを利用したログイン処理など既に書いたことがあるもの、知っているものについては適当に指示を出してもきちんと動作するものを生成してくれますし、詰まるポイントがあったとしても、すぐに僕が気が付きます。
結局、ニガテな事と同じで、プロンプトを投げる人のスキルに沿った分野に関してはとても強力にコードを生成してくれます。
この点で、プログラマとして勉強して伸ばしていくスキルとしてデータ構造とアルゴリズムがあります。とどのつまり、プログラマという職業はこの2つを完全に理解していれば、どんなプログラムでも作ることが出来ます。すなわち、どんなコードでも生成AIに吐き出させる事が出来ます。
ですので、自分が作りたい物に関して、どのようなデータ構造が必要なのかを考え、その構造体を定義し、それに沿って適切なアルゴリズムを指示すると、途端に生成AIは生き生きと動くコードを吐き出してくれます。
結論
データ構造とアルゴリズムはプログラマにとっての聖書です。手元において、毎日参照しても良いです。古い本ですが、基本中の基本が書かれており、基本は一切崩れません。基本がしっかりしていれば、応用はいくらでも出来ます。生成AIは、この基本部分をすっとばしていきなり応用のコードを吐き出したり、どこかからコピペして持ってきたりするので、それを見極められない場合、非常に苦労します。
見極める力、眼力と言ったほうが適切でしょうか。プログラマには、必要なスキルであり、誰もが持つべきスキルの一つだと思います。
生成AIを使って、効率的に色々なコードを作るというのは、現代プログラマには必須クラスのスキルですが、同時に、その生成AIを精査するスキル、指示を出すスキルに関しては、まだまだ学ぶべきことが多くあり、実際の所自分自身の能力に依存しているので、生成AIは使えないという結論ではなく、自分は生成AIを使いこなせる、それくらいのスキルを身に着けられるよう日々精進していきたい所です。
精進するためには、基礎スキルは欠かせないというお話でした。
コメント
コメントを投稿