【2026年8月最新】JavaScriptのconfirm()でOK・キャンセルの確認ダイアログを実装する方法|非エンジニア向け解説

【2026年7月最新】JavaScriptのconfirm()でOK・キャンセルの確認ダイアログを実装する方法|非エンジニア向け解説

「削除ボタンを押したときに『本当に削除しますか?』と聞きたい」「フォームを送信する前に、入力内容の確認を挟みたい」——Webサイトやシステムを運用していると、こうした「確認してから処理を進める」という仕組みが欲しくなる場面は数多くあります。

JavaScriptには、この「確認してから進める」を数行のコードで実現できるconfirm()というメソッドが標準で用意されています。特別なライブラリを追加する必要もなく、ブラウザに最初から組み込まれている機能なので、正しい書き方さえ覚えればすぐに使えます。

この記事では、confirm()の基本構文・戻り値の使い方・実務での実装例から、「なぜボタンの文言を『はい』『いいえ』に変えられないのか」「モダンな開発現場でconfirm()がどう扱われているのか」まで、非エンジニアの方にも分かるように順を追って解説します。

代表菅澤 代表菅澤
confirm()は「JavaScript入門」で必ず出てくる基本機能ですが、実務で使うと「ボタンの文言を変えたい」「もっとデザインをかっこよくしたい」という要望が必ず出てきます。この記事では、基本の使い方だけでなく、その「先」の話まで踏み込みます。
AI鬼管理山崎 AI鬼管理山崎
弊社では日々、お客様のLPやフォームの細かい挙動をClaude Codeで調整しています。confirm()のような小さなJavaScriptの仕組みを理解しておくと、「何を、誰に、どう頼めばいいか」の解像度が上がるので、経営者・管理職の方にも押さえておいてほしい内容です。

この記事を最後まで読むと、次の6つが明確になります。

✔️confirm()の基本構文と、OK/キャンセルを押したときの戻り値の仕組み
✔️if文を使った、確認結果に応じた処理の分岐方法
✔️フォーム送信前の確認ダイアログを実装する具体的なコード例
✔️confirm()の「はい」「いいえ」に文言を変更できない理由と、その回避方法
✔️モダンなブラウザでconfirm()がどう制限され始めているかという実態
✔️非エンジニアがAIエージェントにUI修正を依頼するときの考え方
Claude Code 完全解説セミナー|経営者・会社役員専用 1on1 60分 無料Claude Codeを経営に活かしたい方へ — AI鬼管理
📌 この記事の結論
【2026年8月最新】JavaScriptのconfirm()でOK・キャンセルの確認ダイアログを実装する方法|非エンジニア向け解説
JavaScriptのconfirm()でOK/キャンセルの確認ダイアログを出す方法を、構文・戻り値・実装例つきで解説。ボタン文言を変えられない理由や非推奨とされる背景、非エンジニアがAIエージェントに任せる方法まで紹介します。

01 confirm()とは何か JavaScriptに標準搭載された「確認ダイアログ」機能の正体

confirm()は、ブラウザに標準で組み込まれているJavaScriptのメソッドで、ユーザーに「OK」か「キャンセル」かを選ばせるポップアップ(ダイアログボックス)を画面に表示します。ライブラリの追加やHTMLの準備は一切不要で、JavaScriptのコードを1行書くだけで動作します。

📚 用語解説

confirm():ブラウザ標準のJavaScript機能の1つ。画面に「OK」「キャンセル」の2択ボタンを持つポップアップを表示し、ユーザーがどちらを押したかを真偽値(true / false)で受け取れる。特別な準備なしに、いきなりコード中で呼び出せる。

似た機能に、メッセージを表示するだけのalert()や、テキスト入力を求めるprompt()がありますが、confirm()は「ユーザーの意思確認をしてから処理を分岐させたい」場面に特化した機能です。削除・送信・退会・上書き保存など、「取り消しがきかない操作」の直前に使われることが多いのが特徴です。

📚 用語解説

window オブジェクト:ブラウザ上でJavaScriptを実行するときの「一番外側の入れ物」にあたるオブジェクト。confirm()やalert()、setTimeout()などのブラウザ標準機能は、実はすべてこのwindowオブジェクトのメソッドとして定義されている。

confirm()は正式にはwindow.confirm()という書き方が本来の姿です。ブラウザ上でJavaScriptを実行する場合、windowは「今表示しているタブ・ページ」を表すグローバルなオブジェクトで、その配下にあるメソッドはwindow.を省略して呼び出せるルールになっています。そのため、confirm('...')とwindow.confirm('...')は完全に同じ動作をする、まったく同じものです。

