1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

プロジェクト完成度の法則:AIコーディングで学んだ厳しい現実

Last updated at Posted at 2025-06-29

31153dc1-f9d2-45a6-8706-0610850eeb63.png

はじめに

うーむ、久しぶりにこんな技術ネタでブログを書くことになった。最近のAIコーディングブームに乗っかって、いろいろ試してみたんだが、結果的に時間を大量に無駄にしてしまった話をしたいと思う。

そして、その過程で発見した「プロジェクト完成度の法則」について語ってみたい。これは、AIコーディングに限らず、すべての開発プロジェクトに当てはまる重要な法則だと思う。

まあ、アクセス数も増えてきているし、こういう実体験ベースの話も需要があるんじゃないかと思うんだよね。

プロジェクト完成度の法則を実証する体験

この法則を実感したのは、以下のような体験からだった。

パターン1:0%スタート(失敗例)

「ブログシステム作って」とAIに頼む

いかにもそれっぽいコードが出力される

実際に動かそうとするとエラーの嵐

修正に修正を重ねるが、新しい問題が次々発生

結果:何日も格闘して結局使い物にならない

パターン2:100%完成プロジェクトの活用(成功例)

既に動いているオープンソースプロジェクトをベースにする

AIに「この機能を追加して」と依頼

既存の構造に沿った修正案が提示される

結果:短時間で安定した機能追加が実現

この違いは何か?土台の有無なんだよね。

なぜAIは「雪の家」しか作れないのか

AIコーディングの本質的な問題は、パクりコードの寄せ集めだということ。GitHubにあるコードや、Stack Overflowの回答、チュートリアルサイトのサンプルコード...そういうのを適当につなぎ合わせてるだけ。

だから、全体としての整合性がない

例えば:

  • フロントエンドはReact(の古いバージョン)
  • バックエンドはFlask(セキュリティガバガバ)
  • データベースはSQLite(本番環境に不適)

それぞれは動くかもしれないけど、組み合わせた時の整合性なんて考えてない。

しかも、AIって「高機能にしよう」とする傾向があるから、こっちは「簡単なブログシステム」って言ったのに、勝手にユーザー認証機能、コメント機能、管理画面、メール通知機能...なんでもかんでも付けてくる。

結果、複雑すぎて自分でも理解できない「雪の家」の完成。

イメージで言えば「子供のお遊び」レベル。試験的なものとか、とりあえず見かけ上動いているデモとか、そういうレベルなら全然イイんだけどね。本格的な開発には使えない。

ワンショットコードの現実

結論から言うと、AIがワンショットで出してくるコードで、そのまま動くものなんてほぼない。たまに動くとしても、それは本当に簡単なものか、運が良かっただけ。

「Hello World」レベルなら動くかもしれないけど、実用的なアプリケーションを作ろうと思ったら、結局は自分で書き直すことになる。それなら最初から自分で書いた方が早いんじゃないか?って思うよね。

発見:プロジェクト完成度の法則

数ヶ月間のAIコーディング格闘を通じて、重要な法則を発見した。これを「プロジェクト完成度の法則」と呼んでいる。

【プロジェクト完成度の法則】

  • 100%完成しているプロジェクト → そのまま完成度高いレベルで使える
  • 0%から始めるプロジェクト → AIでの成功率は0%

この法則は、家の建築に例えるとよく分かる。

雪で作った家は気温で溶ける。泥の家も雨で崩れる。でも、鉄筋コンクリートの家は台風が来ても大丈夫。AIが生成するコードは、見た目は立派だけど、構造的には「雪の家」「泥の家」レベルなんだよね。

つまり、屋台骨ができるまでは自力でやらないとダメ。やっぱり家と一緒だよねえ。

ゴミコードリポジトリの完成

気がついたら、自分のGitHubリポジトリには、「何か分からん状態で大量ゴミぶら下げて動いているプロジェクト」が量産されていた。本当に情けなくなるよ...

コミットログを見ると、「AI生成コード追加」「修正1」「修正2」「また修正」「やっぱり書き直し」みたいな感じで、まともな開発の軌跡が全然ない。

プロジェクト完成度の法則に基づく正しい開発戦略

この法則を理解してから、開発戦略を根本的に見直した。

鉄筋コンクリートの家を建てる手順

STEP1:自力で屋台骨を構築(0%→30%)

  • プロジェクト構造の設計
  • 基本的なアーキテクチャ
  • コア機能の実装
  • セキュリティ設計

STEP2:機能別スニペット集で補強(30%→80%)

  • データベース接続のスニペット
  • ユーザー認証のスニペット
  • APIエンドポイントのテンプレート
  • フロントエンドのコンポーネント

STEP3:AIに細部の作業を依頼(80%→100%)

  • テストコードの自動生成
  • ドキュメント作成
  • コードレビュー
  • バグの原因調査

完成度別:AIとの適切な付き合い方

0%-30%(構築期):AIに依存してはダメ

  • 全体設計は自分で考える
  • コア機能は自分で実装
  • セキュリティは自分で設計

30%-80%(成長期):選択的にAIを活用

  • 動作が確認できる小さな機能単位で利用
  • 既存コードとの整合性を常にチェック
  • 必ず自分でテストしてから組み込む

80%-100%(仕上げ期):AIに丸投げOK

  • 動かない原因調査とか、そういう難解な作業
  • テスト自動化
  • ドキュメント整備
  • メンドクサイものはAIに丸投げがベター

プロジェクト完成度の法則が教えてくれること

この法則から分かるのは、ある程度プログラム経験者なら理解できる重要な真実:

結局、最初からAI提案のものは「どっかのパクりコードの寄せ集め」に過ぎない。ワンショットで出されたコードは、ほぼ動かないと考えた方がいい。たまたまラッキーなものや、難易度の低いものは可能だが、それは例外。

気がついたら、自分のGitHubリポジトリには「何か分からん状態で大量ゴミぶら下げて動いているプロジェクト」が量産されていた。本当に情けなくなるな...

でも、この経験も無駄じゃなかった。プロジェクト完成度の法則を発見できたからね。

これからのプログラミング学習

これから何年かこの業界にいると思うけど、やっぱり基本的なプログラミング能力は必要だと思う。AIがコード書いてくれても、それを読んで理解できなかったら意味がない。

特に、ある程度のプログラム経験者なら、AIが生成したコードの問題点は分かってくると思う。逆に、初心者がいきなりAI使ってコード書こうとすると、もっと大変なことになりそう。

「AIがあるから勉強しなくていい」じゃなくて、「AIを使いこなすために基本を学ぼう」って考え方の方が建設的だよね。

まとめ:プロジェクト完成度の法則を活用しよう

【プロジェクト完成度の法則】

  • 100%完成 → 完成度高いレベル
  • 0%スタート → 成功率0%

この法則を理解して、適切にAIを活用すれば、開発効率は格段に向上する。雪の家じゃなく、鉄筋コンクリートの家を建てよう。

屋台骨は自力で。細部はAIと協力で。面倒な作業はAIに丸投げで。

この使い分けができれば、AIコーディングも怖くない。また面白いネタがあったら書いてみるつもりです。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?