本文へスキップ

英文法ドリル

仮定法過去・過去完了:練習問題25問

if の後ろに will は置けない、過去形が来たら「非現実」のサイン、would の直後は原形・過去の後悔は would have+過去分詞——判定は2段階です。まず「話し手が実現すると思っているか(真の条件)」「もしもの世界の話か(仮定法)」を分けます。次に「基準が今か過去か」で時制を決めます。下の25問で、日本語の「〜たら・〜ば」が消してしまうこの2つの判断を、全問日本語解説つきで練習します。

著者: Raheel Ashraf読了の目安:約24分

無料の練習: 英語 Grammar 練習問題|無料・解答と解説つき

仮定法の英文は2段階の判定で組み上がります。第一段階は「実現しそうか、もしもの話か」です。「明日雨が降ったら」は実現しうる話なので If it rains(if 節には未来でも現在形を使い、will を置かない)。「もしお金があったら」は今の現実に反するので If I had money, I would〜(過去形は過去の出来事ではなく、現実から一歩引いた距離を示しています)。第二段階は「基準の時点が今か過去か」で、過去のもしもは If I had known, I would have helped と had+過去分詞/would have+過去分詞の二段構えになります。

日本語の「〜たら・〜ば・〜と・〜なら」は、それぞれ違う条件の性質を表しますが、英語にするとほとんどが if 一語になります。実現するかしないかの情報は、英語では接続詞ではなく動詞の時制で表すので、日本語の感覚のまま組み立てると if 節に will を置いたり、would を二つ並べたりしてしまいます。下の25問は基礎(真の条件・will 禁則)・応用(仮定法過去と would/were)・実践(仮定法過去完了・混合仮定法・wish・倒置)の3段階で、各問即時採点です。解説では、対応する日本語(たら・ば・と・なら・のに)にも触れながら理由を説明します。

仮定法・if文 クイズ 25問

問題は全25問から10問ずつ出題されます。1回分を終えると続きに進めます。すべての問題と解答は下にも載っています。

1 / 10

基礎(真の条件)

If it ___ tomorrow, we'll cancel the picnic.