💡 window.を省略する理由

実務のコードでは「confirm(...)」と省略して書かれるのがほとんどです。window.を明示的に書いても動作は変わりませんが、コードの見た目がすっきりするため、この記事でも以降は省略形で統一します。

1-1. alert() / confirm() / prompt() の違い

この3つはいずれもブラウザ標準のダイアログ機能ですが、役割がはっきり分かれています。表で整理します。

メソッドボタン構成戻り値主な用途
alert()OKのみなし(undefined)通知・警告メッセージの表示
confirm()OK / キャンセルtrue または false「進めてよいか」の意思確認
prompt()OK / キャンセル + 入力欄入力文字列 または null簡易的なテキスト入力の取得

confirm()の最大の特徴は、ユーザーの選択結果がそのままtrue / falseという真偽値で返ってくる点です。この戻り値をif文と組み合わせることで、「OKが押されたときだけ処理を実行する」というシンプルな分岐が数行で書けます。詳しくは3章で解説します。

02 confirm()の書き方・基本構文 実際に手を動かして動作を確認する

confirm()の書き方は非常にシンプルです。カッコの中に、ダイアログに表示したいメッセージ(文字列)を渡すだけです。

confirm('本当に削除しますか?');

このコードが実行されると、画面に「本当に削除しますか?」というメッセージと、「OK」「キャンセル」の2つのボタンを持つポップアップがブラウザ標準のデザインで表示されます。ボタンの見た目や配置はブラウザ(Chrome、Safari、Edgeなど)ごとに微妙に異なりますが、動作の仕組みはすべて共通です。

⚠️ 「はい」「いいえ」という表記について

confirm()という名前や一部の解説記事のタイトルから「はい」「いいえ」ボタンをイメージする方がいますが、実際に表示されるボタンの文言は日本語環境のブラウザでは基本的に「OK」「キャンセル」です。「はい」「いいえ」という文言そのものに変更することはできません(理由は5章で詳しく解説します)。

confirm()は、呼び出された瞬間にその場でJavaScriptの実行を一時停止します。ユーザーがOKまたはキャンセルを押すまで、次の行のコードは実行されません。これは同期的(synchronous)な処理と呼ばれる性質で、非同期処理のようにコールバックやPromiseを使わなくても、「ダイアログが閉じられるまで待つ」という挙動が自然に実現できます。

📚 用語解説

同期処理(synchronous):コードを上から順番に、1行ずつ実行し終えてから次に進む処理方式。confirm()は呼び出された瞬間にその行で処理が止まり、ユーザーが応答するまで次のコードに進まない。裏を返すと、confirm()が表示されている間はそのページ内の他の操作(ボタンクリックやスクロールなど)も基本的に受け付けなくなる。


confirm()が
呼び出される

ブラウザが
ダイアログを表示
(処理が一時停止)

ユーザーが
OK/キャンセルを
クリック

true/falseが
戻り値として返る
(処理が再開)
💡 ブロックされるのは「そのタブ」だけ

confirm()が処理を止めるのは、あくまでそのダイアログを呼び出したタブ(ページ)だけです。他のタブや、別に開いているアプリの操作がすべて止まるわけではありません。ただし、そのページ自体は応答が返るまで一切操作できなくなる点は覚えておく必要があります。

03 戻り値で処理を分岐する true / false を使った条件分岐の書き方

confirm()の本当の使いどころは、「ダイアログを表示すること」自体ではなく、ユーザーの選択結果に応じて処理を変えることにあります。confirm()の戻り値は次のルールで決まります。

📚 用語解説

戻り値(return value):関数やメソッドを実行した結果として返ってくる値のこと。confirm()の場合、ユーザーがOKを押すとtrue、キャンセルを押す(または×で閉じる)とfalseという真偽値(boolean)が戻り値になる。

ユーザーの操作戻り値
OKボタンをクリックtrue
キャンセルボタンをクリックfalse
ダイアログを×で閉じる/Escキーを押すfalse(キャンセル扱い)

この戻り値を変数に受け取り、if文で判定するのが基本パターンです。

const result = confirm('本当に削除しますか?');

if (result) {
  // OKが押された場合の処理
  console.log('削除を実行しました');
} else {
  // キャンセルされた場合の処理
  console.log('削除をキャンセルしました');
}

