※本ページにはアフィリエイト広告が含まれます。
※ 本記事は英語学習の参考として、仮定法過去完了を中心にまとめています。(仮定法過去)
📘 仮定法過去完了とは
仮定法過去完了は、「過去の事実に反すること(もしあのとき〜だったら…だったのに)」を表します。すでに終わってしまった過去について、「実際はそうしなかったけれど、もしあのときそうしていたら…」と、起こらなかった別の過去を想像する言い方です。
If + 主語 + had + 過去分詞, 主語 + would / could / might have + 過去分詞
■ If I had studied harder, I would have passed.
(もっと勉強していたら受かっていたのに=実際は勉強せず落ちた)
仮定法過去が「今の事実に反する」のに対し、仮定法過去完了は「過去の事実に反する」点が違います。仕組みは同じで、時制をさらに1つ過去にずらすことで「現実との距離」を示します。今の話は過去形で、過去の話は 過去完了(had + 過去分詞) で表す、というわけです。
直説法(事実)と並べると、ズレがはっきりします。
- 事実:I didn’t study, so I failed.(勉強しなかったので、落ちた)
- 仮定(仮定法過去完了):If I had studied, I would have passed.(勉強していたら、受かっていたのに)
👉 いつも裏に「実際はそうしなかった/そうならなかった」という過去の事実があります。「もしあのとき〜だったら…だったのに(でも現実はそうではなかった)」と、最後に補って読むと意味がつかめます。後悔や「たられば」を語るときの表現です。
📘 時間の対応(仮定法過去とのちがい)
2つの仮定法は「いつの話か」で使い分けます。今の話なら仮定法過去、過去の話なら仮定法過去完了です。形が1つずつ後ろにずれているのがポイントです。
- 仮定法過去=今の仮定:If I were rich, I would travel.(もし金持ちなら旅をするのに=今の話)
- 仮定法過去完了=過去の仮定:If I had been rich, I would have traveled.(もしあのとき金持ちだったら旅をしていたのに=過去の話)
👉 「過去のことだから、形をもう1つ過去にずらす」と考えると覚えやすいです。過去形 → 過去完了、would + 原形 → would have + 過去分詞 へと、両方そろってずれます。
📘 〔上級〕混合仮定法(過去の仮定 → 今の結果)
ふつうは if 節と主節の時がそろいますが、過去の仮定が、今の結果につながるときは、if 節と主節で時がずれます。これを「混合仮定法」といいます。入試・難関でよく問われる形です。
- if 節=過去の仮定(過去完了)→「あのとき〜していたら」
- 主節=今の結果(would + 動詞の原形)→「今ごろ…なのに」
■ If I had taken the job then, I would be rich now.
(あのとき就職していたら、今は金持ちなのに)
👉 ポイントは、主節が would have + 過去分詞(過去)ではなく would + 原形(今) になっていること。文末の now(今) や then(あのとき)が、時のズレを見抜くヒントになります。「過去の選択が、今の自分に影響している」という場面で使います。
📘 〔上級〕if の省略 → 倒置
Had + 主語 + 過去分詞で if を省けます(かたい)。if を消して、had を主語の前に出すだけです。
■ Had I known, I would have told you.(知っていたら、あなたに言っていたのに=If I had known, …)
👉 倒置できるのは were / had / should の3つだけです。had(仮定法過去完了)のほかに、次の2つも同じく if を省いて倒置できます。
| 元の if 節 | 倒置(if 省略) | 例 |
|---|---|---|
| If I were …(仮定法過去) | Were I … | Were I rich, I would travel.(もし金持ちなら旅をするのに) |
| If I had done …(仮定法過去完了) | Had I … | Had I known, I would have told you.(知っていたら言っていたのに) |
| If you should …(万一→条件文) | Should you … | Should you need help, call me.(万一お困りなら電話して) |
※ この3語以外(一般動詞など)は倒置にできません(✗ Studied I harder, …)。
📘 〔上級〕if を使わない仮定法過去完了
if 節を使わずに「過去の事実に反する仮定」を表す、難関頻出の形です。仮定法過去の「Were it not for」の過去版にあたります。
- If it had not been for ~/ Had it not been for ~(あのとき〜がなかったら):Had it not been for your help, I would have failed.(あなたの助けがなかったら、失敗していただろう)
- But for ~/ Without ~ + 名詞(〜がなかったら):But for your advice, I would have made a mistake.(あなたの助言がなかったら、間違えていただろう)
- otherwise(さもなければ〔実際はそうだった〕):I had a map; otherwise I would have got lost.(地図があった。さもなければ道に迷っていただろう)
👉 どれも「実際には〜があった(してくれた)」という事実が裏にあります。「〜がなかったら…だった(でも実際はあった)」という、感謝や安堵を表す場面でよく使います。
🚩 ネイティブはこう感じる
① 後悔・反省を表す定番
過去への「〜すればよかった」という後悔を表すのにぴったりです。
■ If only I had listened to you. (あなたの言うことを聞いていれば…)
② would have done は「could’ve / should’ve」と同じ仲間
■ I would have come if you’d asked.(頼んでくれていたら、来ていたのに)
※ 発音は「would’ve(ウドゥヴ)」と縮まります。発音につられて would of と書くのは誤り(→助動詞+have+過去分詞)。正しくは would have。
③ 倒置の Had I known は会話でも使う
少しドラマチックですが、「(あのとき)知っていれば…」という倒置の言い方は、会話でも耳にします。短くて感情がこもるので、後悔や驚きを表すのにぴったりです。
■ Had I known you were coming, I would have cooked something.(来るって知っていたら、何か作っていたのに)
📘 まとめ
- 仮定法過去完了=過去の事実に反する仮定
- If + 過去完了, would have + 過去分詞
- 〔上級〕混合仮定法(過去の仮定→今の結果:would + 原形 + now)
- 〔上級〕if 省略の倒置(Had I known)
- 〔上級〕Had it not been for ~/ But for ~/ otherwise(〜がなかったら)
英語を「使える」ようにしたい方へ
英文法は、実際の会話で使ってこそ身につきます。アプリで毎日少しずつ続けると、学んだ文法が自然に口から出るようになります。
スタディサプリ ENGLISH 新日常英会話
ドラマ仕立てのレッスンで、英文法を「使える英語」に。スマホで手軽に続けられます。