仮定法過去完了|意味や使い方を例文付きで解説

仮定法」とは、事実に反することや、実現する可能性が低いことを表す動詞の形のことです。

例えば、仮定法では「現在の事実に反すること」を動詞の過去形で表しますが、このように時制を過去にずらすことで「現実との距離感」が生まれ、「現実の話ではない」ことを相手に伝えることができます。

この記事では、「過去の事実に反する事柄や仮定」を動詞の過去完了形で表す「仮定法過去完了」について詳しく見ていきます。

仮定法と直接法

仮定法が「事実に反すること」や「実現する可能性が低いこと」を表すのに対し、「現実」や「現実にあり得ること」を表す表現法を「直接法」といいます。

両者の違いを次の例で見てみましょう。

(1) I have time, so I can watch TV.
私は時間があるので、テレビを見ることができる。

(2) If you have time, you can watch TV.
もし時間があれば、テレビを見てもいいよ。

(3) If I had time, I could watch TV.
もし時間があれば、テレビを見られるのに。
(→ 実際には時間がないので、テレビを見られない)

(1)は「現実」、(2)は「現実にあり得ること」を述べた文なので、直接法である現在形 (have, can) が使われています。

一方、(3)は事実に反する仮定を表した文なので、仮定法である過去形 (had, could) が使われています。

(2)のように、if を使った文でも直接法になる場合があるので注意してください。

仮定法の基本形

上の例文(3)のように、仮定法の文は基本的に「if節」と「主節」から構成されます。

下の表は、それぞれの節における動詞・助動詞の形を示したものです。

if節の動詞 主節の助動詞 + 動詞
仮定法過去 過去形
(be動詞は were)
助動詞の過去形* + 動詞の原形
仮定法過去完了 過去完了形 助動詞の過去形 + have + 過去分詞
仮定法未来 were to + 動詞の原形 /
should + 動詞の原形
助動詞の過去形 + 動詞の原形 /
will + 動詞の原形 /
命令文

*「助動詞の過去形」は would, could, might を指します。(「仮定法過去」では should が使われることもあります。)

if を使わない仮定法については、こちらの記事で詳しく解説しています。

仮定法過去完了

仮定法過去完了は「過去の事実に反する事柄や仮定」を表します。〈if節 + 主節〉という形の場合、「もし〜だったならば … だったろうに」という意味を表します。

上の表で示したように、if節では動詞の過去完了形を使い、主節では〈助動詞の過去形 + have + 過去分詞〉を使います。

(4) If he had been awake, he would have heard the noise.
もし彼が起きていたら、その物音を聞いていただろう。
(→ 実際には起きていなかったので、物音は聞かなかった)

(5) If I had left earlier, I would not have missed the train.
もし早めに出発していたら、私は列車に乗り遅れることはなかっただろうに。
(→ 実際には早めに出発しなかったので、列車に乗り遅れた)

主節で使われる〈助動詞の過去形 + have〉については、通常は「~だったろうに」を意味する “would have” が使われますが、「~できただろうに」という意味の場合は “could have”、「~だったかもしれないのに」という意味の場合は “might have” が使われます。

(6) If I had won the lottery, I could have bought a yacht.
もし宝くじが当たっていたら、ヨットを買えただろうに。

(7) If he had tried harder, he might have succeeded.
もし彼がもっと努力していたら、成功したかもしれないのに。

「仮定法過去」では would と同じ意味で should が使われることがありますが、「仮定法過去完了」では使われません。

直接法への書き換え

仮定法過去完了の文の内容は、次のように直接法で表すことができます。

仮定法過去完了 → 直接法
  • If he had been awake, he would have heard the noise.
    もし彼が起きていたら、その物音を聞いていただろう。

    Because he wasn’t awake, he didn’t hear the noise.
    = He wasn’t awake, so he didn’t hear the noise.
    彼は起きていなかったので、その物音は聞かなかった。


  • If I had left earlier, I would not have missed the train.
    もし早めに出発していたら、私は列車に乗り遅れることはなかっただろうに。

    Because I didn’t leave earlier, I missed the train.
    = I didn’t leave earlier, so I missed the train.
    私は速めに出発しなかったので、列車に乗り遅れた。