変数resultには、OKならtrue、キャンセルならfalseが入ります。if文はtrueのときにブロック内の処理を実行する仕組みなので、if (result)と書くだけで「OKが押されたときだけ処理を進める」という制御が実現できます。

3-1. 変数を使わずに1行で書く方法

実務では、変数に一度受け取らず、confirm()の呼び出し結果を直接if文の条件式に書くパターンもよく使われます。

if (confirm('本当に削除しますか?')) {
  console.log('削除を実行しました');
} else {
  console.log('削除をキャンセルしました');
}

どちらの書き方でも動作は同じです。処理の結果を後で別の場所でも使い回したい場合は変数に入れておく方が扱いやすく、その場限りの判定であれば1行で書いてしまう方がシンプルです。

3-2. 三項演算子でさらに短く書く

分岐する処理が単純な場合は、三項演算子を使ってさらに短く書くこともできます。

📚 用語解説

三項演算子(条件演算子):「条件 ? Aの場合の値 : Bの場合の値」という形式で、if文よりも短く条件分岐を書ける記法。confirm()の戻り値のように、結果がtrue/falseの2択になる場面と特に相性が良い。

const message = confirm('保存しますか?') ? '保存しました' : '保存をキャンセルしました';
console.log(message);
💡 使い分けの目安

分岐後の処理が1行の値の代入や単純な出力で済むなら三項演算子、複数行の処理(DOM操作やAPI通信など)が必要ならif文、というのが読みやすさの観点での目安です。無理に三項演算子に統一する必要はありません。

Claude Code 完全解説セミナー|経営者・会社役員専用 1on1 60分 無料Claude Codeを経営に活かしたい方へ — AI鬼管理

04 フォーム送信前の確認ダイアログを作る 実務で最もよく使われる実装パターン

confirm()が最も実務で活躍するのが、フォームの送信前に「この内容で本当に送信してよいか」を確認する場面です。お問い合わせフォームや申込みフォームなどで、誤送信を防ぐ目的でよく使われます。

const form = document.getElementById('contact-form');

form.addEventListener('submit', function (event) {
  const ok = confirm('この内容で送信します。よろしいですか?');
  if (!ok) {
    // キャンセルされた場合は送信をキャンセルする
    event.preventDefault();
  }
});

📚 用語解説

addEventListener:HTML要素に対して「クリックされたら」「送信されたら」といったイベント(出来事)が起きたときに、実行する処理をあらかじめ登録しておくJavaScriptの仕組み。上記の例では「フォームが送信されようとしたとき」にconfirm()を呼び出す処理を登録している。

ポイントはevent.preventDefault()です。フォームのsubmitイベントは、何もしなければそのまま送信処理(ページ遷移や通信)に進んでしまいます。confirm()の戻り値がfalse(キャンセルされた)のときだけevent.preventDefault()を呼び出すことで、送信そのものを止めることができます。

✔️confirm()単体ではフォーム送信を止められない(あくまで確認ダイアログを出すだけ)
✔️送信を止めるにはevent.preventDefault()と組み合わせる必要がある
✔️キャンセル時にfalseが返る前提でロジックを書く(trueの場合は何もしなければ通常通り送信される)
✔️削除ボタンなど、リンクやボタンのクリック処理でも同じ考え方が使える

4-1. 削除ボタンでの確認ダイアログの例

フォーム送信だけでなく、一覧画面の「削除」ボタンにconfirm()を仕込むのも典型的な使い方です。

const deleteButton = document.getElementById('delete-btn');

deleteButton.addEventListener('click', function () {
  if (confirm('このデータを削除します。元に戻せませんが、よろしいですか?')) {
    // ここに実際の削除処理(APIへのリクエストなど)を書く
    console.log('削除処理を実行');
  }
});
⚠️ 確認メッセージは具体的に書く

「本当によろしいですか?」のような曖昧な文言だけでは、ユーザーは何に対して確認を求められているのか判断しづらくなります。「このデータを削除します。元に戻せませんが、よろしいですか?」のように、何が起きるか・取り消せるかまで明記するのがベストプラクティスです。

AI鬼管理山崎 AI鬼管理山崎
「削除ボタンを押したら一瞬で消えてしまった」というのは、業務システムにおける典型的な事故パターンです。confirm()を1つ挟むだけで防げる事故は多いので、非エンジニアの方でも「ここにconfirmが欲しい」と気づけるようになると、システム改修の会話がスムーズになります。

05 confirm()の限界とカスタマイズできない理由 なぜ「はい」「いいえ」という文言に変えられないのか

