現在完了形 — 完了・経験・継続の3用法をやさしく整理
現在完了形は 「過去のできごとが、いまの自分にどうつながっているか」 を表す形です。日本語にはちょうど一致する形がないため、英文法でつまずきやすいトピックの代表格。形は have / has + 過去分詞。意味は 完了・経験・継続 の3用法に分けると整理しやすく、用法ごとに一緒に使う副詞 (just / ever / for など) がほぼ決まっています。
この記事のポイント
- 形は have / has + 過去分詞。3単現は has、それ以外は have
- 3用法を 一緒に使う副詞 で見分ける: 完了 = just / already / yet、経験 = ever / never / before、継続 = for / since
- 過去形と現在完了形の違い は「いまとつながりがあるか」。yesterday / 〜 ago と一緒には使わない
現在完了形の基本構造 — have / has + 過去分詞
主語によって have と has を使い分けます。3単現は has、それ以外は have というシンプルなルールです。
| 主語 | 肯定文 | 否定文 | 疑問文 |
|---|---|---|---|
| I / you / we / they | have visited | have not (haven't) visited | Have ... visited? |
| he / she / it | has visited | has not (hasn't) visited | Has ... visited? |
過去分詞は、規則動詞なら 過去形と同じ -ed の形、不規則動詞は 動詞ごとに固有の形 です。過去形との違いは 基本3時制の記事 も参考になります。
用法1: 完了 — 「ちょうど〜したところ/もう〜してしまった」
過去に始まった動作が ついさっき終わった、または すでに終わっている ことを表します。「いまその結果が残っている」感覚です。一緒に使う副詞は just / already / yet。
I have just finished my homework. — ちょうど宿題を終えたところだ。
She has already eaten lunch. — 彼女はもう昼食を食べてしまった。
Have you read the book yet? — もうその本を読みましたか?
He has not arrived yet. — 彼はまだ到着していない。
just(ちょうど) と already(もう) は 肯定文、yet(まだ/もう) は 否定文・疑問文 で使うのが基本。位置にも違いがあり、just / already は have と過去分詞のあいだ、yet は 文末 に置きます。
💡 見分け方: just / already / yet があれば「完了」用法。
用法2: 経験 — 「〜したことがある」
過去から現在までの間に 少なくとも一度は経験している ことを表します。一緒に使う副詞は ever / never / before / once / twice / 〜 times。
I have visited Kyoto twice. — 京都には2回行ったことがある。
Have you ever eaten sushi? — 寿司を食べたことはありますか?
She has never read this book before. — 彼女は以前この本を読んだことがない。
We have met him three times. — 私たちは彼に3回会ったことがある。
ever(これまでに) は主に疑問文、never(一度も〜ない) は否定の意味、before(以前に) は文末に置くのが定番。「行ったことがある」は have been to、「行ってしまった (今ここにいない)」は have gone to で使い分けます。
💡 見分け方: ever / never / before / 〜 times があれば「経験」用法。
用法3: 継続 — 「(過去から)ずっと〜している」
過去のある時点から始まった状態が いまもまだ続いている ことを表します。一緒に使う副詞は for + 期間 と since + 起点。
I have lived in Tokyo for ten years. — 私は10年間ずっと東京に住んでいる。
She has known him since 2010. — 彼女は2010年からずっと彼を知っている。
We have studied English for five years. — 私たちは5年間ずっと英語を勉強している。
for の後ろは 期間(for ten years / for a long time)、since の後ろは 起点となる過去の時点(since 2010 / since last year / since I was a child) が来ます。継続用法でよく使われる動詞は live, know, work, study, want のように、状態を表す動詞や長く続けやすい動作です。
動作動詞 (work, study, run など) で「ずっと〜し続けている」と動作の継続を強調したいときは、現在完了進行形 (have/has been + V-ing) を使うのが自然です: I have been studying English for five years. — 5年間ずっと勉強し続けている。
💡 見分け方: for + 期間 や since + 起点 があれば「継続」用法。
過去形と現在完了形の違い
日本人が現在完了形でつまずく原因の多くは、過去形との使い分けです。判断基準はシンプルで、「いまとつながっているか」 の一点。
過去形
過去のある時点で起きて、すでに 切り離された出来事。yesterday / 〜 ago / last week のような時を表す語と一緒に使う。
I visited Kyoto last year. — 去年京都に行った。(去年の出来事として完結)
現在完了形
過去の出来事と 現在のつながり を表す。yesterday / 〜 ago と一緒に使えない。
I have visited Kyoto. — 京都に行ったことがある。(いまの自分の経験として持っている)
「2 years ago」「last week」「yesterday」「when ...」のように 過去の特定の時点 を指す語があるなら、現在完了形ではなく 過去形 を選びます。これは英検でも頻出の判別ポイントです。
よく出る過去分詞リスト
現在完了形を使うには、不規則動詞の過去分詞を覚えるのが避けられません。よく出る形を一覧でまとめます。A-A-A 型(原形・過去形・過去分詞が同じ)、A-B-A 型(原形と過去分詞が同じ)、A-B-C 型(3つとも違う) で分類しています。
| 型 | 原形 | 過去形 | 過去分詞 |
|---|---|---|---|
| A-A-A | read | read (/red/) | read (/red/) |
| A-A-A | cut | cut | cut |
| A-B-A | run | ran | run |
| A-B-A | become | became | become |
| A-B-C | eat | ate | eaten |
| A-B-C | go | went | gone |
| A-B-C | write | wrote | written |
| A-B-C | take | took | taken |
| A-B-C | give | gave | given |
| A-B-C | know | knew | known |
| A-B-C | speak | spoke | spoken |
have, do, get, find なども現在完了で頻出。過去分詞は had / done / got または gotten / found です。(get の過去分詞は、英国系英語では got、米国系では gotten が一般的) 語形変化はえいたんごクイズの単語ページにも記載しているので、迷ったら個別の語のページから確認できます。
よくある間違い
❌ I have visited Kyoto yesterday. → ⭕ I visited Kyoto yesterday.
yesterday は過去の特定時点を表すので、現在完了形ではなく 過去形 を選びます。〜 ago, last week, when 〜 も同様。
❌ He has went to school. → ⭕ He has gone to school.
have / has のあとは 過去分詞。go の過去分詞は went ではなく gone です。過去形と過去分詞の混同は最頻出ミス。
❌ I have lived here since five years. → ⭕ I have lived here for five years.
期間には for、起点(過去のある時点)には since。「5年間」は期間なので for を使います。since five years ago なら可。
△ Have you finished already? — 文法的には正しいが、ニュアンスに注意
already を疑問文で使うと「もう終わったの?」という驚き・意外性のニュアンスが乗ります。文法的に間違いではありませんが、中立的に「もう終わった?」と尋ねたいなら yet を使います: Have you finished yet?
❌ She have arrived. → ⭕ She has arrived.
3単現の主語(she / he / it / 1人の人名)では has を使います。have との混同に注意。
英検・試験での出題パターン
- 英検3級: have / has + 過去分詞の形と、不規則動詞の過去分詞が 空所補充 で頻出。
例: I have already ( ) lunch. ① eat ② ate ③ eaten → 答え: ③ (eat-ate-eaten。have のあとは過去分詞) - 英検3級〜準2級: just / already / yet / ever / never / for / since の使い分けが 空所補充・並べ替え で出る。
例: She has lived here ( ) 2010. ① for ② since ③ from → 答え: ② (起点なので since) - 英検準2級〜2級: 過去形と現在完了形の使い分け、yesterday との共起判定が 誤文訂正 で出る。
例: I ( ) Tokyo last summer. ① have visited ② visited → 答え: ② (last summer は過去の時点)
関連ページ
- 英語の基本3時制 — 現在形・過去形・未来形の整理(過去形との違いを再確認)
- 英語の進行形 — be + V-ing と現在完了進行形の関係
- 英語の5文型 — 動詞のうしろの形で文を整理する
- 英語の品詞の基本 — 動詞の見分け方と語尾の目印
- 英検3級の英単語一覧 — 現在完了形が登場する単語と例文
- 英検準2級の英単語一覧 — 過去分詞でつまずきやすい不規則動詞