現在完了形(I've lived here for two years)と過去進行形(I was working when you called)は、すでに学んだと思います。現在完了進行形(present perfect continuous)はその2つを組み合わせたものです。過去に始まり、今この瞬間まで続いている動作を表し、現在と強く結びついています。
-
I've been studying all morning.
-
Why are your hands dirty? — I've been gardening.
-
She's been working here since 2020.
形式は have / has + been + 動詞-ing です。
基本の形: 主語 + have / has + been + 動詞 -ing → I've been waiting. He's been running.
作り方
肯定文では、3つの要素は必ずこの順番に並びます。
| 主語 | have / has | been | -ing 形 |
|---|---|---|---|
| I / you / we / they | have | been | working、studying… |
| he / she / it | has | been | working、studying… |
- I have been waiting for an hour. → I*'ve been waiting** for an hour.*
- She has been studying since this morning. → She*'s been studying** since this morning.*
- They have been travelling all week.
been は変化しません。have / has だけが主語に合わせて変わります——通常の現在完了形と同じルールです。
-ing 形のスペリングは通常のルールに従います。語末の無音の -e は削除(make → making)、短く最後の音節に強勢があり「子音+母音+子音」で終わる動詞では語末の子音を重ねることがあります(run → running、sit → sitting)、w・x・y は重ねません(fix → fixing、play → playing)。過去進行形と同じルールです。
3つの主な使い方
1. 現在までの継続——「どのくらいの間?」
現在完了進行形で最もよく使われる用法です。動作が過去に始まり、今もまだ続いている(またはたった今終わった)ことを表します。
- How long have you been learning English? — For three years. / Since 2021.
- I*'ve been waiting** for this bus for half an hour.*
- She*'s been living** in London since last September.*
for は期間、since は起点を表します——現在完了形と同じです。(for と since の使い分けを復習したい場合は現在完了形:for & sinceを参照してください。)ここでは、単に「経験があるかどうか」ではなく、動作が進行中であることに焦点があります。
日本語の「3年間英語を勉強しています」は「〜ている」だけで過去から今までの継続を表せますが、英語では期間を表す for three years と一緒に、have/has been + -ing の形にする必要があります。動詞だけの現在形(❌ I study English for three years)では過去との時間的なつながりが表せません。
2. 最近の動作が現在の状態を説明する
動作がちょうど終わったばかりで、その結果が今も見えるときに使います。
- You look tired. — Yes, I*'ve been working** overtime all week.*
- His hands are muddy. He*'s been digging** in the garden.*
- We*'ve been running** — that's why we're out of breath.*
現在完了進行形を使うと、「今見えている手がかりから、直前まで何が起きていたのかが分かる」というニュアンスになります。
3. 一定期間内に繰り返された最近の動作
ある動作が短い期間に何度も繰り返されるとき、現在完了進行形がよく使われます。
- She*'s been calling** me every day this week.*
- I*'ve been trying** to contact them all morning.*
- He*'s been sending** me messages for hours.*
否定形
not は have / has と been の間に置きます。
- I haven't been sleeping well lately.
- She hasn't been going to the gym.
- They haven't been working on it very long.
疑問文
疑問文では have または has が主語の前に移ります。
- Have you been waiting long?
- Has she been feeling better?
- How long have they been living here?
- What have you been doing all afternoon?
短い返答では have / has だけを使います。
- "Have you been working here long?" — "Yes, I have." / "No, I haven't."
状態動詞——現在完了形を使う
状態(進行中の動作ではなく)を表す動詞があります。know、believe、understand、like、love、hate、need、own、have(所有)などです。これらは状態の意味で使われるとき、通常は進行形を使いません——継続期間を表すときは、ふつう現在完了形を使います。
- ❌ I've been knowing her for years. → ✅ I've known her for years.
- ❌ I've been owning this bag since 2018. → ✅ I've owned / had this bag since 2018.
- ❌ She's been having the car for a year.(所有の意味)→ ✅ She's had the car for a year.
一時的または動作的な意味で進行形が使われる場合もあります(She's been having headaches)。しかし、本来の状態の意味で継続期間を表すときは、現在完了形を選んでください。
現在完了形と現在完了進行形の比較
これが B1 の核心的な比較です。
| 現在完了形 | 現在完了進行形 | |
|---|---|---|
| 焦点 | 結果・経験・数量・状態の継続期間 | 進行中の動作・継続時間・最近の目に見える結果 |
| 例 | I've written the report.(完了している) | I've been writing the report.(まだ終わっていない可能性あり) |
| 例 | She's eaten three biscuits.(数が重要) | She's been eating biscuits all morning.(動作の継続が重要) |
完了した結果や数に注目するなら現在完了形、どのくらい続いているか・動作が続いていることを強調したいなら現在完了進行形を使います。
- ✅ I*'ve read** four chapters.*(終えた章の数 = 結果)
- ✅ I*'ve been reading** since lunch.*(どのくらい = 継続時間)
動詞によっては両方の形が自然で、わずかに意味が変わります。I've lived here for years(現在完了形——状態動詞に近い動詞でよく使われる)vs. I've been living here for years(動作が今も続いていることをやや強調)。どちらも正しい表現です。
現在完了形と過去形の違いについては現在完了形 vs 過去形を参照してください。
よくある間違い
- ❌ I've been waited for an hour. → ✅ I've been waiting for an hour.(現在完了進行形では been の後に -ing 形が続く)
- ❌ She's been been studying. → ✅ She's been studying.(been は1つだけ)
- ❌ How long have you been know him? → ✅ How long have you known him?(状態動詞 → 現在完了形)
- ❌ I've been learning English since three years. → ✅ I've been learning English for three years.(three years は期間 → for)
- ❌ He have been working all day. → ✅ He has been working all day.(he には has)
- ❌ I've been writing four chapters.(数が重要なとき)→ ✅ I've written four chapters.
確認問題
答えは現在完了形か現在完了進行形のどちらかです。for か since が必要な場合もあります。
- You look exhausted! — I know, I ____ (run) for an hour.
- ____ you ever ____ (try) Japanese food?
- We ____ (know) each other ____ 2015.
- She's still at her desk. How long ____ she ____ (study) today?
- He ____ (read) five articles so far this morning.(結果が重要)
答えを見る
- 've been running 2. Have … tried(経験 → 現在完了形) 3. have known … since(状態動詞 → 現在完了形) 4. has … been studying 5. has read(数量 = 結果 → 現在完了形)
まとめ
- 現在完了進行形 = have / has + been + 動詞-ing ——動作の継続時間や進行状態を強調します。
- 3つの主な使い方:何かが続いている期間(for / since)、最近の動作の現在に残る目に見える結果、最近の繰り返し動作。
- 状態動詞(know、have、own、like など)は状態の意味では進行形を使いません——継続期間には現在完了形を使います(I've known her for years)。
- 現在完了形と現在完了進行形の対比:現在完了形は完了した結果・数量・状態の継続期間に焦点を当て、現在完了進行形は進行中の動作・継続時間・最近の目に見える結果に焦点を当てます。
- 否定形:haven't / hasn't been + -ing。疑問文:Have / Has + 主語 + been + -ing?