仮定法過去完了の文を直接法に書き換える場合は、次の2点に注意してください。

① 肯定の表現を否定に、否定の表現を肯定に変える。
② 直接法の文では、動詞の過去形を用いる。助動詞は使用しない。

if節と主節で時制が異なる仮定法

(8) If I had met her then, we might be married now.
もしその時彼女に会っていたら、現在私たちは結婚しているかもしれない。
(→ 実際にはその時彼女に会っていなかったので、現在彼女とは結婚していない)

(9) If I liked her, I would have driven her home.
もし彼女のことが好きだったら、(あの時)車で家まで送っていただろう。
(→ 実際には彼女のことが好きではないので、車で家まで送らなかった)

(8)では、if節で「過去の事実に反すること」、主節で「現在の事実に反すること」が述べられています。このような場合、if節では「仮定法過去完了」を、主節では「仮定法過去」を用います。

(9)では、if節で「現在の事実に反すること」、主節で「過去の事実に反すること」が述べられています。このような場合は、if節で「仮定法過去」を、主節で「仮定法過去完了」を用います。

なお、仮定法過去についての詳しい解説は、こちらの記事をご覧ください。

仮定法過去完了を使った慣用表現

wish + 仮定法過去完了

wish + 仮定法過去完了〉は「過去の事実に反する願望」を表します。

(10) I wish I had studied harder when young.
若い時にもっと勉強していたらなあ。
(→ 実際は勉強しなかったので残念)

wish を使った仮定法については、こちらの記事で詳しく解説しています。

as if + 仮定法過去完了 / as though + 仮定法過去完了

as if [though] + 仮定法過去完了〉は「(実際はそうではないのに)まるで~であったかのように」という意味を表します。

(11) She looks as if [though] she had seen a ghost.
彼女は(実際はそうではないのに)まるで幽霊を見たかのような顔をしている。

as if を使った仮定法については、こちらの記事で詳しく解説しています。

would rather + 仮定法過去完了

would rather + 仮定法過去完了〉 は「むしろ~であったらよかったのだが」という意味を表します。

(12) I’d [I would] rather you hadn’t told her the truth.
あなたには彼女に本当のことを話してもらいたくなかったんだが。
(→ 実際は話してしまったので残念)

if only + 仮定法過去完了

if only + 仮定法過去完了〉は「過去の事実に反する願望」を表します。「~でありさえしたらなあ」という意味で、 “I wish ~” よりも強い願望表現になります。

(13) If only you had come.
君が来てくれさえしたらなあ。
(→ 実際は来てくれなくて残念)

if it had not been for ~

if it had not been for ~” は「もし~がなかったら」という意味で、「過去の事実に反する仮定」を表します。

なお、この表現は without / but for で書き換えることができます。

(14) If it had not been for [Without / But for] the storm, we would have arrived on time.
もし嵐がなかったら、私たちは時間通りに着いていただろうに。
(→ 実際は嵐だったので、時間通りに着かなかった)

なお、if it had not been for ~ では if を省略することができ、その場合は倒置が起こります。

(14’) Had it not been for the storm, we would have arrived on time.

練習問題

最後に練習問題を解いてみましょう。

練習問題

次の文を仮定法を用いて書き換えなさい。

1.She didn’t come because you didn’t invite her.

2.Because I helped him, his business didn’t fail.

3.He is in trouble today because he didn’t take my advice.

解答

1.She would have come if you had invited her.

2.If I hadn’t helped him, his business would have failed.

3.He wouldn’t be in trouble today if he had taken my advice.

「仮定法過去完了」という名前については、if節で動詞の「過去完了形」を使い、主節で〈助動詞の過去形 + 完了形〉を使う文型と理解してください。