多くの人がconfirm()を使い始めて最初にぶつかる壁が、「OK」「キャンセル」というボタンの文言を変更できないという制約です。「はい」「いいえ」にしたい、「削除する」「やめる」にしたい、という要望はよくありますが、confirm()単体ではこれを実現できません。

📚 用語解説

モーダルダイアログ:画面の一部を覆う形で表示され、閉じる(応答する)までは背後の画面を操作できない種類のポップアップ。confirm()が表示するダイアログはこのモーダルダイアログの一種で、ブラウザのOSレベルの機能として実装されている。

この理由は、confirm()が表示するダイアログがブラウザ(あるいはOS)が管理するネイティブな部品であり、Webページ側のHTML・CSSの管理下にないためです。開発者がJavaScriptで渡せるのはメッセージ本文の文字列だけで、ボタンのラベル・色・フォント・配置は一切変更できない設計になっています。

カスタマイズしたい項目confirm()で可能か
メッセージ本文の文字列◯ 可能(引数で渡せる)
ボタンの文言(OK/キャンセル以外に変更)✕ 不可能
ダイアログの色・デザイン✕ 不可能
ボタンの数(3択にするなど)✕ 不可能(OK/キャンセルの2択固定)
本文にHTML(太字・改行タグなど)を使う✕ 不可能(プレーンテキストのみ)
💡 なぜこの制約が「意図的な設計」なのか

ボタンの文言や見た目を自由に変えられてしまうと、悪意のあるサイトが本物のブラウザの警告メッセージそっくりのダイアログを偽装して、ユーザーを騙すことが可能になってしまいます。confirm()の「地味で変更できない」見た目は、むしろ「これはブラウザ自身が出している確認である」とユーザーに信頼させるための設計と言えます。

5-1. 改行や装飾もできない

confirm()のメッセージは基本的に1つの文字列として扱われ、HTMLタグは反映されません。改行を入れたい場合は、文字列の中に改行コード(\n)を含めることで対応できます。

confirm('以下の内容で送信します。\n\nお名前:山田太郎\nメール:example@example.com\n\nよろしいですか?');

\nは改行を表す特殊な記号で、多くのブラウザでこの記法による改行はダイアログ内で反映されます。ただし、太字や色付けといった装飾はどのブラウザでも一切反映されません。これも「見た目を自由に変えられない」という制約の一部です。

06 カスタムダイアログを自作する方法 デザインを自由にしたいときの実装アプローチ

「ボタンの文言をブランドに合わせたい」「デザインをサイトの雰囲気に統一したい」という要望がある場合、confirm()そのものをカスタマイズすることは諦めて、HTML・CSS・JavaScriptで確認ダイアログを自作するのが現実的な解決策です。アプローチは大きく2種類あります。

6-1. div要素とCSSで自作する(従来の方法)

最もよく使われてきた方法は、非表示にしたdiv要素を用意しておき、必要なタイミングでCSSの表示・非表示を切り替える手法です。

<div id="custom-dialog" class="dialog-overlay" style="display:none;">
  <div class="dialog-box">
    <p>本当に削除しますか?</p>
    <button id="dialog-ok">削除する</button>
    <button id="dialog-cancel">やめる</button>
  </div>
</div>

この方法では、ボタンの文言(「削除する」「やめる」など)もデザインも完全に自由になります。ただし、confirm()と違って「呼び出したその場でtrue/falseが返ってくる」わけではない点に注意が必要です。ボタンのクリックイベントを個別に監視し、それぞれのボタンが押されたときの処理を書く必要があります。

⚠️ 自作ダイアログは「同期的」ではない

confirm()は呼び出した行で処理が一時停止しますが、div要素で自作したダイアログはただのHTML要素なので、表示した瞬間にコードの実行は次の行に進んでしまいます。「ダイアログの応答を待ってから次の処理をする」ためには、Promiseやコールバック関数を使って非同期に処理を組み立てる必要があります。

6-2. HTMLの <dialog> 要素を使う(モダンな方法)

近年のモダンブラウザ(Chrome・Edge・Firefox・Safariの最新版)では、確認ダイアログ専用に設計された<dialog>要素が標準で使えるようになっています。div要素を自作するより少ないコードで、モーダル表示・背景の半透明化(バックドロップ)・キーボード操作対応まで得られます。

📚 用語解説

<dialog>要素(HTMLDialogElement):HTML5以降で標準化された、モーダルダイアログ専用のHTMLタグ。JavaScriptから.showModal()を呼び出すだけで、背景を暗くしつつ最前面に表示できる。CSSで自由にデザインでき、ボタンの文言も完全に自由。confirm()と異なりHTMLの一部として管理できるのが最大の利点。

