仮定法とは、現実とは違うことや実現しそうにないことを、動詞の時制を一つ過去にずらして表す形です。今の事実に反する仮定は仮定法過去(If I were rich, I would buy a house.「お金持ちなら家を買うのに」)、過去の事実に反する仮定は仮定法過去完了(If I had known, I would have helped.「知っていたら手伝ったのに」)で表します。仮定法過去は名前に「過去」とありますが、話しているのは今のことです。過去形は「過去の時点」ではなく「現実からの距離」を表しています。
日本語の「もし〜なら、〜のに」は、今の話でも過去の話でも動詞の時制を変えずに言えます。そのため、英語で「時制をずらす」こと自体に気づきにくく、I wish I have a car. や He talks as if he knows everything(実際は知らないのに)のような誤りが生まれます。このページは仮定法の全体像をまとめた解説で、if 文の基本形を集中して練習するドリルは「仮定法過去・過去完了:練習問題25問」に分けています。下の30問は、I wish・If only・as if・It's time・Without / But for・If it were not for・倒置(Were I / Had I / Should you)・混合仮定法を中心に、基礎・応用・実践の3段階で出題します。各問をクリックするとその場で採点され、日本語の解説が表示されます。
仮定法 総合クイズ 30問
基礎(仮定法の形と I wish)
応用(wish・as if・without・it が主語の形)
実践(混合仮定法・倒置・入試レベル)
解答と解説クイズ後に開いて確認できます。
- 1. had主節が would learn なので、今の事実に反する仮定法過去です。if 節は過去形 had にします。「今は時間がない」という現実から一歩離れた話なので、現在形 have ではなく過去形を使います。
- 2. would have caughtif 節が had left(過去完了)なので、過去の事実に反する仮定法過去完了です。主節は would have+過去分詞で「バスに間に合っただろうに(実際は乗り遅れた)」となります。
- 3. hadI wish+仮定法過去で「今〜ならいいのに」。今、車を持っていないという事実に反する願望なので、過去形 had を使います。日本語の「持っていればなあ」に引っぱられて現在形 have にしないよう注意しましょう。
- 4. wereI wish のあとの be 動詞は、主語が he でも were が規範的な形です。今いないという事実に反する願望なので、現在形 is や未来の will be は使えません(会話では was も聞かれます)。
- 5. knewIf only は I wish よりも強い「〜でさえあればなあ」という願望です。now とあるので今の話で、仮定法過去 knew を使います。had known は過去の話(あのとき知っていれば)になります。
- 6. knewas if+仮定法過去で「まるで〜であるかのように」。実際にはほとんど知らないので、事実に反する過去形 knew です。話し手が「本当に知っているかもしれない」と思う場合は as if he knows も使われますが、ここでは後半で否定されています。
- 7. wentIt's time+主語+過去形で「もう〜する時間だ(なのにまだしていない)」。寝るのは今からですが、まだ寝ていないという現実とのずれを過去形 went で表します。It's time for you to go to bed. と言い換えることもできます。
- 8. couldI wish のあとでは助動詞も過去形にずらします。「今泳げない」ことへの願望なので can を could にして I wish I could swim. です。
- 9. wereIf it were not for〜で「(今)〜がなければ」。主節が would be … now なので今の話の仮定法過去です。過去の話なら If it had not been for〜 ですが、had been を入れると not の位置がずれて誤りになります。
- 10. 日常会話では使われるが、試験や改まった文章では If I were you が無難仮定法の be 動詞は主語にかかわらず were が規範的な形ですが、会話では If I was you と言うネイティブも珍しくありません。ただし試験や改まった文書では were を選ぶのが安全です。was のほうが丁寧ということはありません。
- 11. hadn't sentyesterday の過去の行動への後悔なので、I wish+過去完了で「送らなければよかった」。時制を一つずらすので、過去の話は過去完了 hadn't sent になります。didn't send では「今の話」のずらし方になってしまいます。
- 12. had seen「幽霊を見たかのような顔をしていた」。見たのは顔つきより前のことなので as if+過去完了 had seen です。looked という過去の文に has seen や sees を続けることはできません。
- 13. had listenedback then(あのとき)なので過去の事実に反する願望で、If only+過去完了 had listened です。「あのとき先生の言うことを聞いてさえいれば」という強い後悔を表します。
- 14. would have beenBut for〜 は Without〜 と同じ「〜がなければ/なかったら」。yesterday の話なので、主節は仮定法過去完了の would have been です。But for / Without そのものは時制を示さないので、主節の形と時を表す語で判断します。
- 15. would stopI wish+would+原形は「(いい加減)〜してくれたらいいのに」と、これから起きてほしい変化への願望やいら立ちを表します。I wish の後ろに will や現在形は置けません。
- 16. had not been主節が would have failed … last year なので過去の話。If it had not been for〜で「(あのとき)〜がなかったら」です。If it were not for〜 は今の話なので、ここでは時がずれます。
- 17. wereas though は as if とほぼ同じ意味です。実際はただの新入社員なので、事実に反する仮定法過去 were(会話では was も可)を使います。
- 18. would beWithout〜 は If it were not for〜 と同じ仮定の意味で、today の話なので主節は仮定法過去の would be です。実際にはインターネットがあるので、現実をそのまま述べる are や will be は使えません。
- 19. didn't know「何度も会ったことがあるのに、私を知らないかのように振る舞った」。知らないのは振る舞ったのと同じ時点なので、as if+仮定法過去 didn't know です。主節が過去形 behaved でも、同時のことは過去形のままで表します。
- 20. tookIt's high time+過去形で「とっくに〜すべき時だ(なのにまだしていない)」。high を入れると It's time よりも批判やいら立ちが強くなります。動詞は過去形 took です。
- 21. would be livingif 節は2020年の過去の仮定(過去完了)、主節は now の今の結果なので、混合仮定法で主節は would+原形(ここでは進行形の would be living)です。would have lived は過去の結果になり、now と合いません。
- 22. wouldn't be昨夜の過去の仮定(hadn't stayed up)と、今の結果(now)を組み合わせた混合仮定法です。主節は今の話なので wouldn't be。混合仮定法では「if 節の時」と「主節の時」を別々に判断します。
- 23. WereIf I were rich の if を省くと、were が主語の前に出て Were I rich となります(倒置)。倒置の形では was は使わず、必ず were です。If だけを残した If I rich は動詞がなく誤りです。
- 24. ShouldIf you should need〜(万一〜なら)の if を省いた倒置で Should you need〜。ビジネスメールの結びで非常によく使われる丁寧な言い方です。Were you need や Would you need は文法的に成り立ちません。
- 25. HadIf it had not been for〜 の if を省いた倒置で Had it not been for〜。主節が would have arrived なので過去の話です。Were it not for〜 は今の話(If it were not for〜 の倒置)になります。
- 26. shouldIf+主語+should+原形で「万一〜なら」と、可能性が低い未来を仮定します。if 節に will や would は置けません。should を使った文の主節は will でも would でもかまいません。
- 27. wereIf+主語+were to+原形で「仮に〜するとしたら」と、実現の可能性がほとんどない未来を仮定します。倒置すると Were you to win the lottery, … になります。
- 28. If he hadn't had the accident, he would be a professional player now.「あのとき」の過去の仮定は過去完了 hadn't had、「今ごろ」の結果は would+原形の混合仮定法です。if 節を過去形にすると今の仮定になり、主節に will を置くと仮定法になりません。
- 29. didn't tellwould rather+主語+過去形で「(相手に)〜してほしい」。内容は今やこれからのことでも、仮定法の過去形 didn't tell を使います。会話では don't tell も耳にしますが、規範的な形は過去形です。
- 30. would have bakedHad I known は If I had known の倒置で、過去の事実に反する仮定です。主節は would have+過去分詞の would have baked で「来ると知っていたらケーキを焼いたのに」となります。
仮定法の3つの基本形:仮定法過去・過去完了・混合
仮定法は「いつの事実に反しているか」で形が決まります。if 節と主節の時を別々に判断し、それぞれ一つずつ過去にずらすのが基本です。
- 仮定法過去(今の事実に反する):If+主語+過去形, 主語+would / could / might+原形 例:If I had time, I would help you.
- 仮定法過去完了(過去の事実に反する):If+主語+had+過去分詞, 主語+would / could / might have+過去分詞 例:If I had known, I would have come.
- 混合仮定法(過去の仮定→今の結果):If+主語+had+過去分詞, 主語+would+原形 例:If I had studied abroad, I would speak English better now.
- be 動詞は主語にかかわらず were が規範的な形:If I were you, …
if 文の基本の組み立て(真の条件との区別、if 節に will を入れない など)は「仮定法過去・過去完了:練習問題25問」でまとめて練習できます。
仮定法過去とは:今の事実と違うことを過去形で表す
仮定法過去は、今の事実に反することや、実現の可能性が低いことを想像して話す形です。名前に「過去」とありますが、話しているのは今のことです。If I lived near the sea, I would go surfing every day.「海の近くに住んでいたら毎日サーフィンに行くのに(実際は住んでいない)」のように、if 節は過去形、主節は would+原形になります。
主節の助動詞を could にすると「〜できるのに」、might にすると「〜するかもしれないのに」になります。過去形は過去の時点ではなく「現実からの距離」を表していると考えると、I wish I had や It's time you went などの形もすべて同じ理屈で理解できます。
仮定法過去完了とは:過去の事実と違うことを過去完了で表す
仮定法過去完了は、過去に実際には起こらなかったことを想像したり、後悔したりするときの形です。If I had left five minutes earlier, I would have caught the train.「あと5分早く出ていれば電車に間に合ったのに(実際は乗り遅れた)」のように、if 節は had+過去分詞、主節は would have+過去分詞です。
過去のことなので過去形を使いたくなりますが、仮定法では「さらに一つ前」にずらして過去完了にします。if 節が過去で主節が今の話なら、混合仮定法(If I had〜, I would+原形 … now)になる点にも注意してください。
if を使わない仮定法:I wish・If only・as if・It's time・Without・倒置
- I wish+過去形(今の願望)/過去完了(過去の後悔):I wish I were taller. / I wish I had studied harder.
- I wish+would+原形(これからの変化への願望・いら立ち):I wish he would stop talking.
- If only+過去形/過去完了:I wish より強い「〜でさえあればなあ」
- as if / as though+過去形/過去完了:まるで〜であるかのように/〜だったかのように
- It's time+主語+過去形:もう〜する時間だ(It's high time でさらに強調)
- Without〜 / But for〜:〜がなければ(今の話にも過去の話にも使える。時は主節で決まる)
- If it were not for〜(今)/If it had not been for〜(過去):〜がなければ/〜がなかったら
- 倒置:Were I〜(=If I were)、Had I known〜(=If I had known)、Should you need〜(=If you should need)
- would rather+主語+過去形:(相手に)〜してほしい I'd rather you stayed.
倒置の形では was は使えません。Were I you(○)/Was I you(×)。If を省いたら、were・had・should を主語の前に出すと覚えましょう。
were と was:If I were と If I was はどちらが正しい?
仮定法の be 動詞は、主語が I・he・she・it でも were を使うのが規範的な形です。If I were you, … や I wish she were here. は試験でも書き言葉でも必ず通用します。一方、日常会話では If I was you や I wish it was Friday. と言うネイティブも多く、口語では was も広く使われています。
使い分けの目安は、試験・ビジネス文書・改まった場面では were、くだけた会話では was も可、です。ただし倒置の Were I〜 や決まり文句の If I were you、as it were(いわば)は were しか使いません。
なぜ日本人は仮定法でつまずくのか
日本語の「もし〜なら、〜のに」は、今の話でも過去の話でも動詞の時制が変わりません。「お金があれば買うのに」も「お金があったら買ったのに」も、違いは文末の「のに」と「た」くらいです。英語ではこの違いを if 節と主節の両方の時制で表すので、日本語の感覚のままだと I wish I have や If I know, I would のように、ずらし忘れが起こります。
また、「仮定法過去」という用語は「過去の話」に聞こえるため、If I were you を過去のことだと誤解する人も少なくありません。名前は「形が過去形」という意味で、内容は今の話です。「今の話→過去形、過去の話→過去完了」と、内容の時と形の時を一つずらして覚えるのが近道です。
もっと練習する
よくある質問
仮定法とは簡単に言うと何ですか?
現実とは違うことや、実現しそうにないことを話すときに、動詞の時制を一つ過去にずらして表す形です。今の事実に反するなら過去形(仮定法過去)、過去の事実に反するなら過去完了(仮定法過去完了)を使います。過去形は過去の時点ではなく「現実からの距離」を表しています。
仮定法過去と仮定法過去完了の違いは何ですか?
仮定法過去は「今の事実」に反する仮定で、If+過去形, would+原形(If I had money, I would buy it.)。仮定法過去完了は「過去の事実」に反する仮定で、If+had+過去分詞, would have+過去分詞(If I had had money, I would have bought it.)です。日本語では「〜なら〜のに」と「〜だったら〜したのに」の違いに当たります。
I wish と If only はどう違いますか?
どちらも「〜ならいいのに」という事実に反する願望で、後ろの形(今の話は過去形、過去の話は過去完了)も同じです。If only のほうが感情が強く「〜でさえあればなあ」という響きになり、感嘆文のように If only I had listened! と単独で使われることが多いです。
自分の仮定法の英文をその場で確認
I wish I have や as if he knows のような時制のずらし忘れは、自分では気づきにくいミスです。PromGeeの無料英文法チェッカーに英文を貼り付けると、仮定法の形の誤りを解説してくれます。
無料で英文をチェックする