全問題・解答・解説クイズ後に開いて確認できます。
  1. 1. If it ___ tomorrow, we'll cancel the picnic.

    • rains
    • will rain
    • would rain

    正解: rains · if の条件節では、未来のことでも現在形を使います。「明日」の情報は主節の we'll cancel が既に背負っているので、if 節まで will で二重にする必要がないのです。would rain は論外として、will rain を選びたくなるのは、日本語の「降ったら」が既に未来の情報を持っているので if にも未来の形を置きたくなるから。if の穴に置けるのは現在形 rains だけです。

  2. 2. I'll text you as soon as I ___ at the station.

    • arrive
    • will arrive
    • arrived

    正解: arrive · as soon as(〜した直後に)や when も if と同じく、条件・時を表す接続詞なので、未来の話でも節は現在形にします。will arrive とすると「着きます」の未来表現が主節と節で二つ並びます。主節の I'll text を見たら、時点はそこで受け止めて節は現在形、と組むのがルールです。

  3. 3. You'll miss the train ___ you hurry.

    • unless
    • if
    • when

    正解: unless · unless は「〜しない限り(=if not)」。「急がない限り、列車に間に合いません」です。if you hurry(急げば)では逆の論理になります。日本語に「〜しない限り」に対応する接続詞がないので、unless は形ではなく意味で覚える語です。

  4. 4. 「日本に行くなら、京都に行きたい」の英語はどれ?

    • If I go to Japan, I'd love to visit Kyoto.
    • If I will go to Japan, I want to visit Kyoto.
    • If I would go to Japan, I would love to visit Kyoto.

    正解: If I go to Japan, I'd love to visit Kyoto. · 日本語の「〜なら」がまだ確定していない未来の条件なので、if +現在形。「行く気になるかどうかわからない」の段階です。未来の will を if 節に置くのは誤りです。would も、丁寧な依頼などの特別な場合を除いて if 節には置きません。仮定の話にしたいなら If I went to Japan, I'd visit Kyoto. と if 節を過去形にします。

  5. 5. She ___ upset if I tell her the truth.

    • will be
    • would be
    • would have been

    正解: will be · if I tell her(現在形)は「実際に言うつもりがある」真の条件なので、主節は will be。would be を選んでしまうのは、「真実を言ったら怒るだろう(でも言うのはちょっと怖い)」という含みのある「〜たら」に would を対応させたくなるからです。主節の形は日本語の含みではなく、if 節の時制が決めていることを忘れずに。

  6. 6. If you heat ice, it ___.

    • melts
    • will melt
    • would melt

    正解: melts · 「加熱すると溶ける」は一度きりの未来ではなく「いつでもそうなる」という自然の法則なので、if 節も主節も現在形になる零条件(zero conditional)です。日本語の「氷を加熱する+と」がこれに対応します。will melt は「今から加熱したら、溶けるだろう」という単発の未来の話になって、法則の文では不自然です。

  7. 7. 「彼が来なければ、始めましょう」の正しい英語はどれ?

    • If he doesn't come, let's start.
    • If he won't come, let's start.
    • If he not come, let's start.

    正解: If he doesn't come, let's start. · if 節の未来の否定は現在形の doesn't come。If he won't come は「彼が来ようとしないなら(来ないと言い張るなら)」という拒否の意志を表す特別な言い方になり、単に「来なければ」という条件とは意味がずれます。If he not come は助動詞 doesn't が抜けた形で、英語では成立しません。

  8. 8. If I ___ you, I'd apologize.

    • was
    • were
    • am

    正解: were · 仮定法の be 動詞は、主語が I でも he でも were を使うのが規範です(If I were you「もし私があなたなら」)。会話では was も許容されますが、テストや文法書では were が正解です。am は現実の話になるので、if I am you(私があなたである現状)が成立しません。

  9. 9. What would you do if you ___ a million dollars?

    • won
    • would win
    • had won

    正解: won · 主節に would が見えたら、if 節は現在形から一歩ずらした過去形(won)です。実際には大金を手にしていないという「もしも」ですね。would win を if 節に置く二重 would が定番ミス(if 節には would が入らない)。had won は「もし勝っていたら(もう過去のこと)」の仮定法過去完了で、この文の話の時点とは合いません。

  10. 10. 「もし今日一日暇だったら、ビーチに行くのに」の英語はどれ?

    • If I had a day off today, I would go to the beach.
    • If I have a day off today, I would go to the beach.
    • If I would have a day off today, I would go to the beach.

    正解: If I had a day off today, I would go to the beach. · 「行くのに」が信号です。本当は今日暇じゃないという「もしも」なので、現実から一歩引いた had a day off + would go。have + would の組み合わせは時制がねじれて不成立、would have を if 節に置くのも定番の二重 would ミスです。日本語の「〜なのに/〜ばいいのに」が仮定法過去のマーカー、と覚えると一気に読める文が増えます。

  11. 11. If she studied harder, she ___ better grades.

    • would get
    • will get
    • would have got

    正解: would get · if 節が過去形(studied)なので、主節は would +原形(would get)のペア。「もっと勉強していれば(実際はしていない)、もっと点が取れるのに」という今の仮定です。will get は真の条件の相棒。would have got は「勉強していたら取れたのに」という過去の話を待っています。

  12. 12. I wish I ___ taller.

    • am
    • were
    • would be

    正解: were · wish +過去形は「今そうではないけれど、そうだったらいいのに」(仮定法過去)。「身長は変えられない」という現実を前提にしています。I wish I would be の形で would を置くのは「変化してほしい」という他人・未来への願望で、自分の今の状態には使いません。

  13. 13. If we left now, we ___ the traffic.

    • would avoid
    • will avoid
    • avoided

    正解: would avoid · left(過去形)の相棒は would +原形。「今出れば渋滞を避けられるのに(実際はすぐには出られない)」という今のもしもです。will avoid に引かれるのは、「今から出れば」が未来の話なので will が欲しくなる日本語発想から。未来のことでも、if 節が過去形に倒れた瞬間に「もしも」へ切り替わります。

  14. 14. If you ___ wait a moment, I'll check for you.

    • would
    • would have
    • had

    正解: would · 「if 節に would は置かない」原則の、覚えておくと便利な例外です。If you would wait a moment は仮定ではなく「少しお待ちいただけますか」という丁寧な依頼で、would は相手の意志を尋ねる働きをしています。同じ意味で If you'll wait a moment(意志の will)も使われ、こちらは少しくだけた響きです。would have と had は動詞の原形 wait とつながりません。

  15. 15. 「もしスマホがなかったら、どうする?」の英語はどれ?

    • What would you do if you didn't have a smartphone?
    • What would you do if you don't have a smartphone?
    • What would you do if you wouldn't have a smartphone?

    正解: What would you do if you didn't have a smartphone? · 今スマホを持っている人が「ない世界」を想像しているので、if 節は didn't have(仮定法過去)。don't have を入れると「もしあなたがスマホを持っていないとして(本当に持っていないかもしれない)」という現実的な質問になり、would と時制が噛み合いません。would + have を if 節に置くのは定番ミスです。

  16. 16. I have no problem ___ you keep your promise.

    • as long as
    • as far as
    • even if

    正解: as long as · as long as(so long as も可)は「あなたが約束してくれるなら」という条件の接続詞で、意味上は if の仲間です。as far as は範囲を表し(as far as I know「私が知る限り」)、even if は「たとえ〜でも(譲歩)」なので、条件を述べる文の意味にならず、「約束を守ろうと守るまいと」という別の意味になってしまいます。if 以外の条件接続詞も日本語では「たら・ば」に訳できますが、条件の温度がそれぞれ違うのが実践の論点です。

  17. 17. If I were the manager, I ___ more staff.

    • would hire
    • will hire
    • hired

    正解: would hire · were(仮定法過去)の相棒は would +原形。「私はマネージャーじゃないけど、もしそうならもっと人を雇います」という今のもしもです。hired だけだと「採用した」という事実の過去になり、if と組めません。will は現実の未来(実際にマネージャーで、実際に雇う予定がある話)に使う形です。

  18. 18. If I had known about the meeting, I ___ there.

    • would have been
    • would be
    • had been

    正解: would have been · if + had +過去分詞(過去のもしも)には、主節 would have +過去分詞(実際は行かなかった)。日本語の「〜だったのに/〜しておけばよかった」に対応する、後悔の文の型です。would be を選ぶと「今そこにいるのに」という話と時制がねじれます。

  19. 19. 「もっと練習していれば、勝てたのに」の英語はどれ?

    • If I had practiced more, I would have won.
    • If I practiced more, I would have won.
    • If I would have practiced more, I would have won.

    正解: If I had practiced more, I would have won. · 反省の舞台はすでに終わった試合なので、if 節は had practiced、主節は would have won と、時制を一段ずつ過去にずらす二段構えが揃います。If I practiced だと「普段もっと練習していれば(今の話)」になって、勝った試合の話と時点が合いません。would have を if 節に置くのは、日本語話者が最もやりすぎる二重 would ミスです。

  20. 20. She would have become a doctor if she ___ medicine.

    • had studied
    • would have studied
    • has studied

    正解: had studied · 主節に would have become(過去の反事実)が見えているので、if 節は had studied で受けます。would have studied を選んでしまうのが定番の二重 would。has studied は「彼女は医学を勉強してきた(本当に)」という現実の現在完了なので、もしもワールドと組めません。仮定法で問われるのは「完了形かどうか」ではなく「時制をいくらずらすか」です。

  21. 21. If you ___ told me earlier, I could have helped.

    • had
    • would have
    • have

    正解: had · if 節の had +過去分詞(had told)で「もっと早く教えてくれたなら」。主節の could have helped(助けてあげられたのに)とのペアです。would have を if 節に置かない原則はここでも生きています。have told だと「本当に教えてくれた」という現実の話になり、助動詞のずれと組めません。

  22. 22. ___ I known about the problem, I would have fixed it.

    • Had
    • If
    • Should

    正解: Had · if を落として had を前に出す倒置(Had I known = If I had known)。フォーマルな書き言葉で、報告書や改まったビジネス文書で見かける形です。Should I known は文法崩れ、If I known は had が欠けています。known という過去分詞を見て、had known の had が消えていることに気づけるかが勝負です。

  23. 23. 「あのときその仕事を引き受けていなければ、今ここにいなかったよ」の英語はどれ?

    • If I hadn't taken that job, I wouldn't be here now.
    • If I didn't take that job, I wouldn't be here now.
    • If I hadn't taken that job, I wouldn't have been here now.

    正解: If I hadn't taken that job, I wouldn't be here now. · 原因は過去(引き受けた/hadn't taken)、結果は現在(今ここにいる/wouldn't be now)——時制のステップが異なる混合仮定法です。didn't take にすると「普段その仕事に就いていない(今の仮定)」になって、あの出来事の話から外れます。wouldn't have been は「あの頃はここにいなかった」という過去完結の話になって now と噛み合いません。

  24. 24. I wish I ___ harder for the exam last term.

    • had studied
    • studied
    • would have studied

    正解: had studied · wish の後ろが過去の話(last term)なら、もう一段深い過去完了 had studied。「もっと勉強しておけばよかった」という、やり直せない過去の後悔です。studied だけだと「今勉強していればよいのに」に読めてしまいます。would have は if 節でも wish 節でも置けません。

  25. 25. Without that phone call, we ___ the train.

    • would have missed
    • will miss
    • would miss

    正解: would have missed · Without that phone call は If we hadn't received that phone call と同じ仮定です。電話は現実にあって無事に間に合っているのだから、「なければ列車に乗り遅れていただろう」は would have missed で組みます。if 節の形をしていなくても、背景に過去の反事実があることを読み取れるかが実践力の分かれ目です。

