「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でプログラムを作る手順は、以下の通りです。
- 何を作るのかを明確にする(例:「C#でAPIを作りたい」)
- ChatGPTに具体的な指示を出す(「ASP.NET Coreを使って、JWT認証付きのAPIを作って」)
- 出力されたコードを確認し、修正が必要か判断する
- 実際に実行して、動作確認を行う
- 問題点を修正し、最終的な形に仕上げる
この流れを踏まえて、 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のコードの問題点
- シークレットキーがハードコーディングされている
Your_Secret_Key_Here
という固定値をコード内に書いているが、
これは 環境変数や構成ファイル(appsettings.json)に分けるべき。- 対策:
builder.Configuration["JwtSettings:SecretKey"]
で外部設定化するべき。
- ユーザー認証がハードコード
if (request.Username == "admin" && request.Password == "password")
のように、
固定のユーザー情報をチェックするだけになっている。- 対策: データベースを使って、実際のユーザー情報を参照するようにする。
- エラーハンドリングが不足
- 例えば、無効なトークンの場合のハンドリングがないため、
不正アクセスの対策が不十分。
- 例えば、無効なトークンの場合のハンドリングがないため、
【まとめ】
✅ ChatGPT プログラミングを使えば、短時間で基本的なAPIが作成できる
✅ エンジニアの手を大幅に省略できるため、積極的に活用すべき
⚠️ ただし、コードの安全性や最適化は自分でチェックする必要がある
【第2章】ChatGPTのコードは実用可能なのか?
1. 実用的なコードかどうかの基準
ChatGPTで生成されたコードが 「そのまま業務で使えるか?」 を判断するには、以下のポイントを確認する必要があります。
✅ 実用的なコードの基準
- 実行時エラーがなく、安定して動作するか?
- セキュリティリスクがないか?(APIキーの管理、認証・認可、SQLインジェクション対策など)
- コードの可読性・保守性が高いか?(リーダブルなコードになっているか?)
- 拡張性があるか?(機能追加や修正がしやすい設計になっているか?)
- 実務の要件に合っているか?(実際のプロジェクトでそのまま使えるか?)
この基準に基づいて、ChatGPTが出力したコードをチェックしていきます。
2. ChatGPTのコードの強みと弱み
✅ ChatGPTのコードの強み
- 手軽にコードを生成できる
- 数秒でコードが出てくるため、開発スピードが大幅に向上。
- 特に、ボイラープレート(定型的なコード)を省略できるのが強み。
- 複数の技術スタックに対応できる
- ChatGPTは、C#だけでなく Python、JavaScript、Go、PHP など幅広い言語のコードを出力可能。
- 言語間の比較や変換 もできるため、技術の幅が広がる。
- エラーの原因を解析し、修正方法を提案してくれる
- ChatGPTに「このエラーが出たんだけど?」と聞くと、
エラーの原因と修正方法を説明してくれる。 - 特にデバッグ作業の効率化に役立つ。
- ChatGPTに「このエラーが出たんだけど?」と聞くと、
❌ ChatGPTのコードの弱み
- コードの正確性が100%ではない
- ChatGPTは 間違ったコードを出力することがある。
- 例えば、「ASP.NET CoreでJWT認証を実装して」と指示すると、
一部のバージョンで非推奨のコードが出てくる場合がある。 - そのままコピペせず、必ず動作検証が必要!
- 最適化されていないコードが多い
- ChatGPTのコードは 基本的な動作を優先している ため、
パフォーマンスの最適化が不十分なことが多い。 - 例えば、データベースアクセスのコードを出力させると、
N+1問題が発生するような非効率なSQLを作る場合がある。
- ChatGPTのコードは 基本的な動作を優先している ため、
- セキュリティが考慮されていない場合がある
- 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を書いて
👆 これでは、 具体的な技術要件がわからないため、適当なコードしか出てこない。
【ポイント】良いプロンプトの書き方
- 技術スタックを明確にする(C# / ASP.NET Core / PostgreSQL など)
- 目的を明確にする(「JWT認証付きのAPIを作成」など)
- 要件を詳細に書く(「パスワードはハッシュ化」「トークンの有効期限1時間」など)
- シンプルな実装を求める場合は、その旨を伝える(「できるだけシンプルなコードで」)
ChatGPTを使いこなすには、 「何を作りたいか?」をしっかり伝えることが重要 です。
2. 出力したコードを見極める力が必要
ChatGPTのコードを そのままコピペして使うのはNG です。
出力されたコードには、エラーや非効率な実装が含まれている可能性がある ため、
エンジニア自身が コードの品質をチェックするスキル が求められます。
✅ チェックすべきポイント
- エラーがないか?(実行して問題なく動くか?)
- セキュリティの考慮がされているか?(APIキー、認証、SQLインジェクション対策)
- 可読性が高いか?(関数が適切に分割されているか?)
- 拡張性があるか?(後から機能追加しやすい設計か?)
これらを意識すれば、「ChatGPT プログラミング」を 実用レベルまで引き上げることができます。
3. 要件定義すらChatGPTにやらせていい
ChatGPTは、 要件定義や設計のサポート にも活用できます。
例えば、
「ECサイトを作りたいが、どんな機能が必要?」
と質問すると、以下のような回答を得ることができます。
✅ ChatGPTの回答例
ECサイトを開発する場合、以下の機能が必要です。
1. ユーザー管理
- ユーザー登録、ログイン、パスワードリセット
- プロフィール編集
2. 商品管理
- 商品の追加、編集、削除
- カテゴリ管理
- 在庫管理
3. カート・注文管理
- カート機能
- 注文履歴の表示
- 支払い処理(クレジットカード、PayPal など)
4. 配送管理
- 配送先住所の登録
- 配送状況の確認
👆 これを そのまま要件定義書のたたき台にできる のです!
【結論】要件定義 × ChatGPTの活用方法
✅ 「大まかな仕様」を伝えれば、ChatGPTが詳細な要件を整理してくれる
✅ エンジニアの設計作業を大幅に短縮できる
✅ ただし、最終的な要件は人間がチェックすることが重要!
【まとめ】ChatGPTを活用してプログラミングをすべきか?
ここまで、「ChatGPT プログラミング」が どこまで実用的なのか? を検証してきました。
結論として、ChatGPTを活用すれば、プログラミングは可能!むしろ使うべき!
しかし、「そのままのコードを信用して使うのは危険」であり、適切に活用する力が求められる ということが分かりました。
ChatGPTを活用すべき理由
✅ コードを書く時間を圧倒的に削減できる
✅ 複数の言語やフレームワークに対応している
✅ エラーの修正やデバッグにも役立つ
✅ 設計や要件定義もサポートできる
ChatGPTのコードをそのまま使ってはいけない理由
❌ コードの最適化がされていない場合がある
❌ セキュリティリスクが考慮されていないことがある
❌ バージョンによっては動かないコードを出力することも
つまり、ChatGPTは「エンジニアの補助ツール」として最適だが、「完全自動で開発できるツール」ではない。
エンジニア自身が、コードの品質を見極める目を持つことが必要 です。
「ChatGPT プログラミング」を活用するためのポイント
- 適切なプロンプトを作ることが最重要
- 出力されたコードを必ずレビューする
- 実行・デバッグして、問題点を洗い出す
- ChatGPTに要件定義や設計をサポートさせる
この4つを意識すれば、「ChatGPT プログラミング」を 実用レベルまで引き上げることが可能 です。
【最後に】ChatGPTを活用してプログラミングを始めよう!
「ChatGPTでプログラミングができるのか?」の答えは、YES!
ただし、「正しく使いこなせるかどうか?」が鍵となります。
もし、ChatGPTを活用した開発に興味がある、Webアプリを作りたい!という方は、ぜひタイムバースにご相談ください。
相場の半分の価格で、高品質な開発を提供します!