<dialog id="my-dialog">
  <p>本当に削除しますか?</p>
  <button id="ok-btn">削除する</button>
  <button id="cancel-btn">やめる</button>
</dialog>

<script>
const dialog = document.getElementById('my-dialog');
document.getElementById('open-btn').addEventListener('click', () => {
  dialog.showModal();
});
document.getElementById('ok-btn').addEventListener('click', () => {
  console.log('削除を実行');
  dialog.close();
});
document.getElementById('cancel-btn').addEventListener('click', () => {
  dialog.close();
});
</script>
①HTML定義
<dialog>要素を
ページ内に用意
②CSSで装飾
ボタン文言・色・
配置を自由に設定
③JSで表示制御
showModal()で表示
close()で閉じる
④結果を利用
各ボタンのクリック
イベントで処理を分岐
💡 迷ったら<dialog>要素から検討する

2026年現在、主要ブラウザはすべて<dialog>要素に対応済みです。「confirm()では物足りないが、外部ライブラリを追加するほどでもない」という場合は、まずブラウザ標準の<dialog>要素で実現できないか検討するのが、依存関係を増やさない現実的な選択肢です。

Claude Code 完全解説セミナー|経営者・会社役員専用 1on1 60分 無料Claude Codeを経営に活かしたい方へ — AI鬼管理

07 【独自】confirm()の落とし穴と非推奨の実態 モダンなブラウザ・開発現場でどう扱われているか

ここからは、多くの入門記事があまり触れないconfirm()の「現在地」について解説します。結論から言うと、confirm()はJavaScriptの仕様(HTML Living Standard)上で正式に「非推奨(deprecated)」と明記されているわけではありません。しかし、実際の開発現場やブラウザの実装レベルでは、使用を避ける・制限する方向に動いています。

代表菅澤 代表菅澤
「非推奨」という言葉を使うと語弊がありますが、実務では『動くけれど、プロダクトのUIとしては使わない』という扱いになっているのが実態です。この温度感の違いを理解しておくことが大事です。

7-1. なぜ実務で敬遠されるのか

confirm()が実務のプロダクト開発で避けられる理由は、主に3つです。

✔️デザインを一切カスタマイズできない(5章で解説した通り、ブランドや世界観に合わせられない)
✔️処理をブロックするため、ダイアログ表示中はページ上の他の操作が一切できなくなる
✔️連続して呼び出すとブラウザに抑制される(後述)ため、業務ロジックとして安定して使いづらい

特に3つ目は見落とされがちですが、実務上は重要な制約です。Chromeなどのモダンブラウザは、短時間のうちに何度もconfirm()やalert()が呼び出されると、「このページでは以後ダイアログを表示しない」という抑制用のチェックボックスをダイアログ内に表示するようになります。ユーザーがこのチェックを入れてしまうと、以降そのページ内でconfirm()を呼び出しても、常にキャンセル扱い(false)として処理されてしまいます。

📚 用語解説

beforeunloadイベント:ユーザーがページを閉じたり別のページに移動しようとしたタイミングで発生するJavaScriptのイベント。「保存していない内容があります」といった離脱確認によく使われるが、confirm()やalert()と組み合わせて独自のメッセージを表示する手法は、主要ブラウザで廃止・制限されている。

分かりやすい例がbeforeunloadイベントです。かつては、ページ離脱時にconfirm()やalert()を呼び出し、「編集内容が保存されていません。本当に移動しますか?」といった独自の文言を表示させる実装がよく使われていました。しかし現在のChromeをはじめとする主要ブラウザでは、beforeunloadイベント内で独自メッセージを表示する仕組みは廃止されており、ブラウザが用意した定型の確認メッセージが表示されるだけになっています。これは、悪意のあるサイトが離脱防止のダイアログを乱用してユーザーを足止めする問題への対策として実装された制限です。

⚠️ cross-origin(他ドメイン)のiframe内では動かないことがある

自社サイトの中に他ドメインのコンテンツをiframeで埋め込んでいる場合、その埋め込み側(cross-origin側)のJavaScriptからconfirm()を呼び出しても、ブラウザによっては表示自体が抑制されることがあります。外部サービスのウィジェットや広告枠を埋め込んでいるページでconfirm()が動かない、という不具合報告の多くはこれが原因です。

7-2. 「使ってはいけない」わけではない

