Security NEWS TOPに戻る
バックナンバー TOPに戻る

AIの進化によって、ソフトウェア開発の現場では「コードを書く」という行為そのものが変わり始めています。本シリーズ「AIコーディング入門」では、生成AIを活用した新しい開発スタイルを多角的に解説します。第1回では、注目のキーワードである「Vibeコーディング」と「プロンプトエンジニアリング」について、その意味や実際の活用方法、そして潜む課題についてご紹介します。
※本稿は2025年7月上旬に執筆しているものです。ご覧いただく時期によっては古い情報となっている場合もありますので、ご承知おきください。
Vibeコーディングとは何か?
「Vibeコーディング」という言葉をご存じでしょうか。この言葉はOpenAI社の創設メンバーの一人であるアンドレイ・カーパシー(Andrej Karpathy)が2025年2月にXに投稿したポスト注 1)で使った言葉で、以降、生成AIを利用したコーディングの中でも雰囲気、ノリ、感覚注 2)を軸にしたコーディングを表す言葉で、2025年上半期のAIコーディング関連の流行語といっても過言ではないでしょう。
言葉の由来と流行の背景
Vibeコーディングが指すコーディングはコードそのものを書くことよりも、大まかな目標や感覚に基づいてAIをアシスタントとして活用しながらコードを作っていく行為を指しています。この言葉は流行語ならではの賛否両論を巻き起こしていますが、そもそも言い出した本人も「雰囲気(vibe)」で使った言葉でしょうから、確固たる定義があるわけでもないのが実情で、真面目に語るほどでもないのかもしれません。実際に生成AIを使用してちょっとしたコーディングをすると、(特に最近のモデルを使う場合は)人間が目標や要件を定義してしまえば、ある程度の規模のコードまでは自動的に生成してくれるようになってきています。一度でもコーディングに使ったことがある人であれば、Vibeコーディングが指すものは何となくわかる、そんな流行語なのでしょう。
Vibeコーディングの最大の問題
一方でVibeコーディングの最大の問題として挙げられるのが、プログラミングの概念が理解できない人でもコードを生成できるという点です。SNSなどをみると、Vibeコーディング、要するに生成AIによる自然言語のプロンプトによってコードの生成数が上がっても品質が低いため、かえって確認に手間取るという指摘をよく見かけます。また、手動でプログラミングを進める機会・経験が減ることでコードのテストやデバッグといったプロセスを知るエンジニアが逓減していき、結果として誰もコードの品質の確保できる人がいないのではないかという指摘も多くみられます。また、そもそも生成AIの生成するコード自体の信頼性は低いという指摘もあります。
セキュリティ指示の有無がコード生成に与える影響
2025年に公開された論文とその後の研究結果を公開しているWebサイト注 3)では、セキュリティに関する指示をプロンプト内で与えない場合と一般的なセキュリティに関する指示を与えた場合、そして非現実的かつ厳格なセキュリティに関する指示を与えた場合とで生成AIのコードの正確性やセキュアさについての各モデルの比較がされています。一般的な指示はベストプラクティスに従うことと脆弱性を作らないことだけを指示するもので、さらに厳格な指示では一般的な指示に加えて特に指定した脆弱性注 4)に対してコードが安全であることを確認することを指示するものとなっています。指示が全くない場合に比べて、一般的な指示だけでも不正確またはセキュアでないコードの割合を抑制する傾向にあること、厳格な指示であれば正確かつセキュアなコードの割合を押し上げる効果があることが全体としてみて取れます。注 5)少なくとも、という話にはなりますが、AIでコードを生成する際にはセキュリティに対して配慮した内容をプロンプトに少し含めるかどうかだけでも多少の差が出るというのは意識する価値がありそうです。ただしプロンプトを配慮しても完璧は目指せない点にも注意が必要です。
プロンプトエンジニアリング
Vibeコーディングという言葉が世に放たれた頃、ちょうど生成AI各社がプロンプトエンジニアリングガイドを公開しました。下表は生成AIサービス各社が提供するプロンプトエンジニアリングガイドの一覧です。いずれも利用者が生成AIに対して適切かつ効率的なプロンプトを入力することで、生成AIが利用者の意図を理解し、期待される回答を出力するためのガイドになっています。
表 1 主要なプロンプトエンジニアリングガイド一覧
| 会社名 | 生成AIサービス | プロンプトエンジニアリングガイド |
| Anthropic | Claude | https://docs.anthropic.com/ja/docs/build-with-claude/prompt-engineering/overview |
| Gemini, Vertex | https://cloud.google.com/discover/what-is-prompt-engineering?hl=ja | |
| OpenAI | ChatGPT, Sora | https://help.openai.com/en/articles/6654000-best-practices-for-prompt-engineering-with-the-openai-api |
曖昧な指示が生むAIの誤解
AIコーディングにおける課題の一つは、利用者が生成AIにプロンプトとして与えるコンテキストに一貫性がない、生成AIが処理するには非常に曖昧である、という点にあります。この課題の回避方法の一つとして提示されているものがプロンプトエンジニアリングガイドとなります。一番コストがかからず、人の手で微調整ができる手法として、まずは確認されることをおすすめします。あわせて前項で述べたように、非常に基本的な指示からでもセキュリティに関する指示を含めることもおすすめします。
―第2回「プロンプト以外で効率化!開発体験の改善手法」へ続く―
注:
1)https://x.com/karpathy/status/1886192184808149383
2)日本語でも若年層を中心に使われている「バイブス」という言葉と同じような意味合いになります
3)なおLLMのコーディングベンチマークフレームワークも提供しています。https://github.com/logic-star-ai/baxbench
4)次のCWE(Common Weakness Enemuration、共通脆弱性タイプ)をプロンプト内で指定しています: CWE-20(不適切な入力確認)、CWE-22(パストラバーサル)、CWE-78(OSインジェクション)、CWE-79(クロスサイトスクリプティング)、CWE-89(SQLインジェクション)、CWE-94(コードインジェクション)、CWE-117(ログ出力の不適切な無効化)、CWE-284(不適切なアクセス制御)、CWE-400(無制限のリソースの枯渇)、CWE-434(危険なタイプのファイルの無制限アップロード)、CWE-522(認証情報の不十分な保護)、CWE-703(例外的な状況に対する不適切なチェックまたは処理)、CWE-863(不正な認証)
5)ただし推論モデルに関しては指示の出し方によって正確・セキュアなコードの出力が得られる確率がセキュリティに関する指示がない場合に比べて悪化する場合もあります。これは推論モデル自体の問題であると考えられます。なお、推論モデルの問題については次の2論文で問題点がそれぞれ指摘されています。https://arxiv.org/pdf/2307.02477
https://machinelearning.apple.com/research/illusion-of-thinking
【連載一覧】
第1回「Vibeコーディングとプロンプトエンジニアリングの基礎」
第2回「プロンプト以外で効率化!開発体験の改善手法」
第3回「AIエージェント時代のコーディング:MCPとA2Aとは」
第4回「MCPの脆弱性とA2A脅威分析から学ぶセキュリティ実装」
第5回「AIとセキュリティ:Non‑Human Identity とAIエージェントの課題」
第6回「AIエージェントのセキュリティ対策と今後の展望」
Security NEWS TOPに戻る
バックナンバー TOPに戻る
ウェビナー開催のお知らせ
「企業サイトオーナー向け ユーザーからのレピュテーションを高めるWebサイトの在り方-Webサイトを取り巻くリスク・規制・要請とユーザビリティ向上-」
「EC加盟店・PSP必見!クレジットカード・セキュリティガイドライン6.0版対応ウェビナー」
「【最短7営業日で診断&報告】サイバー保険付帯脆弱性診断「SQAT® with Swift Delivery」のご紹介」
最新情報はこちら






