辞書や自学だけで解決しない疑問が解決!
 英語の疑問は「Weblio英語の質問箱」

@@_
2026-02-21 20:14

現在完了について

現在完了の経験用法に forをつけるとたちまち過去形になってしまうのはなぜですか。
(私は東京に住んだことがあります。)
I have lived in Tokyo before.
これを
(私は東京に2年間住んだことがあります。)
とすると
I have lived in Tokyo for 2 years before.
とはならず
I lived in Tokyo for 2 years before.となってしまいますよね?なぜでしょうか?
現在完了とyesterdayや〜agoなどの特定の過去の時を表す副詞は共に使えないと言うことは存じておりますが、上記の文はいつ東京に二年間住んでいたのか定かではないにも関わらず、過去形となってしまうのはなぜですか?
それとも普通に現在完了でも表せるでしょうか? 

回答

2026-02-23 17:37:45

貴重なご意見をありがとうございました。

2026-02-23 15:15:26

まず、「I have lived in Tokyo before.」は現在完了の経験用法です。
この文では、「人生のどこかの時点で東京に住んだことがある」という事実だけを述べています。
いつ住んでいたのか、どのくらい住んでいたのかは特定していません。過去のある一点の経験を、現在から振り返って述べている形です。

一方、「2年間」という期間を加えると状況が変わります。
「I have lived in Tokyo for 2 years before.」が不自然になるのは、
「for 2 years」が「あるまとまった2年間」という時間のかたまりを作ってしまうからです。

英語では、「for 2 years」と言うと、
・始まりがあり
・終わりがあり
・完結している
という一つの出来事として認識されやすくなります。

つまり、「東京に住んだことがある」という漠然とした経験(点)ではなく、「東京に2年間住んだ」という完結した出来事(まとまり)になるのです。
そして、英語では、完結した出来事は基本的に単純過去で表すのが自然です。

そのため、
> I lived in Tokyo for 2 years.
となります。
ここでは「いつか」は明示されていなくても、「2年間」という具体的な長さがあるため、それだけで過去の一まとまりの出来事として処理されます。

現在完了と yesterday や 〜ago が一緒に使えないのは、「特定された過去」と相性が悪いからですが、
「for 2 years」も、継続用法でない限り、実質的に完結した過去の時間枠を作ってしまいます。

▼ただし、現在完了+for が常に不可能なわけではありません。
> I have lived in Tokyo for two years.

と言えば、「今も東京に住んでいて、その状態が2年間続いている」という継続用法になります。
この場合は、過去から現在まで続いているので現在完了が自然です。

では、「東京に2年間住んだことがある」と言いたいときはどうするかというと、英語では単純過去を使うのが最も自然です。
> I once lived in Tokyo for two years.
のように言えば、「人生の一時期に、2年間住んでいた」という意味が自然に伝わります。

▼まとめると、
・「住んだことがある」だけなら、現在完了(経験用法)
・「2年間」という完結した期間を述べるなら、単純過去
・「2年間住んでいる(今も)」なら、現在完了(継続用法)

という整理になります。

つまり、「for 2 years が入るとたちまち過去形になる」のではなく、
「for 2 years が完結した出来事を作るため、経験用法の現在完了とは性質が合わなくなる」ということになります。

関連する質問