お役立ち情報

ChatGPTだけで作ったシステムは実用可能なのか?

「ChatGPTでプログラミングをするとどこまで実用的なのか?」
これは、プログラミング初心者だけでなく、経験豊富なエンジニアにとっても気になるテーマではないでしょうか。

最近では、ChatGPTを活用してコードを書いているエンジニアが増えています。
「ChatGPTにコードを書かせるだけで開発ができるのでは?」という意見もある一方で、
「ChatGPTのコードは本当に実用レベルなのか?」と疑問を持つ人も少なくありません。

本記事では、 実際にChatGPTを使ってプログラムを作成し、どこまで実用可能なのかを徹底検証 します。
C#のバックエンドエンジニアとして7年間の開発経験を持つ筆者が、 ChatGPTのプログラミング能力を実際に試し、率直な感想をお伝えします。

ChatGPTでプログラミングをするメリットとは?

ChatGPTは、質問を投げるだけでコードを出力してくれます。
そのため、「ChatGPT プログラミング」を活用すれば、 コードを書く時間を大幅に短縮 することができます。
特に、 繰り返し使う処理や定型的なコードを一瞬で出力できる のは、大きなメリットです。

また、ChatGPTはプログラミングに関する 設計やアーキテクチャの提案 も行えます。
たとえば、

  • 「C#で認証機能付きのAPIを作りたい」
  • 「フロントエンドとバックエンドを分離して開発する方法を教えて」
  • 「特定の業務を自動化するスクリプトを作って」

といった 抽象的な指示でも、それなりに完成度の高い回答が返ってくる のです。

ChatGPTでプログラミングするデメリットとは?

一方で、 ChatGPTが出力するコードは100%完璧ではありません。
間違いもありますし、 セキュリティや最適化の観点が抜け落ちていることもあります。

また、 「ChatGPT プログラミング」を活用するには、指示の出し方が重要 になります。
適当に「C#でAPIを書いて」とお願いしても、実用的なコードは出てきません。
大事なのは、 適切なプロンプト(指示)を出し、生成されたコードを正しく見極めること です。

本記事で検証すること

本記事では、 実際にChatGPTを使ってC#のプログラムを作成し、それが本当に実用可能なのかを検証 します。

具体的には、
✅ ChatGPTでAPIを作ってみる
✅ そのまま実行できるのか?修正が必要なのか?
✅ 実務レベルで通用するコードなのか?

これらを C#のエンジニア視点で詳しく解説 していきます。

「ChatGPT プログラミング」を活用したいけど、どこまで使えるのか分からない……という方は、ぜひ最後まで読んでください!

【第1章】ChatGPTでプログラムを作る流れ

「ChatGPT プログラミング」を活用して、実際にプログラムを作る流れを見ていきましょう。
本章では、 C#でAPIを作成する例 を取り上げ、ChatGPTにどのような指示を出せばいいのか、出力されたコードがどの程度使えるのかを検証します。

1. ChatGPTでプログラミングを始めるには?

ChatGPTでコードを生成する流れ