このクイズをクラスの課題にする

無料で、生徒のアカウント登録も不要です。

先生向けの活用ヒント(英語ページ)

仮定法過去:過去形で現在の仮定を表す

仮定法過去は、現在や未来について現実と距離のある状況を想像する形です。If I had more time, I would travel. は「今もっと時間があれば旅行するのに」という意味で、had だけを見て過去の出来事と判断しないことが大切です。

過去の事実と違う想像には仮定法過去完了を使います。If I had left earlier, I would have caught the train. は、過去の出発時刻を変えて考えています。まず仮定の基準時を決め、それから形を選びましょう。

  • 現在の仮定:if + 過去形、would + 原形。
  • 過去の仮定:if + had + 過去分詞、would have + 過去分詞。
  • 丁寧・正式な仮定では If I were you の were を確認します。

ルールまとめ:if 文の2段階判定

仮定法は暗記ではなく判定順です。①現実の条件か、もしもの話か。②もしもなら、基準の時点は現在か過去か。の2問に答えてから動詞を決めます。

  • 現実の条件(明日の話・法則)→ if +現在形、主節 will/現在形。if 節に will は入れない
  • 今のもしも(事実に反する)→ if +過去形、主節 would +原形。be 動詞は were が規範
  • 過去のもしも(後悔・反省)→ if +had +過去分詞、主節 would have +過去分詞
  • wish:今の願望は過去形、過去の後悔は過去完了
  • unless=if not「〜しない限り」、as long as「〜する限り(条件)」
  • フォーマルな圧縮形:Had I known…(=If I had known)、If it were not for…(=それがなければ)

