【AI×個人開発】コードを書かないエンジニアが生き残る理由|実体験で解説

プログラミング学習
  • AIがコードを書く時代に、エンジニアの仕事はどうなるの?
  • プログラミングスキルだけでは生き残れないと感じている
  • AIとどう共存していけばいいかわからない

僕は最近、個人開発でWebアプリを作っています。

ただし、コードはほとんど自分で書いていません。

AIにコードを書いてもらったら、爆速で開発が進んでいく。「自分の手でコードを書いていたら、何十倍もの時間がかかっていたぞ…」。その事実に、エンジニアとしての危機感を覚えました。

アイデアの壁打ちと要件定義はGeminiと一緒に進め、実装はClaude Codeに任せました。いわば「AI×AI」の開発体制です。

この経験を通じて強く感じたのは、「コードを書けるだけ」のエンジニアは、近い将来AIに置き換えられるということ。そして同時に、AIには絶対にできない「人間の仕事」がはっきり見えたということです。

本記事では、実際のAI×AI開発の全プロセスを共有しながら、AI時代にエンジニアとして生き残るために何が必要かを考えます。

プログラミングスキルの「現在地」が変わった

これまでの個人開発は、「言語を学び、フレームワークを選び、自分でゼロからコードを書く」のが当たり前でした。

でも今は違います。Claude CodeやGitHub CopilotのようなAIがコードを書く時代です。しかも、その精度は年々上がっていて、簡単な機能実装なら人間より速く、ミスも少ない。

では、人間のエンジニアに何が残るのか。

僕が今回の開発で実感したのは、エンジニアの役割が「What(何を作るか)」と「Why(なぜ作るか)」を定義し、AIが動ける「How(どう作るか)」に落とし込むことにシフトしているということです。

つまり、「作る人」から「設計し、判断し、決める人」への転換です。

【実践】AIとの壁打ちでアイデアを磨く

今回作っているのは、家計簿アプリのデータを分析・整形するWebアプリです。(まだ開発中です。。)

きっかけは「家計簿アプリのデータをもっと使いやすくしたい」というフワッとした思いつきでした。具体的な仕様もなければ、技術選定も白紙の状態です。

ここで僕がやったのは、AIを「壁打ち相手」として使うことでした。

Geminiと一緒に「本当に欲しいもの」を言語化する

Geminiに対して、自分の課題をそのまま投げかけました。

最初は「何か個人開発でサービスを作れないかな」という漠然とした相談からのスタートです。自分が日常で感じている「こんなことできたらいいのにな…」という不満やアイデアを、そのままGeminiに伝えていきました。

その中で「家計簿データを自動分析したい」と相談したら、Googleスプレッドシートにエクスポートできるサービスの開発を提案されたんです。正直、ビックリしたと同時に「それ、すごく面白そう」と思えました。

この壁打ちの中で、「無料版ユーザー向けにコピペでデータを整形できる機能」というキラー機能が生まれました。自分一人で考えていたら、この発想には辿り着かなかったと思います。

ポイントは、AIに「答え」を求めるのではなく、「問い」を投げかけてもらう使い方をしたことです。

「このアプリのユーザーは何に困っている?」「既存のサービスとの違いは?」「なぜ自分がこれを作る必要がある?」。こうした問いを通じて、自分でも気づいていなかったニーズが言語化されていきました。

【実践】セキュリティの判断は「人間の仕事」

アイデアが固まった段階で、次に直面したのがセキュリティの問題です。

家計簿データには個人の支出情報が含まれます。技術的にどう扱うかと同時に、倫理的な面での判断も必要になります

AIと一緒にアーキテクチャを決める

Geminiと相談しながら、以下の方針を決めました。

  • ローカル処理優先:ユーザーのデータは可能な限りブラウザ上で処理する
  • サーバーレス構成:サーバーにデータを保持しない設計
  • メタデータのみ保存:データベースには分析結果の概要だけを保管

「APIにデータを送信した場合、AIの学習に使われないか?」という、AI時代ならではのリスクも検証しました。

「便利さ」と「怖さ」のトレードオフに向き合う

僕がもっとも悩んだのは、「便利さ」と「怖さ」のトレードオフでした。

「家計簿の明細データをコピペで取り込める」という機能を実現したい。
でも、個人の支出データをそのままAIに投げるのは怖い。

おそらく実際に使ってくれることになるユーザーだって同じ気持ちのはずです。

