コードを書くのをやめた。アプリは3日でリリースされた。
3ヶ月前、私はフルスタックのSaaSダッシュボードを構築した。認証、データベース、REST API、そしてUIを備えたものだ。
私が書いたコードは約200行。残りはすべてAIがやった。AIがコードを書き、レビューし、修正まで行った。
アプリは公開され、ユーザーは料金を支払っている。私は、理解もできないバグを直すために深夜2時に起きていることもない。
これは自慢ではない。警告だ。
開発者の役割は急速に変化している。勝ち残る開発者は、この変化に抗うのではなく、変化をリードする者だ。
AIを単なるオートコンプリート(自動補完)ツールだと考えるのはやめよう。それは古い考え方だ。
「AIネイティブ開発」は新しいメンタルモデルだ。AIを使う目的は、コードを書くスピードを上げることではない。実装をAIに任せ、自分はアーキテクチャと判断に集中することにある。
そのシフト(転換)は次のようなものだ:
- 旧モデル:自分でコードを書く。AIはタイピングを速めるのを助ける。
- 新モデル:「何を(what)」「なぜ(why)」を定義する。AIが「どのように(how)」を担う。人間は検証と舵取りを行う。
私はまさにこのワークフローを使ってアプリを構築した:
- Next.jsやPrismaなどの標準的なツールを使ってプロジェクトの雛形(Scaffold)を作る。
- データモデルを自然言語で記述する。
- AIにスキーマを生成させる。
- 詳細なプロンプトを使用して、サーバーアクションとロジックを生成する。
私は関数を書かなかった。レビューし、テストし、エラーメッセージを調整しただけだ。
それが新しい仕事の姿だ。
AIがコードを書くのであれば、あなたの価値は「メタスキル」から生まれる。AIはパターンを見つけるのは得意だが、意思決定は苦手だ。
AIには判断できないことがある:
- サーバーアクションが必要か、APIルートが必要か。
- ステート(状態)をどこに置くべきか。
- モノレポを採用すべきかどうか。
これらの決定にはコンテキスト(文脈)が必要だ。AIにはコンテキストが欠けているが、あなたにはある。
今や、ジュニア開発者とシニア開発者の違いは「プロンプトの精度」にある。
- 弱いプロンプト:「レートリミッターを書いて」
- 強いプロンプト:「Next.jsのAPIルート用に、Redisベースのレートリミッターを書いてください。1つのIPにつき1分間に10リクエストまでに制限し、超過した場合は429エラーを返してください。管理者は除外し、イベントはPrismaにログとして記録してください。」
後者のプロンプトなら、即座に本番環境で使えるコードが得られる。
また、「サイレントな失敗」にも注意しなければならない。AIが書いたコードは、一見正しく見えても微妙なバグを含んでいることが多い。AIのアウトプットは、ジュニア開発者からのプルリクエストと同じように扱うべきだ。懐疑的な目でレビューすること。
「コードを書く量を減らすこと」を最適化してはいけない。「コードを取り巻くスキル」を最適化すべきだ。
開発者Aはすべてを手書きで行い、スピードが上がらない。 開発者Bは細かな部分にAIを活用し、システム設計に時間を割いている。
Developer B が新たなスタンダードです。
今週、ぜひこれを試してみてください:
- コードを書く前に、機能の完全な仕様書を作成する。
- その仕様書をプロンプトとして使用する。
- シニアエンジニアがジュニアエンジニアをレビューするように、出力をレビューする。
目標は、開発者であることをやめることではありません。より優れた開発者になることです。
オプションの学習コミュニティ: https://t.me/GyaanSetuAi