こうした制約がある一方で、confirm()が「使ってはいけない機能」というわけではありません。社内向けの管理画面や、開発中の一時的な確認、あるいはデザインへのこだわりが不要な小規模なツールであれば、実装コストの低さというconfirm()の最大のメリットは今も有効です。div要素や<dialog>要素での自作は、その分だけコードとテストの手間が増えます。

💡 判断基準はシンプル

「顧客が直接触るプロダクトの主要な導線か」「デザインの統一感が求められるか」——これらに該当するなら<dialog>要素などでの自作を検討し、そうでない社内ツール・簡易的な確認であればconfirm()のままで十分、というのが現場の温度感に近い判断基準です。

08 【独自】非エンジニアがこの知識をどう活かすか confirm()の細部を知ると、UI改修の依頼が変わる

ここまで読んで、「confirm()の書き方は分かったが、自分がコードを書くわけではない」という経営者・管理職の方も多いはずです。それで問題ありません。この章では、非エンジニアがなぜこの知識を持つ意味があるのかという視点で解説します。

自社サイトのフォームやLP(ランディングページ)を運用していると、「送信ボタンを押したときに確認を挟みたい」「削除操作にワンクッション欲しい」といった小さなUI改善の要望は日常的に発生します。こうした要望は、エンジニアに依頼するには小さすぎ、かといって自分で実装するには専門知識が必要——という、宙に浮きやすいタスクです。

代表菅澤 代表菅澤
弊社でも、こうした「地味だけど毎回発生する」細かいWeb改修を、Claude CodeのようなAIエージェントに任せるようになってから、依頼から反映までのスピードが大きく変わりました。エンジニアの手を止めずに、その日のうちに直せる範囲が広がった感覚です。

弊社(株式会社GENAI)では、Claude Max 20xプラン(月額$200・約30,000円)を契約し、営業・広告・経理・秘書業務・記事制作に加えて、WordPressやLPの細かいスクリプト修正・書き捨てのコード対応にもClaude Codeを活用しています。confirm()を独自デザインの<dialog>要素に置き換えるような作業は、まさにこの「都度数時間削減」の対象になっている業務のひとつです。

依頼のしかた結果
「確認ダイアログをかっこよくして」(曖昧)意図が伝わりにくく、修正の往復が発生しやすい
「送信ボタンのconfirm()を、ボタン文言『送信する』『やめる』のカスタムダイアログに変えて」(具体的)一度の依頼で意図通りの実装になりやすい

この記事で解説した「confirm()はボタン文言を変えられない」「変えたいなら<dialog>要素やカスタムHTMLで自作する必要がある」という仕組みを理解しているだけで、AIエージェントやエンジニアへの依頼文がぐっと具体的になります。専門用語を正確に使う必要はありませんが、「何が制約で、何が実現可能なのか」の輪郭を知っているだけで、無駄な往復を減らせます。

✔️「confirm()の見た目は変えられない」と知っていれば、いきなり無理な要望を出さずに済む
✔️「<dialog>要素やカスタムHTMLで作り直せば自由になる」と知っていれば、代替案を提示できる
✔️軽微な修正は、エンジニアの手を止めずにAIエージェントへの依頼で完結できるケースが多い
✔️依頼時に「対象のページURL」「現在の挙動」「望む挙動」の3点を伝えると、修正の精度が上がる
Step 1
業務担当者が
「ここを直したい」
と言葉で伝える
Step 2
AIエージェントが
該当コードを特定
Step 3
修正案を提示
(挙動の変化を説明)
Step 4
承認のうえ
本番へ反映

もちろん、確認ダイアログの文言修正のような軽微な変更であっても、本番環境に反映する前には人間による最終確認を挟むのが原則です。AIエージェントに任せられるのは「コードを書く・調べる・提案する」までの部分であり、「反映してよいと判断する」のは最終的に業務担当者の役割という位置づけは変わりません。

⚠️ 「全部自動化」ではない

AIエージェントに任せられるのはあくまで実装・調査・提案の部分です。本番反映の可否判断や、顧客に見える文言の最終チェックは、引き続き人間が担う工程として残ります。この記事の内容も「完全に手放しで自動化できる」という主張ではなく、「小さな改修の往復コストを減らせる」という範囲での話です。

AI鬼管理山崎 AI鬼管理山崎
confirm()のような小さな仕組みの理解が、実は「AIに何を頼めばいいか」を見極める力に直結します。技術を全部理解する必要はありませんが、『何ができて、何ができないか』の輪郭だけは知っておくと、日々のWeb改修がぐっと楽になります。