この心理的な障壁を、技術でどう解決するか。

開発の初期段階、つまり壁打ちの時点から「プライバシー・バイ・デザイン」の考え方を取り入れました。アプリ側やデータベースで「何にいくら使ったか」という生データを持たないことを、仕様として最初に取り決めました。

具体的には、以下のような設計をGeminiと壁打ちしながら固めていきました。

実際にどんなセキュリティ設計をしたか

① 「データの通り道(パイプ)」に徹する設計

アプリ側で家計データを抱え込まない、「非保持型」のアーキテクチャを採用しました。

  • クライアントサイド処理の優先:CSVのパースや集計ロジックは、極力ユーザーのブラウザ上で実行
  • データベースへの生データ保存禁止:Supabaseには「どの年度のデータがあるか」「スプレッドシートのID」などのメタデータのみ保存。「何にいくら使ったか」という生明細は一切保存しない
  • 真実のソースはGoogleスプレッドシート:データはユーザー自身のGoogleドライブ内にのみ蓄積される設計

② AI(Claude)APIとの安全な通信

「明細コピペ機能」では、どうしてもAPI(サーバー)を通過する必要があります。ここは特に慎重に設計しました。

  • API学習の拒否:Anthropic(Claude)の商用APIポリシーに基づき、送信されたデータがモデルの学習に利用されないことを確認
  • ステートレスな処理:Vercel上のAPI Routeに届いたテキストデータは、JSONに整形してレスポンスを返した瞬間にメモリから破棄。ログにも残さない
  • 秘密鍵の隠蔽:APIキー(ANTHROPIC_API_KEY)はVercelの環境変数で管理し、ユーザー側(ブラウザ)からは絶対に見えない設計

③ 個人情報保護のための技術的工夫

  • OAuth 2.0の活用:Googleのパスワードをアプリが受け取るのではなく、Google公式の認証を通じて「スプレッドシートへの書き込み権限」だけを安全に取得
  • ハッシュによる重複排除:明細の重複チェックを行う際も、生データを突き合わせるのではなく、Hash(日付+内容+金額)という不可逆な文字列を使って照合。検索速度と安全性を両立

そして、「データは学習に使われません」という注意書きをあえてUI上に表示することにしました。ユーザーとの信頼関係を築くUI/UXデザインとして、「誠実に説明する」姿勢が大切だと考えたからです。

ここで感じたのは、セキュリティの「最終判断」はAIには任せられないということです。
AIはリスクを列挙してくれますが、「どのリスクを許容し、どのリスクを絶対に回避するか」を決めるのは人間の仕事になると思います。

【実践】AIを迷わせない「仕様書」を作る

設計が固まったら、いよいよ実装です。ここでClaude Codeの出番ですが、曖昧な指示を出すとAIは迷走します

「プロンプト」ではなく「仕様書」が必要

僕が最初に学んだのは、AIに実装を任せるには「プロンプトのテクニック」よりも「仕様書の精度」が圧倒的に重要だということです。

壁打ちで決まった内容を、以下のような構成で「実装向けの設計仕様書」に再構成しました。

仕様書に含めた内容

  • システム構成図(フロントエンド・バックエンド・外部API)
  • データフロー(どのデータが、どこを通って、どこに保存されるか)
  • テーブル定義(カラム名・型・制約)
  • UI要件(画面ごとの機能・ユーザーの操作フロー)
  • 非機能要件(セキュリティ方針・パフォーマンス要件)

この仕様書をClaude Codeに渡すことで、コードの方向性がブレることなく、一貫性のある実装が進みました。

僕が実践した「2段階AI設計」

僕が工夫したのは、Geminiで概要レベルの設計をしたら、Claude Codeに実装ベースの設計に落とし込んでもらうという2段階のプロセスです。

Geminiは「何を作るか」「なぜそうするか」を整理するのが得意。
一方、Claude Codeは「実際にどう実装するか」のレベルで設計を詳細化するのが得意です。

この2つのAIの強みを使い分けることで、曖昧なアイデアが実装可能な仕様書に仕上がっていきました。

ClaudeCode 設計ドキュメント

GeminiとClaude Codeを使い分けた具体的な開発フローは、こちらの記事で詳しく紹介しています。

【3つのAIツールを使い分け】Claude Code・Cursor・Geminiで個人開発した方法

開発中の「方針転換」もAIと一緒に

実装を進めていくと、設計段階では想定していなかった課題が出てきます。