ChatGPTでプログラムを作る手順は、以下の通りです。

  1. 何を作るのかを明確にする(例:「C#でAPIを作りたい」)
  2. ChatGPTに具体的な指示を出す(「ASP.NET Coreを使って、JWT認証付きのAPIを作って」)
  3. 出力されたコードを確認し、修正が必要か判断する
  4. 実際に実行して、動作確認を行う
  5. 問題点を修正し、最終的な形に仕上げる

この流れを踏まえて、 ChatGPTにAPIのコードを書かせてみましょう。

2. 実際にコードを作ってみる(C#でAPIを作る)

今回は、「JWT認証付きのASP.NET Core Web API」を作成することをChatGPTに指示してみます。
具体的には、以下のプロンプトを入力します。

「C#のASP.NET Coreで、JWT認証付きのAPIを作成してください。ユーザー登録とログイン機能を実装し、ログイン時にJWTを発行するようにしてください。」

すると、ChatGPTは以下のようなコードを出力しました。

using Microsoft.AspNetCore.Authentication.JwtBearer;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using Microsoft.IdentityModel.Tokens;
using System.IdentityModel.Tokens.Jwt;
using System.Security.Claims;
using System.Text;

var builder = WebApplication.CreateBuilder(args);

// JWT認証の設定
var key = Encoding.ASCII.GetBytes("Your_Secret_Key_Here");
builder.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
    .AddJwtBearer(options =>
    {
        options.TokenValidationParameters = new TokenValidationParameters
        {
            ValidateIssuerSigningKey = true,
            IssuerSigningKey = new SymmetricSecurityKey(key),
            ValidateIssuer = false,
            ValidateAudience = false
        };
    });

builder.Services.AddAuthorization();
builder.Services.AddControllers();

var app = builder.Build();

app.UseAuthentication();
app.UseAuthorization();
app.MapControllers();

app.Run();

// コントローラー
[ApiController]
[Route("api/auth")]
public class AuthController : ControllerBase
{
    [HttpPost("login")]
    public IActionResult Login([FromBody] LoginRequest request)
    {
        if (request.Username == "admin" && request.Password == "password")
        {
            var tokenHandler = new JwtSecurityTokenHandler();
            var key = Encoding.ASCII.GetBytes("Your_Secret_Key_Here");
            var tokenDescriptor = new SecurityTokenDescriptor
            {
                Subject = new ClaimsIdentity(new[] { new Claim(ClaimTypes.Name, request.Username) }),
                Expires = DateTime.UtcNow.AddHours(1),
                SigningCredentials = new SigningCredentials(new SymmetricSecurityKey(key), SecurityAlgorithms.HmacSha256Signature)
            };
            var token = tokenHandler.CreateToken(tokenDescriptor);
            return Ok(new { Token = tokenHandler.WriteToken(token) });
        }
        return Unauthorized();
    }
}

public class LoginRequest
{
    public string Username { get; set; }
    public string Password { get; set; }
}

3. 実行してみた結果

出力されたコードをそのまま実行したところ、 エラーなく動作しました。
しかし、実際に「ChatGPT プログラミング」を活用する上で、以下の 改善点 が見つかりました。

✅ ChatGPTのコードの良い点

  • 基本的な構造はしっかりしている(認証、ルーティング、トークン発行ができている)
  • 設定が簡潔で読みやすい
  • そのままでも動作するレベルのコードを生成

❌ ChatGPTのコードの問題点

  1. シークレットキーがハードコーディングされている
    • Your_Secret_Key_Here という固定値をコード内に書いているが、
      これは 環境変数や構成ファイル(appsettings.json)に分けるべき
    • 対策: builder.Configuration["JwtSettings:SecretKey"] で外部設定化するべき。
  2. ユーザー認証がハードコード
    • if (request.Username == "admin" && request.Password == "password") のように、
      固定のユーザー情報をチェックするだけになっている
    • 対策: データベースを使って、実際のユーザー情報を参照するようにする。
  3. エラーハンドリングが不足
    • 例えば、無効なトークンの場合のハンドリングがないため、
      不正アクセスの対策が不十分

【まとめ】

ChatGPT プログラミングを使えば、短時間で基本的なAPIが作成できる
エンジニアの手を大幅に省略できるため、積極的に活用すべき
⚠️ ただし、コードの安全性や最適化は自分でチェックする必要がある

【第2章】ChatGPTのコードは実用可能なのか?

1. 実用的なコードかどうかの基準

ChatGPTで生成されたコードが 「そのまま業務で使えるか?」 を判断するには、以下のポイントを確認する必要があります。

✅ 実用的なコードの基準

  1. 実行時エラーがなく、安定して動作するか?
  2. セキュリティリスクがないか?(APIキーの管理、認証・認可、SQLインジェクション対策など)
  3. コードの可読性・保守性が高いか?(リーダブルなコードになっているか?)
  4. 拡張性があるか?(機能追加や修正がしやすい設計になっているか?)
  5. 実務の要件に合っているか?(実際のプロジェクトでそのまま使えるか?)

この基準に基づいて、ChatGPTが出力したコードをチェックしていきます。

2. ChatGPTのコードの強みと弱み

✅ ChatGPTのコードの強み

  1. 手軽にコードを生成できる
    • 数秒でコードが出てくるため、開発スピードが大幅に向上。
    • 特に、ボイラープレート(定型的なコード)を省略できるのが強み
  2. 複数の技術スタックに対応できる
    • ChatGPTは、C#だけでなく Python、JavaScript、Go、PHP など幅広い言語のコードを出力可能
    • 言語間の比較や変換 もできるため、技術の幅が広がる。
  3. エラーの原因を解析し、修正方法を提案してくれる
    • ChatGPTに「このエラーが出たんだけど?」と聞くと、
      エラーの原因と修正方法を説明してくれる
    • 特にデバッグ作業の効率化に役立つ

❌ ChatGPTのコードの弱み

  1. コードの正確性が100%ではない
    • ChatGPTは 間違ったコードを出力することがある
    • 例えば、「ASP.NET CoreでJWT認証を実装して」と指示すると、
      一部のバージョンで非推奨のコードが出てくる場合がある
    • そのままコピペせず、必ず動作検証が必要!
  2. 最適化されていないコードが多い
    • ChatGPTのコードは 基本的な動作を優先している ため、
      パフォーマンスの最適化が不十分なことが多い
    • 例えば、データベースアクセスのコードを出力させると、
      N+1問題が発生するような非効率なSQLを作る場合がある
  3. セキュリティが考慮されていない場合がある
    • JWT認証の例でも、シークレットキーがハードコードされていた
    • SQLインジェクションやCSRF対策が不足していることもある。
    • 実際に本番環境で使う場合は、セキュリティ対策を自分で補完する必要がある!

3. ChatGPTのコードを実用レベルにするためのポイント

ChatGPTで出力されたコードを そのまま業務で使うのは危険 です。
では、どうすれば実用的なコードにできるのでしょうか?

① 出力されたコードをレビューする

  • エンジニア自身が、コードの問題点をチェックすることが必須
  • セキュリティ、パフォーマンス、可読性を意識して修正する。
  • GitHub CopilotやSonarQubeなどのツールと併用するとさらに安全!

② プロンプト(指示文)を工夫する

  • 「シンプルにAPIを作って」ではなく、要件を詳細に伝える。
  • 例えば、
    「C#でASP.NET CoreのWeb APIを作成してください。JWT認証付きで、データベースにはPostgreSQLを使い、Entity Frameworkを用いてリポジトリパターンを採用してください。」
    のように 具体的な技術スタックを明示 すると、より良いコードが出力される。

③ 実行&デバッグして問題点を洗い出す

  • 出力されたコードをそのまま動かさず、まずはローカル環境でテストする
  • エラーが発生しないか?
  • パフォーマンスに問題はないか?
  • テストコードを併用して、コードの品質を担保する。

【第3章】ChatGPTを使いこなすには?

「ChatGPT プログラミング」は、適切に使えば 開発スピードを大幅に向上 させることができます。
しかし、ChatGPTの性能を 100%引き出すためには、適切な使い方が必要 です。

本章では、 ChatGPTを最大限に活用するためのテクニック を解説します。

3-1. AIに「いい指示」を出すことが重要

ChatGPTは 与えられた指示(プロンプト)に基づいてコードを出力 します。
つまり、 指示の出し方が適当だと、適当なコードしか出てこない のです。

では、「良いプロンプト」と「悪いプロンプト」の違いを見ていきましょう。

✅ 良いプロンプトの例

C#のASP.NET CoreでJWT認証付きのWeb APIを作成してください。
以下の要件を満たすようにしてください。

- データベース:PostgreSQL
- ORM:Entity Framework
- 認証方式:JWT(トークンの有効期限1時間)
- ユーザー登録&ログインAPIを実装
- ユーザー情報はデータベースに保存
- パスワードはハッシュ化(SHA-256 or bcrypt)
- DI(依存性注入)を使用
- できるだけシンプルなコードで実装

❌ 悪いプロンプトの例

C#でAPIを書いて

👆 これでは、 具体的な技術要件がわからないため、適当なコードしか出てこない

【ポイント】良いプロンプトの書き方

  1. 技術スタックを明確にする(C# / ASP.NET Core / PostgreSQL など)
  2. 目的を明確にする(「JWT認証付きのAPIを作成」など)
  3. 要件を詳細に書く(「パスワードはハッシュ化」「トークンの有効期限1時間」など)
  4. シンプルな実装を求める場合は、その旨を伝える(「できるだけシンプルなコードで」)

ChatGPTを使いこなすには、 「何を作りたいか?」をしっかり伝えることが重要 です。

2. 出力したコードを見極める力が必要

ChatGPTのコードを そのままコピペして使うのはNG です。
出力されたコードには、エラーや非効率な実装が含まれている可能性がある ため、
エンジニア自身が コードの品質をチェックするスキル が求められます。

✅ チェックすべきポイント

  1. エラーがないか?(実行して問題なく動くか?)
  2. セキュリティの考慮がされているか?(APIキー、認証、SQLインジェクション対策)
  3. 可読性が高いか?(関数が適切に分割されているか?)
  4. 拡張性があるか?(後から機能追加しやすい設計か?)

これらを意識すれば、「ChatGPT プログラミング」を 実用レベルまで引き上げることができます

3. 要件定義すらChatGPTにやらせていい

ChatGPTは、 要件定義や設計のサポート にも活用できます。

例えば、
「ECサイトを作りたいが、どんな機能が必要?」
と質問すると、以下のような回答を得ることができます。

✅ ChatGPTの回答例

ECサイトを開発する場合、以下の機能が必要です。

1. ユーザー管理
   - ユーザー登録、ログイン、パスワードリセット
   - プロフィール編集

2. 商品管理
   - 商品の追加、編集、削除
   - カテゴリ管理
   - 在庫管理

3. カート・注文管理
   - カート機能
   - 注文履歴の表示
   - 支払い処理(クレジットカード、PayPal など)

4. 配送管理
   - 配送先住所の登録
   - 配送状況の確認

👆 これを そのまま要件定義書のたたき台にできる のです!

【結論】要件定義 × ChatGPTの活用方法

「大まかな仕様」を伝えれば、ChatGPTが詳細な要件を整理してくれる
エンジニアの設計作業を大幅に短縮できる
ただし、最終的な要件は人間がチェックすることが重要!

【まとめ】ChatGPTを活用してプログラミングをすべきか?

ここまで、「ChatGPT プログラミング」が どこまで実用的なのか? を検証してきました。

結論として、ChatGPTを活用すれば、プログラミングは可能!むしろ使うべき!
しかし、「そのままのコードを信用して使うのは危険」であり、適切に活用する力が求められる ということが分かりました。

ChatGPTを活用すべき理由

コードを書く時間を圧倒的に削減できる
複数の言語やフレームワークに対応している
エラーの修正やデバッグにも役立つ
設計や要件定義もサポートできる

ChatGPTのコードをそのまま使ってはいけない理由

コードの最適化がされていない場合がある
セキュリティリスクが考慮されていないことがある
バージョンによっては動かないコードを出力することも

つまり、ChatGPTは「エンジニアの補助ツール」として最適だが、「完全自動で開発できるツール」ではない。
エンジニア自身が、コードの品質を見極める目を持つことが必要 です。

「ChatGPT プログラミング」を活用するためのポイント

  1. 適切なプロンプトを作ることが最重要
  2. 出力されたコードを必ずレビューする
  3. 実行・デバッグして、問題点を洗い出す
  4. ChatGPTに要件定義や設計をサポートさせる

この4つを意識すれば、「ChatGPT プログラミング」を 実用レベルまで引き上げることが可能 です。

最後に】ChatGPTを活用してプログラミングを始めよう!

「ChatGPTでプログラミングができるのか?」の答えは、YES!
ただし、「正しく使いこなせるかどうか?」が鍵となります。

もし、ChatGPTを活用した開発に興味がある、Webアプリを作りたい!という方は、ぜひタイムバースにご相談ください。
相場の半分の価格で、高品質な開発を提供します!

お問い合わせはこちらから!

お問い合わせはこちらから

30分の無料相談も実施中!
お気軽にお問い合わせください。

無料相談・お問い合わせ