would を二つ並べないこと。would が入るのは原則として「if 節の外側(主節)」だけで、節の方の位置は常に時制をずらした動詞(過去形/had +過去分詞)です(丁寧な依頼の If you would… は例外)。

仮定法過去とは:If I were / If I had の形と意味

仮定法過去は、今の事実と違うことや、実現の見込みが低い未来を想像して話す形です。if 節に動詞の過去形、主節に would / could / might +動詞の原形を置きます。名前に「過去」とありますが、話している時点は現在です。If I had a car, I would drive to work. は「(実際には車を持っていないけれど)車があれば車で通勤するのに」という意味になります。

be動詞は、主語が I や he でも were を使うのが規範的な形です。If I were you, I would talk to your manager first.「私があなたなら、まず上司に相談します」は助言の定番表現です。会話では If I was… もよく聞かれますが、試験や改まった文書では were を選んでください。If I were you は決まり文句として were のまま覚えましょう。

主節の助動詞を替えると、意味の強さが変わります。would は「〜するだろうに」、could は「〜できるのに」、might は「〜するかもしれないのに」です。If we had more staff, we could finish the project this week.「人手がもっとあれば、今週中にプロジェクトを終えられるのに」のように、職場の「足りないもの」を話すときにもよく使います。

  • If I knew her email address, I would send her the file.(アドレスを知らないので送れない)
  • If I didn't have club practice, I'd go to the festival.(部活があるので行けない)
  • If it weren't raining, we could eat lunch in the park.(今、雨が降っている)
  • What would you do if you won the lottery?(実現の見込みが低い未来の話)
  • I wish I were taller. / I wish I spoke English better.(今の願望も同じ過去形)

if 節に yesterday や last week など過去の時点を入れたくなったら、仮定法過去ではなく仮定法過去完了(had +過去分詞、主節は would have +過去分詞)を使います。If I had studied harder last year, I would have passed. のように、基準の時点で形を選び分けてください。

最大のつまずき点:たら・ば・と・ならは4つ、ifは1つ

日本語の条件表現は「明日雨が降ったら行く(仮定)」「春になると桜が咲く(必然)」「時間があれば行きます(十分条件)」「金持ちなら遊ぶのに(現実に反するもしも)」と、助詞の使い分けで条件の温度を細かく書き分けます。一方、英語は接続詞なら if(+ unless / as long as)でほぼ固定で、温度と時点の情報は接続詞ではなく「時制の一段ずらし」に載せます。日本語話者が if 節に will や would を置きたくなるのは、助詞に相当する情報を動詞側に載せる発想が日本語にないためです。