僕の場合、実装を進めて初めて「取り込み後にデータを編集する画面が必要」「スプレッドシートは年度ごとに分けた方が運用しやすい」といった課題に気づきました。

従来の開発なら、ここで大きな手戻りが発生してモチベーションが折れるところです。

でもAIとの開発では、再びGeminiと壁打ちしてデータフローを再設計し、仕様書をアップデート(v1.0 → v2.0)して、Claude Codeに再指示するだけで済みました。

このスピード感は、一人で全部コードを書いていた時代には考えられませんでした。設計の修正コストが劇的に下がることで、「最初から完璧な設計を」と身構える必要がなくなり、「まず作って、使いながら直す」というアジャイルな開発が個人レベルでも現実的になっています。

実際、僕は別のプロジェクトで1週間でWebサービスをリリースした経験もあります。AIとの開発がもたらすスピード感は、こちらの記事でもリアルに感じていただけると思います。

会社員エンジニアがClaude CodeなどのAIツールを使って個人開発でWebサービスをリリースするイメージ

【Claude Codeで個人開発】会社員エンジニアがAIだけで1週間でWebサービスをリリースした全記録

AI時代のエンジニアに求められる3つの力

今回の開発を通じて、「AIに淘汰されないエンジニア」に必要な力が見えてきました。

① 要件定義力|「何を作るか」を決める力

AIは「作り方」を知っていますが、「何を作るべきか」は決められません。

ユーザーの課題を発見し、言語化し、解決策として「これを作る」と決断する。この上流工程こそが、人間のエンジニアの最大の価値になっていきます。

プロンプトのテクニックよりも、「そもそも何を聞くか」「何を作るべきか」を考える力の方がはるかに重要です。

② 判断力|セキュリティとUXの「最終決定者」

AIはリスクを列挙してくれますが、「このリスクは許容する」「これは絶対にダメ」という判断はできません。

また、「このUIはユーザーにとって心地いいか」「この機能は本当に必要か」といったユーザー体験(UX)の判断も、人間にしかできない領域です。

③ 熱量|「本当に欲しいもの」を諦めない力

AIは指示されたことを正確にこなしますが、「これを作りたい」という衝動は持っていません。

自分の過去の体験や、今抱えている困りごとの中に、「こんなアプリがあったらいいな」につながるヒントが必ずあります。僕の場合は、「家計簿のデータをもっと活用したい」という日常の小さな不満がきっかけでした。

そして、開発を最後まで完遂させるのは、「自分がこれを使いたい」「この問題を解決したい」という熱量です。これは人間にしかない原動力であり、AIがどれだけ進化しても代替できないものだと思います。

まとめ|AIは「共同開発者」になった

今回の開発で確信したのは、AIは「便利な道具」という段階をすでに超えているということです。

壁打ち相手として思考を引き出し、設計を一緒に磨き、コードを書いて実装してくれる。AIはもう「共同開発者」です。

  • AIに任せるべきこと:コーディング、デバッグ、リファクタリング、テスト生成
  • 人間が担うべきこと:要件定義、セキュリティの最終判断、UXの設計、「作りたい」という意志

「プログラミングを書けるだけ」のエンジニアは、残念ながらAIに置き換えられていくと思います。

でも、「何を作るか」を決め、AIを動かすための仕様を作り、最終的な判断を下せるエンジニアの価値は、むしろこれから上がっていく。

ただし、「AIにコードを書いてもらったらすぐリリース」というわけにはいきません。バグも起きるし、設計とは異なる動作をすることもあります。必ず人間のチェックは必要であることを、今回の開発を通して実感しました。

正直なところ、「自分がAIを使いこなせている」とは全然思えません。それだけAIは将来的な可能性を秘めているし、もっと社会に有意義に活用されてほしいと感じています。

だからこそ、AIの進化に不安を感じているエンジニアにこそ、一度AIと一緒に何かを作ってみることをおすすめします。「AIに仕事を奪われる」のではなく、「AIと共に仕事をする」ことに希望を見出してほしい。「コードを書く」以外に自分が持っている力に、きっと気づけるはずです。

エンジニアとしてのキャリアの選択肢を広げたい方は、こちらの記事も参考にしてみてください。

【実体験】フリーランスエンジニアから会社員に転職|6年経験者が語る年収と準備

ブログでの技術発信をキャリアに活かす方法はこちら。

【3年運営して分かった】エンジニア副業ブログの現実|稼げる?続けられる?