モチタン辞典 › モチタン英文法辞典 › 仮定法過去完了の作り方

仮定法過去完了の作り方と使い方
仮定法過去完了は、「もし過去にああしていれば、こうだったのに」と過去の事実とは異なる事態を想定し、後悔や安堵を表す文法です。基本公式はIf+主語+had+過去分詞, 主語+would / could / might+have+過去分詞です。
過去の出来事に対して時制を1つ過去へずらす(過去完了にする)ことで「事実ではない妄想」を伝えます。
- 過去の事実とは異なる仮定を行い、後悔や安堵を表す文法です(27字)
- 基本公式は「If+主語+had+過去分詞, 主語+助動詞過去形+have+過去分詞」です(43字)
- ifを省略すると、hadが主語の前に移動して倒置が起きます(28字)
先に読むと分かりやすい: 仮定法の基本(仮定法過去・過去完了)仮定法過去の作り方
仮定法過去完了の作り方とは(結論)
仮定法過去完了の基本形は、条件節(if節)に過去完了形を用い、主節に助動詞の過去形と完了形を組み合わせます。
| 節の種類 | 構成 | 例文 |
|---|---|---|
| 条件節(if節) | If + 主語 + had + 過去分詞 | If I had left five minutes earlier, |
| 主節 | 主語 + would / could / might + have + 過去分詞 | I would have caught it. |
2つの節を合わせると、Yeah, if I had left five minutes earlier, I'd have caught it.(うん、あと5分早く出ていれば乗れたのに)のように、実際には乗り遅れた過去の事実に対する仮定と後悔を表現できます。
英語の文法は、話して身につけよう。会話アプリ「モチスピ」英語を話して練習できる会話アプリ。話すたびに、発音・文法・自然さをその場で直してもらえます。無料で試す
主節で使う助動詞の使い分け
主節で使う助動詞(would / could / might)は、話し手の確信度やニュアンスによって使い分けます。
- would have + 過去分詞: 「(きっと)〜だっただろう」という強い推量・意志。例: I would have snapped back too.(私も言い返してしまったと思う)
- could have + 過去分詞: 「〜できただろうに(実際はしなかった / できなかった)」という過去の能力・可能性。例: Why didn't you say so? I could have helped.(なんでもっと早く言わなかったの?手伝えたのに)
- might have + 過去分詞: 「〜だったかもしれない」という控えめな可能性。例: I might have missed the meeting.(私、会議を逃したかもしれない)
日常会話では I would have は I'd have、口頭では /aɪdəv/ のように短縮されます。
would have + 過去分詞
- 「(きっと)〜だっただろう」
- 強い推量・意志を表す
- 日常会話では I'd have と短縮
could have + 過去分詞
- 「〜できただろうに」
- 過去の能力や可能性を表す
- 実際にはしなかった・できなかった
might have + 過去分詞
- 「〜だったかもしれない」
- 控えめな可能性を表す
- 確信度が低めの推量
話し手の確信度や伝えたいニュアンスに合わせて助動詞を使い分けます。
仮定法過去との違い:いつの話か
仮定法過去と仮定法過去完了の違いは、「いつの事実に反しているか」という時間軸の差です。
| 名称 | 公式 | 表す時制と事実 |
|---|---|---|
| 仮定法過去 | If + 主語 + 過去形, 主語 + would + 原形 | 「現在」の事実に反する仮定 |
| 仮定法過去完了 | If + 主語 + had + 過去分詞, 主語 + would have + 過去分詞 | 「過去」の事実に反する仮定 |
現在の妄想であれば If I had time now, I would go.(今時間があれば行くのに)となりますが、過去の妄想であれば If I had had time yesterday, I would have gone.(昨日時間があったら行ったのに)となります。
日本語の「〜なら」に惑わされず、話題が現在か過去かを見極めることが肝要です。
混合型:過去の仮定と現在の結果
条件節が過去の事実に反し、その結果が現在の状態に影響を及ぼしている場合、if節は過去完了形、主節は仮定法過去(助動詞の過去形+動詞の原形)を用いる「混合型」になります。
基本形: If + 主語 + had + 過去分詞, 主語 + would + 動詞の原形
例えば、If we had sent it on time, you wouldn't be so upset.(予定通り提出していれば、そんなに動揺していないだろう)という文では、提出しなかったのは「過去」の出来事であり、動揺しているのは「現在」の状態です。
主節に now や today などの現在を表す副詞が伴うことが多く見られます。
If we had sent it on time, you wouldn't be so upset.予定通り提出していれば、そんなに動揺していないだろう
過去の条件と現在の結果をつなぎ、主節には助動詞の過去形+原形を用います。
ifの省略による倒置表現
フォーマルな文章や文学的表現では、接続詞の if を省略することがあります。if を省くと、助動詞の had が主語の前に移動して倒置が起きます。
通常の文: If I had known the truth, I would have told you.
倒置の文: Had I known the truth, I would have told you.(もしその真実を知っていたら、あなたに話していただろうに)
意味は全く同じですが、Had I known の形は書き言葉や改まったスピーチで好まれます。TOEICや大学入試の文法問題でも頻出のパターンです。否定文の場合は Had I not known... の語順になります。
If I had known the truth... の形を作る
接続詞 if を取り除く
助動詞 had を主語の前に移動させる
Had I known the truth... となる
ifを省略するとhadが主語の前に移動し、フォーマルな倒置文になります。
should have done との後悔表現の関連
仮定法過去完了と同じく「過去の事実に対する後悔」を表す代表的な構文が should have + 過去分詞です。「〜すべきだったのに(実際はしなかった)」という意味を表します。
例えば I should have been more careful.(もっと注意していればよかった)や I should have studied more for the exam.(試験のためにもっと勉強すべきだった)は、裏を返せば「注意を怠った」「勉強しなかった」という過去の事実が存在します。
仮定法過去完了の If I had been more careful, I wouldn't have made the mistake. を簡潔に後悔のみに焦点を当てて言い換えたものが should have done の構文に当たります。
仮定法過去完了
- 条件と結果を詳しく述べる
- 例: If I had been more careful, I wouldn't have made the mistake.
- 「〜していれば…だったのに」
should have + 過去分詞
- 後悔のみに焦点を当てて簡潔に言う
- 例: I should have been more careful.
- 「〜すべきだったのに(しなかった)」
過去の事実に対する後悔を、条件節を使うか簡潔に述べるかで使い分けます。
辞典の例文で見る仮定法過去完了の作り方
| 英文 | 和訳 | ポイント |
|---|---|---|
| Yeah, if I had left five minutes earlier, I'd have caught it. ▶ | うん、あと5分早く出ていれば乗れたのに。 | if節had leftと主節'd have caughtの基本形 |
| If we had sent it on time, you wouldn't be so upset. ▶ | 予定通り提出していれば、そんなに動揺していないだろう。 | 過去の条件と現在の結果を結ぶ混合型の典型例 |
| Why didn't you say so? I could have helped. ▶ | なんでもっと早く言わなかったの?手伝えたのに。 | 「手伝えたのに」と過去の可能性を示すcould have |
| I know, it's so frustrating - I would have snapped back too. ▶ | 分かるよ、腹が立つよね。私も言い返してしまったと思う。 | 「言い返したと思う」と共感を表すwould have |
| I should have been more careful. ▶ | もっと注意していればよかった。 | 過去の不注意に対する後悔を表すshould have |
| I should have studied more for the exam. ▶ | 試験のためにもっと勉強すべきだった。 | 「もっと勉強すべきだった」と反省を伝える表現 |
| I might have missed the meeting. ▶ | 私、会議を逃したかもしれない。 | 過去の事象に対する推量を表すmight have |
「仮定法現在完了」とは?混同しやすい理由をわかりやすく解説
英文法の正式な用語として「仮定法現在完了」という表現は存在しません。検索語としてよく調べられる背景には、主に2つの勘違いや混同があります。
1つ目は、仮定法過去完了の主節で使われる would have + 過去分詞 の形に have + 過去分詞(現在完了の形)が含まれているため、名称を「現在完了」と呼び間違えてしまうケースです。助動詞の過去形に完了形が続く形ですが、文法上の分類はあくまで「仮定法過去完了」です。
2つ目は、直説法の現在完了形(過去から現在への継続・経験・完了を表す文法)と仮定法のルールを混同しているケースです。英語の仮定法では、現在の事実に反する仮定には「仮定法過去」を、過去の事実に反する仮定には「仮定法過去完了」を用います。「過去の出来事を現在の完了形で仮定する」という枠組みはありません。過去を振り返って「あのとき〜だったら」と述べる構文は、すべて「仮定法過去完了」として整理しましょう。
過去の事実(直説法)から仮定法過去完了への書き換えステップ
仮定法過去完了の構造を深く理解するには、過去の客観的事実を表す文(直説法)から仮定法へ書き換える練習が効果的です。書き換えの鉄則は「時制を過去から過去完了へ1つ戻すこと」と「肯定と否定を反転させること」の2点です。
| 文の種類 | 英文 | 日本語訳 |
|---|---|---|
| 過去の事実(直説法) | As I didn't have enough money, I didn't buy the car. | 十分なお金がなかったので、その車を買わなかった。 |
| 仮定法過去完了 | If I had had enough money, I would have bought the car. | もし十分なお金があったら、その車を買っていただろうに。 |
書き換えの手順は次の通りです。
- 条件節(事実の理由):事実が否定(didn't have)なら、仮定法では肯定の過去完了(had had)に変換します。
- 主節(事実の結果):事実が否定(didn't buy)なら、仮定法では肯定の助動詞+完了形(would have bought)に変換します。
「実際には起こらなかった逆の事態」を妄想するのが仮定法であるため、事実に反する内容にするには必ず肯定・否定が入れ替わります。この変換ルールを押さえておくと、読解や英作文でのミスを大幅に減らせます。
I wish を使った仮定法過去完了の例文と使い方
if を使わない仮定法過去完了の代表例として、I wish を伴う構文があります。「(あのとき)〜だったらよかったのに」と、過去の変えられない事実に対する後悔や未練を表す表現です。
公式は I wish + 主語 + had + 過去分詞 です。主節の I wish 自体は現在の気持ち(今そう願っている)を示し、後ろに続く節を過去完了形にすることで「過去の出来事に対する叶わぬ願望」を表します。
例えば、I wish I had studied harder for the exam.(もっと試験勉強をしておけばよかったのに)という文は、「実際にはあまり勉強しなかった」という過去の事実が前提にあります。否定文にする場合は I wish I hadn't said such a thing to him.(彼にあんなことを言わなければよかったのに)のように had not + 過去分詞 を用い、言ってしまった過去の行動を悔やむニュアンスを伝えます。
このテーマのよくある疑問
確認問題(5問)
次の空所に入る最も適切な語を選びなさい。 Yeah, if I ( ) five minutes earlier, I'd have caught it.
答えと解説
正解: had left
仮定法過去完了の条件節(if節)では「had+過去分詞」の形を用います。次の文の空所に入る助動詞として、「手伝えたのに(実際はしなかった)」という過去の能力・可能性を表すものはどれか。 Why didn't you say so? I ( ) have helped.
答えと解説
正解: could
「〜できただろうに」という過去の能力や可能性を表すには could を用います。「If I had known the truth, I would have told you.」の if を省略して倒置させた文として正しいものはどれか。
答えと解説
正解: Had I known the truth, I would have told you.
ifを省略すると助動詞 had が主語の前に移動するため「Had I known」となります。次の文の主節の形として正しいものを選びなさい(混合型:過去の仮定と現在の結果)。 If we had sent it on time, you ( ) so upset.
答えと解説
正解: wouldn't be
過去の条件と現在の結果をつなぐ混合型では、主節に「助動詞の過去形+動詞の原形」を用います。本文の説明に合致しない誤っている文はどれか。
答えと解説
正解: 英文法の正式な用語として「仮定法現在完了」という表現が存在する。
本文には「英文法の正式な用語として『仮定法現在完了』という表現は存在しません」とあります。
よくある質問
- Q. if節の動詞にhad hadとhadが並ぶのは正しい?
- 正しい用法です。助動詞のhadに一般動詞haveの過去分詞hadが続いた形で、「もし持っていたら」「もし過ごしていたら」という過去の仮定を表します。
- Q. could haveとwould haveの違いは何ですか?
- would have doneは「(条件が揃えば)〜しただろう」という結果・意志を、could have doneは「〜することも可能だったのに(しなかった)」という能力・可能性を表します。
- Q. 日常会話でifの省略(倒置)は使いますか?
- 日常会話ではifを使うのが一般的です。Had I knownなどの倒置表現は、ビジネス文書、論文、ニュース、改まったスピーチなどで主に使われます。
- Q. 会話で would have や could have はどのように短縮・発音されますか?
- 日常会話では would've や could've と表記され、発音は「ウッドゥヴ(/wʊdəv/)」「クッドゥヴ(/kʊdəv/)」のようになります。さらにくだけた口語では have が「オブ(/əv/)」や「ア(/ə/)」のように弱化して聞こえることがあります。
- Q. 仮定法過去完了の否定文を作るとき、not はどこに置きますか?
- if節では had の直後に not を置き(If I had not seen...)、主節では助動詞の過去形の直後に not を置きます(I would not have gone...)。短縮形として hadn't や wouldn't have がよく用いられます。
2026年9月25日更新・モチタン辞典編集部
モチタン英文法辞典で続けて学ぶ
「仮定法・比較」の項目(29)
分からない用語は 文法用語のやさしい辞典 へ
📘 モチタン英文法辞典のトップへ(全260項目)