09 まとめ confirm()は「シンプルだが制約も多い」ことを踏まえて使う

この記事では、JavaScriptのconfirm()の基本構文から、戻り値を使った条件分岐、フォーム送信前の確認実装、ボタン文言をカスタマイズできない理由、モダンブラウザでの制限の実態、そして非エンジニアがこの知識をどう活かせるかまでを整理しました。最後にポイントを振り返ります。

✔️confirm()はブラウザ標準のメソッドで、window.confirm()と完全に同じもの
✔️OKを押すとtrue、キャンセルを押すとfalseが戻り値として返る
✔️if文や三項演算子と組み合わせて、確認結果に応じた処理の分岐を書く
✔️フォーム送信を止めるには、confirm()単体ではなくevent.preventDefault()との組み合わせが必要
✔️ボタンの文言・デザインは変更できない(ブラウザのネイティブ部品のため)
✔️デザインを自由にしたい場合は、div要素の自作か<dialog>要素の利用を検討する
✔️モダンブラウザでは連続呼び出しの抑制やbeforeunloadでの制限が進んでいる
✔️非エンジニアも仕組みを理解しておくと、AIエージェントへの改修依頼が具体的になる

confirm()は、JavaScript入門者が最初に触れる機能でありながら、実務レベルで使いこなすには「何ができて、何ができないか」を正確に把握しておく必要がある機能です。単純な確認処理であればそのまま使い、デザインの自由度が必要になった時点で自作ダイアログへの切り替えを検討する——この判断基準を持っておくだけで、実装の手戻りを大きく減らせます。

代表菅澤 代表菅澤
弊社では「AI鬼管理」というサービスで、Claude Codeを使った業務自動化やWeb改修の実務伴走を行っています。confirm()のような小さな仕組みの改修依頼も含め、日々の「地味だけど時間がかかる」作業をどう手放していけるか、無料相談で具体的にお答えしています。

LPやフォームの細かい改修、AI鬼管理が実装まで伴走します

確認ダイアログのカスタマイズのような小さな改修から、業務全体の自動化設計まで。
Claude Codeを実務でどう使うか、弊社の運用ノウハウをもとにご相談を承ります。

AI鬼管理山崎 AI鬼管理山崎
「エンジニアに頼むほどではないが、自分でも直せない」——そんな細かいWeb改修のご相談も歓迎です。まずは無料相談で、現状の依頼フローのどこを効率化できるか一緒に確認しましょう。

NEXT STEP

この記事の内容を、あなたのビジネスで
実践してみませんか?

AI鬼管理 — Claude Code導入支援トレーニング

AI活用を自社で回せるようになりたい方へ

AI鬼管理

Claude Code・Cowork導入支援から業務設計・社内浸透まで実践ベースで伴走。「自社で回せる組織」を90日で作る経営者向けトレーニング。

AIBPO by AI鬼管理 — 定型業務の丸ごと代行

業務を丸ごと任せたい方へ

AIBPO by AI鬼管理

請求処理・データ入力・問い合わせ対応などの定型業務を、AI×人の品質管理体制で丸ごと代行。いまのコストの75%目安で、日々は成果物を承認するだけ。

よくある質問

Q. confirm()とwindow.confirm()は違うものですか?

A. 違いはありません。ブラウザ上のJavaScriptでは、confirm()は本来window.confirm()という書き方が正式な形ですが、windowオブジェクトのメソッドはwindow.を省略して呼び出せる決まりになっているため、confirm()とwindow.confirm()は完全に同じ動作をする同一のメソッドです。実務のコードでは省略形が使われるのが一般的です。

Q. confirm()のボタンの文言(OK/キャンセル)を「はい」「いいえ」に変更できますか?

A. できません。confirm()が表示するダイアログはブラウザが管理するネイティブな部品で、JavaScriptから渡せるのは本文のメッセージ文字列のみです。ボタンの文言・色・デザインを変更したい場合は、この記事の6章で紹介したように、HTML/CSSで自作するか、<dialog>要素を使ってゼロから実装し直す必要があります。

Q. confirm()の戻り値はどう使えばいいですか?

A. OKが押されるとtrue、キャンセルされるとfalseという真偽値が返ります。この値をif文の条件式に使うことで「OKのときだけ処理を実行する」という分岐が書けます。変数に一度受け取ってから判定する方法と、if文の条件式に直接confirm()を書く方法のどちらでも同じ結果になります。