もう一つのズレは「もしも」です。日本語の「もし」は前に置くだけの飾りの語で、「もし時間があれば」の動詞は「ある+たら」のまま、時制は動きません。英語は非現実に「過去の形」を借りて、これを表します。If I had time の had は「持っていた」という過去の事実ではなく、「持っている(現実)を一段後ろに下げて置く形」です。時制の一致ではなく距離の表現だと理解すると、would/were/had known が全部同じ論理で繋がります。

  • 「明日時間があれば行く」→ If I have time tomorrow, I'll go.(まだ実現しうる話)
  • 「時間があれば行くのに(今は忙しい)」→ If I had time, I would go.(もしも)
  • 「もっと早く言ってくれていれば」→ If you had told me earlier.(過去のもしも)
  • 「春になると暖かくなる」→ When spring comes, it gets warmer.(「と」は必然なので if より when)

日本語の「たら・ば」を見て英語を組み立てる前に「これは現実の話?もしも?基準は今?過去?」の4択に分解する癖をつけると、will/would と had の選択はほぼ迷わなくなります。

なぜ日本人は仮定法で間違えるのか

文法用語が邪魔をしている節があります。「仮定法過去」という名前は「過去の事実について語っている」ように聞こえますが、中身は「今のもしも」です。用語と中身がずれているため、If I were you を過去の話だと受け取ってしまうことがあります。名前にとらわれず「現実から一歩引いた形」と捉え直すと、would の使い道が整理しやすくなります。

もう一つは、過去の「実際には起こらなかったこと」の表し方です。日本語では「〜したのに」「〜すればよかった」「〜できたのに」を文末の言い方で区別しますが、英語では「助動詞+have+過去分詞」の助動詞を入れ替えて区別します。would have done は「(条件がそろっていれば)〜しただろうに」、could have done は「〜できただろうに」、might have done は「〜したかもしれないのに」です。should have done「〜すべきだったのに」も同じ形ですが、こちらは if 節がなくても単独で後悔や反省を表します(I should have checked.)。if 節側は、どの助動詞を使う場合も had+過去分詞です。実践グループの8問は、この過去の反事実を集中して練習できるように並べています。

仮定法の英文を読んだら「これは現実の話?もしも?時点は今?過去?」を必ず声に出して確認。判定を声に出す訓練が、読みでも書きでもミスを減らします。

効果的な練習方法

1日に8〜9問ずつ、3日で25問を一周します。解説を読むときは「その文が現実の条件・今のもしも・過去のもしものどれか」を必ず自分の言葉で確認してください。翌日は間違えた問題だけを解き直します。

仕上げに自分の体験を仮定法で3文書いてみましょう。I wish I had 〜ed / If I had 〜ed, I would have 〜ed は、実は誰にでも書ける題材の塊です。書いた英文を PromGeeの無料英文法チェッカーに貼り付ければ、二重の would や if 節の will 混入を短い説明つきで指摘します。

もっと練習する

よくある質問

if の後ろに will は本当に置けませんか?

未来を表す will は、if 節には置けません(If it will rain tomorrow は不可)。ただし意志の will なら例外として許されます(If you will wait a moment「もし待っていてくださるなら」)。迷ったときは「その will は未来の話?意志の話?」と自問してみるのが最短です。また、主節側の will(I will go if... は可)は原則どおり主節に置けばよいので、禁止なのは「条件の if 節に未来の will を入れること」だけ、と整理しておけば安全です。

仮定法過去と仮定法過去完了の見分け方は?

基準の時点で見分けます。「今お金がない」(今の事実)ベースのもしもは If I had money, I would buy 〜。「過去に買いそびれた」(過去の事実)ベースの後悔は If I had bought it, I would have saved money。日本語の手がかりは「のに」で、「〜なのに(今)」が仮定法過去、「〜すればよかったのに(過去)」が仮定法過去完了です。

If I was と If I were はどちらが正しいですか?

規範的には If I were が正解とされます。I でも he でも were にするのが仮定法の伝統的な形です。ただし日常会話では If I was you というネイティブも珍しくなく、口語では was 容認・筆記と試験では were、と使い分けるのが現実的です。

英語学習プラットフォーム

PromGee の英語学習プラットフォームで、全 13 カテゴリーを練習できます。問題はあなたのレベルに合わせて出題され、すべての解答に解説がつき、学習の進捗はアカウントに保存されます。

無料で英文をチェックする
条件文の形: if + present; if + past; if + past perfect

参考資料・出典

続きを読む:関連ガイド

このテーマを無料ツールで練習: 無料英語時制クイズ (Verb Tenses Quiz)

英語レベルをチェック: 無料の英語レベル診断テスト(A1〜C2)

英語アプリを選ぶなら PromGee vs Duolingo