If I had left home earlier, I would have caught the train.
もっと早く家を出ていたら、その電車に間に合ったのに。
現実では、私は早く家を出ませんでした。そして、電車に乗り遅れました。この事実はもう変えられません。
それでも頭の中では、過去の分岐点へ戻り、「早く出た別ルート」と「電車に間に合った結果」を描けます。それが仮定法過去完了です。
had+過去分詞=確定した過去の事実から距離を取り、別ルートを開く
would have+過去分詞=その別ルートにあったはずの結果を置く
仮定法過去完了とは?
仮定法過去完了とは、すでに起きた過去の事実について、「もし実際とは違っていたら、結果も違っていたはずだ」と想像する形です。後悔、批判、起こりえた可能性などを表します。
If+主語+had+過去分詞, 主語+would・could・might have+過去分詞
- If I had known about the meeting, I would have attended it.
会議のことを知っていたら、出席したのに。 - If she had studied harder, she could have passed the exam.
もっと勉強していたら、試験に合格できたのに。 - If we had taken a taxi, we might have arrived on time.
タクシーに乗っていたら、時間どおり到着したかもしれない。
どの例にも、実際には起きなかった過去が隠れています。仮定法過去完了は、過去を変える文法ではなく、確定した過去と頭の中の別ルートを並べる文法です。
had+過去分詞で「過去の現実」から距離を取る
仮定法過去では、過去形を使って今・未来の現実から一段距離を取りました。
- If I had time, I would help you.
今、時間があれば手伝うのに。 - If I had had time, I would have helped you.
あのとき時間があれば手伝ったのに。
すでに確定した過去から離れるには、時制をさらに一段ずらし、had+過去分詞を使います。
- 過去形:今・未来の現実から一段離れる
- 過去完了形:確定した過去の現実から、さらに離れる
だから「仮定法過去完了」という長い名前になるのです。形を暗記するより、どの現実から距離を取っているかを見ると理解しやすくなります。
仮定法過去の一段目は、仮定法過去とは?If+過去形を「今の現実との距離」で理解するで詳しく解説しています。
would have+過去分詞で「別ルートの結果」を描く
If節で実際とは違う条件を開いたら、結果節では、その世界にあったはずの結果を置きます。
If I had left earlier, I would have caught the train.
- would:現実の結果から離れた仮想ルート
- have:そのルートに結果を持つ
- caught:電車に間に合った後の状態
would have caught は、「間に合った」という単なる過去ではありません。実際には存在しない別ルートに、間に合った結果があったはずだと見ています。
仮定法過去完了の主な使い方
1.過去への後悔を表す
- If I had practiced more, I would have performed better.
もっと練習していたら、もっと上手くできたのに。 - If we had booked earlier, we would have gotten better seats.
もっと早く予約していたら、より良い席を取れたのに。
実際に選んだルートと、選ばなかった別ルートを比較するため、「〜しておけばよかった」という後悔が自然に生まれます。
2.過去の行動を批判する
- If you had listened to me, this wouldn’t have happened.
私の話を聞いていたら、こんなことにはならなかったのに。 - If he had checked the data, he would have noticed the error.
データを確認していたら、間違いに気づいたはずです。
相手が実際にはしなかった行動と、そうしていた場合の結果を並べるため、言い方によっては強い非難に聞こえます。会話では声の調子や関係性にも注意が必要です。
3.起こりえた可能性を振り返る
- If we had left five minutes later, we might have missed the flight.
あと5分遅く出ていたら、飛行機に乗り遅れたかもしれない。 - If she hadn’t called me, I could have forgotten the appointment.
彼女が電話してくれなかったら、約束を忘れていたかもしれない。
実際の結果に安堵しながら、「別の条件なら違う結果もありえた」と過去の可能性を振り返る使い方です。
would have・could have・might haveの違い
| 形 | 別ルートで表すもの | 例 |
|---|---|---|
| would have+過去分詞 | そうなったはずの結果 | I would have gone. |
| could have+過去分詞 | そうすることが可能だった | I could have gone. |
| might have+過去分詞 | そうなったかもしれない | I might have gone. |
- If I had known, I would have helped you.
知っていたら、手伝ったはずです。 - If I had known, I could have helped you.
知っていたら、手伝うことができました。 - If I had known, I might have helped you.
知っていたら、手伝ったかもしれません。
would は結果の見込み、could は能力・可能性、might は不確かな可能性です。過去分詞までを一塊に暗記せず、助動詞が別ルートへの距離と話し手の判断を加えていると考えます。
助動詞それぞれの距離感は、wouldのコアイメージ、couldのコアイメージ、mightのコアイメージでも確認できます。
通常の過去完了形との違い
同じ had+過去分詞 でも、通常の過去完了形は実際に起きた出来事を表し、仮定法過去完了は実際には起きなかった別ルートを表します。
| 形 | 世界 | 例文 |
|---|---|---|
| 過去完了形 | 実際の過去 | The train had left when I arrived. |
| 仮定法過去完了 | 実際とは違う過去 | If I had arrived earlier, I would have caught it. |
The train had left は、私が到着する前に電車が出発したという事実です。If I had arrived earlier は、実際には早く到着しなかったことを背景に、別の過去を開きます。
通常の過去完了形の基準点と完了状態は、過去完了形とは?had+過去分詞を「過去時点ですでに完了した状態」で理解するで整理しています。
仮定法過去と仮定法過去完了の違い
| 形 | 離れる現実 | 基本形 |
|---|---|---|
| 仮定法過去 | 今・未来の現実 | If+過去形, would+原形 |
| 仮定法過去完了 | 確定した過去の現実 | If+had+過去分詞, would have+過去分詞 |
- If I were free now, I would go with you.
今、暇なら一緒に行くのに。 - If I had been free yesterday, I would have gone with you.
昨日、暇だったら一緒に行ったのに。
今の反実なら一段、過去の反実なら二段。この距離で考えると、名前と形を別々に覚える必要がありません。
had hadが続くのはなぜ?
動詞が have の場合、仮定法過去完了では had had と続きます。
If I had had more time, I would have finished the report.
もっと時間があったら、レポートを完成させていたのに。
- 最初の had:過去完了を作り、確定した過去から距離を取る
- 2つ目の had:haveの過去分詞。「時間を持っていた状態」
had had という特殊な熟語ではありません。had eaten、had gone と同じ構造で、動詞がたまたま have なので同じ語が並びます。
否定文・疑問文の作り方
否定文
If I hadn’t stayed up late, I wouldn’t have been so tired.
夜更かししていなければ、あれほど疲れていなかったのに。
If節は had not+過去分詞、結果節は would not have+過去分詞 にします。
疑問文
What would you have done if you had missed the last train?
もし終電を逃していたら、どうしていましたか。
What would you have done if …? は、実際とは異なる過去の状況を相手に想像してもらう形です。
ifを省略した倒置
Had I knownだけでなく、Were I・Should youまで共通原理で整理したい方は、仮定法の倒置とは?Had I known・Were I・Should youをifの省略から理解するをご覧ください。
if を省略し、had を主語の前へ出すことがあります。
- If I had known, I would have called you.
- Had I known, I would have called you.
意味は基本的に同じです。Had I known は疑問文ではなく、ifを省略したフォーマルな倒置です。文章やスピーチでよく見られます。
if節だけ・結果節だけになることもある
会話では、状況から結果が明らかなとき、文の一部を省略できます。
- If only I had known!
知ってさえいれば! - I would have helped you, but I didn’t know.
手伝ったのですが、知らなかったのです。 - You could have told me.
教えてくれてもよかったのに。
ifが見えなくても、話し手の頭には「もし知っていたら」「もし状況が違っていたら」という条件が存在します。
仮定法過去完了の例文
- If I had set an alarm, I wouldn’t have overslept.
目覚ましをセットしていたら、寝坊しなかったのに。 - If she had accepted the offer, she would have moved to London.
その申し出を受けていたら、ロンドンへ移っていたでしょう。 - If we had checked the weather, we might have changed our plans.
天気を確認していたら、予定を変えたかもしれません。 - If he had asked for help, we could have supported him.
助けを求めていたら、私たちは彼を支えられたのに。 - If they hadn’t taken the wrong train, they would have arrived on time.
違う電車に乗っていなければ、時間どおり到着していたでしょう。 - If I had understood the instructions, I wouldn’t have made that mistake.
説明を理解していたら、その間違いをしなかったのに。 - What would you have said if she had asked you?
彼女に尋ねられていたら、何と言っていましたか。 - Had we left earlier, we would have avoided the traffic.
もっと早く出ていたら、渋滞を避けられたのに。
仮定法過去完了を前から処理する3ステップ
- If で過去の分岐点を開く
- had+過去分詞 で、確定した過去から別ルートへ離れる
- would・could・might have+過去分詞 で、そのルートにあった結果を置く
If she had studied harder, she could have passed the exam. なら、「もしという過去の分岐」→「実際には十分勉強しなかった」→「別ルートなら合格できた」と、英語の順番で場面を作ります。
最後まで聞いてから日本語へ訳し直すのではなく、had+過去分詞 が聞こえた時点で「実際とは違う過去が来た」と予測すると、長い文でも処理が止まりにくくなります。
よくある間違い
- If I would have …とする:基本はIf I had+過去分詞
- 結果節をwould+原形にする:過去の仮想結果はwould have+過去分詞
- 通常の過去完了と同じだと思う:事実か、実際には起きなかった別ルートかを確認
- had hadを誤植だと思う:最初は助動詞、2つ目はhaveの過去分詞
- 後悔にしか使えないと思う:批判、安堵、過去の可能性にも使える
よくある質問
仮定法過去完了は必ず後悔を表しますか?
必ずしも後悔ではありません。実際とは異なる過去を想像する形なので、批判、安堵、推測、起こりえた危険などにも使えます。
would have+過去分詞だけでも使えますか?
使えます。条件が文脈で分かる場合、if節を省略できます。I would have gone, but I was sick. なら「病気でなければ」という条件が含まれています。
過去の条件から今の結果を表す場合は?
If I had taken that job, I would live in London now. のように、過去の条件と現在の結果を組み合わせます。これは混合仮定法と呼ばれ、混合仮定法を「過去から今への影響」で理解する記事で詳しく解説しています。
まとめ|確定した過去の横に別ルートを描く
had+過去分詞=確定した過去から距離を取り、別ルートを開く
would have+過去分詞=別ルートにあったはずの結果
could have=可能だった結果
might have=ありえたかもしれない結果
仮定法過去完了は、複雑な時制計算ではありません。変えられない過去を現実として残しながら、その横に「もし違っていたら」というルートを描く形です。
仮定法全体を距離の感覚で整理したい方は、英語の仮定法とは?過去形を「現実からの距離」で理解するをご覧ください。
関係詞・分詞構文・不定詞・完了形・仮定法を認知処理から整理した英会話のラスボス英文法一覧もあわせてご覧ください。
be:RIZEでは、文法知識を問題演習で終わらせず、会話やリスニング中に前から処理できる形へ変えるトレーニングを設計しています。詳しくは英語コーチングの内容と進め方をご覧ください。