Q. confirm()を使うとページの動きが止まるのは本当ですか?

A. 本当です。confirm()は同期処理と呼ばれる方式で動作し、呼び出された瞬間にその行でJavaScriptの実行が一時停止します。ユーザーがOKまたはキャンセルを押すまで、そのページ内の他の操作(クリックやスクロールなど)も基本的に受け付けなくなります。止まるのはそのタブ・ページのみで、他のタブや別アプリの動作には影響しません。

Q. confirm()は非推奨(deprecated)なのですか?

A. JavaScriptの仕様書上、正式に非推奨と明記されているわけではありません。ただし、デザインを変更できない・処理をブロックする・連続呼び出しがブラウザに抑制されるといった制約から、実務のプロダクト開発では使用を避け、<dialog>要素などへの置き換えを選ぶケースが増えています。社内ツールや簡易的な確認用途では今でも問題なく使われています。

Q. スマートフォンのブラウザでもconfirm()は同じように動きますか?

A. 基本的な戻り値の仕組み(OKでtrue、キャンセルでfalse)は同じです。ただし、ダイアログの見た目やボタンの配置はモバイルブラウザ(Chrome for AndroidやMobile Safariなど)ごとにデザインが異なり、PC版とは表示が変わります。挙動を確認する際は、対象とするスマートフォン端末やブラウザで実機テストをしておくのが安全です。

Q. confirm()の代わりに何を使えばいいですか?

A. デザインを自由にしたい場合は、6章で紹介したHTMLの<dialog>要素の利用が現実的な選択肢です。ブラウザ標準機能なので外部ライブラリを追加する必要がなく、CSSで自由に装飾でき、ボタンの文言も自由に設定できます。より高度な演出が必要な場合は、SweetAlert2などの外部ライブラリを検討する開発現場もあります。

Q. 非エンジニアがLPの確認ダイアログを直したいとき、何をすればいいですか?

A. まずは「現在どう動いていて、どう変えたいか」を具体的に言葉にすることが重要です。この記事で触れたように、confirm()はボタン文言を変えられない仕組みだと理解していれば、「文言を変えたいなら作り直しが必要」という前提を持って依頼できます。軽微な修正であれば、AIエージェントに対象ページと望む挙動を伝えるだけで、実装から提案までを任せられるケースが増えています。

AIAI鬼管理

AI鬼管理へのお問い合わせ

この記事を読んで気になった方へ。
AI鬼管理の専門スタッフが、御社に最適な
業務自動化プランを無料でご提案します。

会社名を入力してください
業種を選択してください
お名前を入力してください
※法人・事業用のメールアドレスでお願いします(Gmail等の個人用フリーメールは受付できません)
正しいメールアドレスを入力してください

1つ以上選択してください
1つ以上選択してください
月額コストを選択してください

約1時間のオンライン面談(Google Meet)です

空き枠を取得中...
面談日時を選択してください

予約確定後、Google Calendarの招待メールをお届けします。
しつこい営業は一切ございません。

監修 最終更新日: 2026年8月8日
菅澤孝平
菅澤 孝平 株式会社GENAI 代表取締役
  • AI業務自動化サービス「AI鬼管理」を運営 — Claude Code を活用し、経営者の業務を「AIエージェントに任せる仕組み」へ転換するパーソナルトレーニングを 伴走構築 で提供。日報・採用・問い合わせ対応・経費精算・議事録・データ集計・営業リスト等の定型業務を、AIに代行させる体制を経営者と一緒に作り込む
  • Claude Code 実装ノウハウを 経営者・法人クライアント に直接指導。生成AIを「便利ツール」ではなく 「業務を任せる存在」 として運用する手法を体系化
  • 「やらせ切る管理」メソッドの開発者。シンゲキ株式会社(2021年設立・鬼管理専門塾運営)にて累計3,000名以上の学習者を志望校合格に導いた管理メソッドを、AI × 経営者支援 に転用
  • 著書『3カ月で志望大学に合格できる鬼管理』(幻冬舎)、『親の過干渉こそ、最強の大学受験対策である。』(講談社)
  • メディア出演: REAL VALUE / カンニング竹山のイチバン研究所 / ええじゃないかBiz 他
  • 明治大学政治経済学部卒
現在は AI鬼管理(Claude Code活用の伴走型パーソナルトレーニング)を主事業とし、経営者と二人三脚で「AIに業務を任せる仕組み」を実装。「実行を強制する環境」を AI で構築する手法を、自社の実運用知見をもとに発信している。