まずはこの3つ
- yesterday・ago・When〜? と現在完了は一緒に使えない
- have been to=行ったことがある/have gone to=行ってしまった
- 過去のある時点より前のことは過去完了 had p.p.
現在完了の4つの意味
どれも「過去の出来事が今とつながっている」点は同じ。目印の語で見分ける。
| 用法 | 意味 | 目印の語 | 例 |
|---|---|---|---|
| 完了・結果 | 〜したところだ/〜してしまった(今その状態) | just, already, yet | I have just finished lunch. |
| 経験 | 〜したことがある | ever, never, before, once, 〜 times | Have you ever been to Kyoto? |
| 状態の継続 | ずっと〜である | for, since, How long 〜? | We have known each other for ten years. |
| 動作の継続 | ずっと〜し続けている | for, since(完了進行形で) | It has been raining since noon. |
過去形と現在完了:今とつながるか
現在完了 vs 過去形:ここが核心7
- 1過去形は今のことを言わない過去形は過去の一点を述べるだけで、今どうかは言わない。現在完了は結果・経験が今に残っていることを表す。I lost my key.鍵をなくした。(今どうかは不明)I have lost my key.鍵をなくしてしまった。(今もない)
- 2明確な過去の語とは使えないyesterday・last week・〜 ago・in 2020・just now・When 〜? は過去の一点を指すので過去形で。✕When have you arrived? → When did you arrive?
- 3just と just nowjust(ちょうど)は現在完了、just now(ついさっき)は過去形と組むのが原則。He has just left.彼はちょうど出たところだ。He left just now.彼はついさっき出た。
- 4since+起点、for+期間since の後は過去の一点(since 2020 / since I was a child)、for の後は期間(for three years)。since 節の中は過去形が原則。I have lived here since I was ten.10歳の時からここに住んでいる。
- 5「〜してから…になる」の書き換え「彼が亡くなって10年」は5通りに言える。入試の書き換えの定番。It has been [It is] ten years since he died.彼が亡くなって10年になる。Ten years have passed since he died. = He died ten years ago. = He has been dead for ten years.(いずれもほぼ同じ意味)
- 6yet と alreadyalready は肯定文で「もう」、yet は否定文で「まだ」、疑問文で「もう」。疑問文の already は「もう?」という驚き。Have you finished your homework yet?もう宿題は終わった?
- 7※米口語の過去形アメリカの口語では Did you eat yet? のように just・already・yet と過去形を組むことも多い。入試の4択・正誤では現在完了を選ぶのが基本。
紛らわしい組を見分ける4
- have been to 〜〜へ行ったことがある/行ってきたところだvshave gone to 〜〜へ行ってしまった(今ここにいない)I・you+have gone to は不自然(今ここにいる)※米では経験の意も
- have been to Tokyo東京へ行ったことがあるvshave been in Tokyo東京にいた(ことがある)/(for 〜で)ずっといるto=訪問の経験、in=その場にいる(期間語で継続)
- How long have you lived here?ここにどのくらい住んでいる?vsWhen did you move here?いつここに引っ越してきた?期間を聞く→完了、時点を聞く→過去形
- I have read the book.その本を読み終えた(完了)vsI have been reading the book.その本をずっと読んでいる(途中)完了進行は「今(直前)まで続く途中」
過去完了・未来完了6
- 1過去完了=過去より前過去のある時点を基準に、それまでの完了・経験・継続を表す。基準の過去が文中か文脈にあるはず。When I got to the station, the train had already left.駅に着いた時、電車はもう出ていた。
- 2大過去過去の2つの出来事のうち、先に起きた方を had p.p. にして順序をはっきりさせる。I lost the watch my father had given me.父がくれた時計をなくした。
- 3順序が明らかなら過去形でよいbefore・after がある時や、起きた順に並べて書く時は過去形のままが普通。※4択では文脈で判断する。I had dinner after I took a bath.風呂に入ってから夕食を食べた。
- 4未来完了will have p.p. で、未来のある時点までの完了・経験・継続を表す。by 〜(〜までに)が目印。I will have finished the report by Friday.金曜までにはレポートを書き終えているだろう。If I visit Paris again, I will have been there three times.もう一度パリに行けば、3回行ったことになる。
- 5By the time の時制By the time S+現在形, S will have p.p.(未来)。By the time S+過去形, S had p.p.(過去)。By the time we arrived, the movie had started.私たちが着いた時には映画は始まっていた。
- 6No sooner / Hardly の構文「〜するとすぐに…」。主節は had p.p.、後ろは than(No sooner)/when・before(Hardly・Scarcely)。文頭なら倒置。No sooner had I arrived home than it began to rain.家に着くとすぐに雨が降り出した。
完了進行形4
- 1動作がずっと続いているhave been V-ing は run・study・wait・rain など動作動詞の継続。know・be などの状態動詞は現在完了で継続を表す。I have been waiting for an hour.1時間ずっと待っている。✕I have been knowing him for years. → I have known him for years.
- 2さっきまで続いていた「直前までしていた(だから今その跡がある)」の意味にもなる。Your eyes are red. Have you been crying?目が赤いよ。泣いていたの?
- 3live・work は両方OKlive・work・teach などは現在完了でも完了進行でもほぼ同じ意味。進行形はやや「一時的」の響き。I have lived [have been living] here for five years.ここに5年住んでいる。
- 4過去完了進行had been V-ing で、過去のある時点までずっと続いていた動作を表す。She had been studying for three hours when I called her.電話した時、彼女は3時間ずっと勉強していた。
ここでハマる!完了形のひっかけ6
- ✕I have seen him yesterday.○I saw him yesterday.yesterday は過去の一点→過去形
- ✕I have gone to Hawaii twice.○I have been to Hawaii twice.経験は have been to(※米口語では gone も)
- ✕I know her since I was a child.○I have known her since I was a child.since=今まで続く→現在完了
- ✕He has died three years ago.○He died three years ago. / He has been dead for three years.ago は過去形。継続なら be dead
- ✕By the time he comes, I will finish it.○By the time he comes, I will have finished it.未来の時点までに完了→未来完了
- ✕I have visited to Okinawa.○I have visited Okinawa. / I have been to Okinawa.visit は他動詞。to は不要
現在完了は「今に立っている」形
現在完了は「過去の出来事+今」。視点が今にあるので、yesterday など「過去の一点」を指す語とはぶつかる。日本語では「〜した」と訳せても、過去の一点を指していたら過去形、と判断する。
確認テスト
- 1I to Okinawa three times.正解は have been。経験の回数→have been to
- 2My brother the house ten minutes ago.正解は left。ago は過去形
- 3We each other since we were in junior high.正解は have known。状態の継続→現在完了
- 4When I arrived at the theater, the play .正解は had already begun。過去の時点より前→過去完了
- 5By the time you get this letter, I Japan.正解は will have left。未来の時点までに完了
- 6It for three days. The roads are flooded.正解は has been raining。今まで続く動作→完了進行
- 7No sooner the station than the train left.正解は had I reached。No sooner+倒置+had p.p.
- 8It is five years since she moved here. = She moved here five years .
- 9誤りを直せ:When have you started learning English?
完了形を一覧にまとめ、A4 3枚で印刷できる無料PDFにしました。Web版は赤シート・覚えたチェック・カード・4択テストつき。