現在完了進行形 ★
have / has been + 動詞の ing 形 =「(今まで)ずっと〜し続けている」
1形と意味
〈have / has been + 動詞の ing 形〉を現在完了進行形といい、過去に始まった動作が今まで続いていることを表します。「(今まで)ずっと〜し続けている」という意味です。主語が3人称単数なら has been を使います。

| 主語 | 形 | 短縮形 |
|---|---|---|
| I, you, we, they(3人称単数以外) | have been + ing 形 | I've been, we've been など |
| he, she, it(3人称単数) | has been + ing 形 | he's been, it's been など |
It has been raining since this morning.
今朝からずっと雨が降り続いています。
I have been studying for two hours.
私は2時間ずっと勉強しています。
They have been playing soccer since noon.
彼らは正午からずっとサッカーをしています。
2for と since
どのくらい続いているかを言うときは、現在完了(継続)と同じように for と since を使います。for のあとには期間、since のあとには始まった時を置きます。
| 語 | あとに続くもの | 例 |
|---|---|---|
| for | 期間(どのくらいの間) | for thirty minutes, for three days, for a long time |
| since | 始まった時(いつから) | since this morning, since 2020, since she was five |

We have been waiting for thirty minutes.
私たちは30分ずっと待っています。
She has been practicing the piano since she was five.
彼女は5歳のときからずっとピアノを練習しています。
3疑問文と答え方
疑問文は Have / Has を主語の前に出し、答えるときも have / has を使います。どのくらいの間続いているかをたずねるときは、How long を文の最初に置きます。
Has it been snowing since last night?
昨夜からずっと雪が降っているのですか。
Yes, it has.
はい、降っています。
No, it hasn't.
いいえ、降っていません。
How long have you been waiting?
どのくらい待っているのですか。
I've been waiting for about twenty minutes.
20分くらい待っています。

「ずっと〜していない」と言うときは、ふつう現在完了進行形ではなく、現在完了の否定文を使います。
I haven't seen him for a long time.
長い間、彼に会っていません。
4現在完了(継続)とのちがい
know(知っている)や like(好きだ)のような状態を表す動詞は進行形にしないので、「ずっと〜している」は現在完了(have known)で表します。study や play のような動作を表す動詞は、現在完了進行形で表すのがふつうです。
I have known him for five years.
彼とは5年前から知り合いです。
He has been playing the game for an hour.
彼は1時間ずっとゲームをしています。

| 動詞の種類 | 例 | 「ずっと〜している」の形 |
|---|---|---|
| 状態を表す動詞 | know, like, want, have(持っている), be | 現在完了(have known など) |
| 動作を表す動詞 | study, play, run, read, wait, rain | 現在完了進行形(have been studying など) |
| どちらも使える動詞 | live, work, teach など | I have lived / have been living here for ten years. |
5現在進行形とのちがい
現在進行形は「今〜しているところだ」と、今の様子だけを表します。現在完了進行形は「前から今までずっと〜している」と、続いている時間まで表します。for や since がつくときは、現在完了進行形を使います。
I am reading a book now.
私は今、本を読んでいます。
I have been reading this book for an hour.
私は1時間ずっとこの本を読んでいます。

6天気・ニュースの英文で
天気やニュースでは、雨や捜索、値上がりなどがしばらく前から今も続いていることを伝えるときに、現在完了進行形がよく使われます。
It has been raining heavily in western Japan since Friday.
西日本では金曜日から強い雨が降り続いています。
Rescue workers have been searching for the missing climbers since Sunday.
救助隊は日曜日から行方不明の登山者をさがし続けています。
Food prices have been rising for months.
食品の値段が何か月も上がり続けています。
The city has been preparing for the event for two years.
市は2年間、そのイベントの準備を続けてきました。
7よくある間違い
| × | ○ | ポイント |
|---|---|---|
| I have been knowing him for years. | I have known him for years. | know は状態の動詞なので現在完了 |
| I am studying English for three years. | I have been studying English for three years. | for や since があるときは現在完了進行形 |
| She have been running. | She has been running. | 3人称単数は has |
| I have been study for an hour. | I have been studying for an hour. | been のあとは ing 形 |
| I have being waiting. | I have been waiting. | have のあとは been |
| It has been raining since two hours. | It has been raining for two hours. | 期間は for |
8確認問題
「私は1時間ずっとテレビを見ています。」I have ( )( ) TV for an hour.
答えを見る
been watching
「今朝からずっと雪が降っています。」It has been snowing ( ) this morning.
答えを見る
since
始まった時を言うときは since です。
並べかえなさい。( long / you / how / been / have / waiting )?
答えを見る
How long have you been waiting?
誤りを直しなさい。I have been knowing her for ten years.
答えを見る
I have known her for ten years.
know は進行形にしない動詞です。
英語にしなさい。「彼は3時間ずっとサッカーをしています。」
答えを見る
He has been playing soccer for three hours.
9ニュースで出てきた現在完了進行形 ★
この単元に関係する英文がニュースに出てきたら、ここに自動で追加されます。