判断基準はただ一つです:出来事が「過去の一点」で終わっているなら過去形、今とつながっているなら現在完了形。yesterday、in 2019、last week などの過去を示す言葉が文にあれば必ず過去形、「〜したことがある」「もう〜した(今もその結果がある)」「〜以来ずっと」なら現在完了形を使います。
下の30問は中学レベルの基礎から入試・TOEICレベルまで3段階に分かれています。解答はクリックした瞬間に採点され、それぞれの問題に「なぜその形になるのか」を日本語で解説します。間違えた問題の解説こそが、日本語の感覚と英語のルールのズレを埋める一番の教材になります。
現在完了形 vs 過去形 クイズ 30問
ルールまとめ:時制は「言葉」で決める
現在完了形か過去形かは、意味で悩むより文の中の言葉で機械的に決めるのが確実です。過去を一点で指定する語(yesterday, last week, in 2019, two years ago, when I was a child)があれば過去形。今につながる語(just, already, yet, ever, never, since, for, recently, so far, over the past〜)があれば現在完了形です。
よくあるひっかけパターン
入試やTOEICで出るひっかけは、ほぼ次の4パターンに集約されます。どれも「一見現在完了形に見える言葉が入っているが、実は過去形」というものです。
なぜ日本人はこの使い分けでつまずくのか
根本的な原因は、日本語に英語の「完了相(perfect aspect)」に対応する文法形式が存在しないことです。英語の現在完了形は「過去の出来事+今の状態」をひとつの形(have + 過去分詞)で表しますが、日本語は「もう宿題をした」「宿題をしたことがある」「2010年から住んでいる」をすべて普通の「〜した/〜している」で済ませてしまいます。つまり日本人の頭の中には、時制を「過去・完了」で分ける棚がそもそも用意されていないのです。
さらに厄介なのは、現在完了形の文を日本語に訳すとほぼすべて「〜した/〜ている」という過去形か現在形に聞こえることです。「I have lost my keys」=「鍵を失くしました(過去形に聞こえる)」、「I have lived in Osaka since 2010」=「2010年から住んでいます(現在形に聞こえる)」。このように日本語の訳と英語の形がズレているため、訳して考える学習法では永久に定着しません。ルールを言葉(yesterday があったら過去形、just / since / yet があったら完了形)で機械化し、繰り返し判定する訓練が必要です。
効果的な練習方法
時制は「知識」ではなく「反射」で決めるものです。1日30問を1週間、間違えた問題の解説を読み直してからもう一度解く、というサイクルが最も効率的です。このページは採点が即時なので、間違えた瞬間に解説が目に入り、記憶に残りやすくなっています。
そのあとは自分の英文で確かめましょう。PromGeeの無料英文法チェッカーに自分のメールや日記を貼り付けると、時制の判断ミスを指摘し、なぜその時制になるかを日本語で説明してくれます。自分が書いた文で間違えた経験は、ドリルより記憶に残ります。
もっと練習する
よくある質問
現在完了形と過去形の一番シンプルな見分け方は?
文の中に yesterday、last week、in 2019 など過去の時点を示す言葉があれば過去形、just、already、yet、since、for など今につながる言葉があれば現在完了形です。言葉がなければ「その出来事の結果が今も残っているか」で判断します。
「〜したことがある」は全部現在完了形ですか?
経験を表す「〜したことがある」は現在完了形(have + 過去分詞)です。ただし文の中に過去の時点(last year など)がある場合は「去年行った」=過去形になります。「I have been to Kyoto. / I went to Kyoto last year.」のように言葉で決まります。
have been と have gone の違いがわかりません
have been to は「行ったことがある(今は戻っている)」という経験、have gone to は「行ってしまって今も向こうにいる」という結果です。He has gone to America. He will be back next month. のように、帰ってくる予定の話なら have gone が正解です。
ルールを知っても、自分の文章で間違えると本番で直せません。PromGeeの無料英文法チェッカーにメールや日記を貼り付けると、時制の判断ミスを日本語で解説してくれます。
無料で英文をチェックする