仮定法過去完了
過去の事実と違うことを「あのとき〜だったら」と振り返る言い方です。仮定法過去よりさらに1つ時制をずらします。
仮定法過去が「現在の話を過去形にずらす」ものだったのに対し、仮定法過去完了は「過去の話を過去完了にずらす」ものです。ずらす仕組みは同じで、対象が現在か過去かが違うだけです。過ぎたことへの後悔や、実際とは違う結末の想像を表します。
仮定法過去との違いは1点だけ
対象が現在なら仮定法過去、過去なら仮定法過去完了です。時制を1つずつ後ろにずらすと、過去形→過去完了、would+原形→would have+過去分詞になります。
後悔を表すことが多い
「あのとき〜していれば、〜だったのに」という、取り返しのつかないことへの気持ちを表すのが典型的な使い方です。
混合型もある
if節が過去完了、主節が would+原形という組み合わせもあります。「あのとき〜だったら、今〜なのに」と、条件が過去・結果が現在の場合です。
見分け方
仮定法過去との違いは、時制の位置だけです。見分ける手順を確認しましょう。
1. if節が had + 過去分詞になっているか
過去完了なら、過去の事実に反する話です。単なる過去形なら仮定法過去です。
2. 主節が would have + 過去分詞か
would have があれば過去の想像です。would + 原形なら現在の話になります。
3. 前後で時制がずれていないか確かめる
if節が過去完了で主節が would + 原形なら混合型です。「過去の条件 → 現在の結果」を表します。
| 例 | 正体 | 判断の根拠 |
|---|---|---|
| If I had money, I would buy it. | 仮定法過去 | 現在の事実に反する。「今お金がない」。 |
| If I had had money, I would have bought it. | 仮定法過去完了 | 過去の事実に反する。「あのときお金がなかった」。 |
| If I had studied harder, I would be a doctor now. | 混合型 | 条件は過去(勉強しなかった)、結果は現在(今医者ではない)。now が目印。 |
| If he had left earlier, he caught the train. | 誤り | 主節が単なる過去形になっている。would have caught が正しい形。 |
用法別の例文
if 文以外の形も、仮定法過去と対になっています。あわせて覚えると整理しやすくなります。
基本形(If had 〜 would have)
過去の事実に反する想像を表す、最も基本的な形です。
If I had studied harder, I would have passed the exam.
もっと勉強していたら、試験に合格していただろう。
実際は勉強せず、不合格だった。
If she had left earlier, she would not have missed the train.
もっと早く出ていたら、電車に乗り遅れなかっただろう。
実際は遅れて出て、乗り遅れた。
If we had known about the delay, we could have changed our plan.
遅延を知っていたら、計画を変更できたのに。
実際は知らず、変更できなかった。
混合型(過去の条件 → 現在の結果)
if節は過去完了、主節は would + 原形になります。now や today が目印になることが多いです。
If I had taken that job, I would be in Tokyo now.
あの仕事を受けていたら、今ごろ東京にいるだろう。
実際は受けず、今は別の場所にいる。
If she had not helped me, I would not be here today.
彼女が助けてくれなかったら、私は今日ここにいないだろう。
実際は助けてくれた。
I wish / as if(過去への後悔・たとえ)
後ろを過去完了にすると、その時点より前のことを表します。
I wish I had listened to your advice.
あなたの助言を聞いていればよかった。
実際は聞かなかった。
He talks as if he had seen the accident.
彼はまるでその事故を見たかのように話す。
実際は見ていない。
if を使わない形
倒置と、but for / without の形が頻出します。
Had I known the truth, I would have acted differently.
真実を知っていたら、違うふるまいをしただろう。
If I had known the truth, ... if を省略すると had が文頭に出ます。
But for your support, the project would have failed.
あなたの支援がなければ、その事業は失敗していただろう。
If it had not been for your support, ...
演習問題(ステップ解説)
例題1: 仮定法過去と過去完了を区別する
If I had known you were coming, I would have prepared dinner.
- if節が had known と過去完了になっています。過去の事実に反する話です。
- 主節は would have prepared です。would have + 過去分詞の形です。
- 内容は「あなたが来ることを知らなかったので、夕食を用意しなかった」という過去の事実に反しています。
- よって仮定法過去完了です。「来ると知っていたら、夕食を用意したのに」という意味になります。
if節が過去完了、主節が would have + 過去分詞なら、過去の事実に反する話です。
例題2: 混合型を見抜く
If I had accepted the offer, I would be working in London now.
- if節は had accepted で過去完了です。過去の話です。
- ところが主節は would be working で、would have ではありません。
- 文末に now があります。結果は現在のことを言っています。
- つまり「あのとき申し出を受けていたら、今ロンドンで働いているだろう」という混合型です。
if節と主節で時制が食い違っていたら混合型です。now などの語が目印になります。
日本人が間違えやすいポイント
主節を would + 原形にしてしまう誤りが多く出ます。× If I had studied harder, I would pass the exam. → ○ I would have passed the exam. 過去の話なら主節も have + 過去分詞まで入れてください。ただし結果が現在のことなら would + 原形が正しく、この判断には now などの語が手がかりになります。
よく出るひっかけ問題
if を省略すると had が文頭に出る
Had I known, ... の形です。文頭の Had は「持っていた」ではなく仮定法の合図です。読解でつまずきやすい形なので、見たら仮定法だと判断してください。
混合型では時制がそろわない
If I had studied, I would be a doctor now. のように、if節が過去完了で主節が would + 原形になる形があります。誤りではなく、条件が過去・結果が現在という正しい形です。
would have は「〜しただろう」であって「〜すべきだった」ではない
「〜すべきだった」は should have + 過去分詞です。would have は単に「そうなっていただろう」という想像を表します。
but for と without は時制を選ばない
But for your help, I would fail.(現在)と But for your help, I would have failed.(過去)のどちらにも使えます。主節の形で時制を判断してください。
I wish の後ろは願う時点より1つ前
今のことを願うなら過去形、過去のことを悔やむなら過去完了です。I wish I had studied は「あのとき勉強していればよかった」という過去への後悔です。
練習問題
仮定法過去との違いを意識しながら解いてください。
問1 If I had left earlier, I ( ) the train.
1. would catch
2. would have caught
3. will catch
4. caught
答: 2 if節が had left で過去完了なので、主節は would have + 過去分詞です。would catch にすると現在の話になり、時制が合いません。
問2 ( ) I known about the meeting, I would have attended.
1. If
2. Had
3. Have
4. Did
答: 2 If I had known の if を省略すると、had が文頭に出て倒置します。文頭の Had は仮定法の合図です。
問3 If she had taken that flight, she ( ) here by now.
1. would have been
2. would be
3. will be
4. was
答: 2 by now とあるので結果は現在のことです。条件は過去、結果は現在という混合型なので、主節は would + 原形になります。
問4 I wish I ( ) to the party last night.
1. go
2. went
3. had gone
4. would go
答: 3 last night とあるので過去への後悔です。I wish の後ろは1つ前にずらすので過去完了 had gone になります。
問5 次のうち文法的に正しくないものはどれですか。
1. If he had asked, I would have helped.
2. Had it not been for the rain, we would have won.
3. If I had known, I would tell you now.
4. If I had slept well, I would not be tired now.
答: 3 3番は now とあるのに would tell という形で、現在の結果を表す形としては不自然です。would be telling か、単に I would tell you のいずれかで now を外すのが自然です。4番は混合型として正しい形です。
関連する英語学習Q&A
英単語アプリ 英文法解説 英語学習Q&A 一問一答フラッシュカード 運営者情報 お問い合わせ プライバシーポリシー 利用規約