モチタン辞典 › 読みもの › 英文法 › 現在完了進行形の練習問題

現在完了進行形の練習問題と解説

現在完了進行形の練習問題と解説

現在完了進行形は「have / has been + -ing」の形で表し、「過去から今まで動作が休まずずっと続いている」状態を示します。主語が三人称単数のときは has を使い、動作の期間を表す場合は for、起点を表す場合は since を組み合わせます。

状態動詞と動作動詞の区別を押さえることで、通常の現在完了形との使い分けも迷わず解けるようになります。

現在完了進行形の公式と基本ルール

現在完了進行形(Present Perfect Continuous)は、過去に始まった動作が現在まで途切れずに続いていることを表す文法です。日本語では「ずっと〜し続けている」と訳します。まずは肯定文・否定文・疑問文の基本形を確認しましょう。

文の形と語順ルール

主語の種類肯定文の形短縮形
第一人称・第二人称・複数(I, you, we, they)have been waitingI've been waiting / They've been waiting
三人称単数(he, she, it, 単数名詞)has been waitingHe's been waiting / It's been waiting

主語が he、she、it や単数名詞のときは、必ず has を選びます。短縮形では I've been や He's been の形が会話や長文読解で頻出します。

He's は He is の短縮形と同じ表記になるため、直後に been が続いているかを確認して現在完了進行形だと見抜くことが大切です。

現在完了進行形の基本形
主語+have / has+been+-ing(現在分詞)+English+for two hours

I have been studying English for two hours.私は2時間ずっと英語を勉強し続けています。

主語に合わせてhaveまたはhasを選び、beenと動詞のing形を続けます。

次の疑問基礎の形を中学生向けにさらに整理して学び直したいときは、中学英語の現在完了進行形解説も合わせて確認してみてください。

forとsinceの明確な使い分け

現在完了進行形では、動作がどのくらい続いているのかを示す語句として for と since が非常によく使われます。この2つの前置詞の使い分けは、空欄補充問題の定番です。

for と since の意味と接続する語句の違い

表は横にスクロールできます →

前置詞意味後ろに続く言葉具体的な表現例
for〜の間(期間の長さ)時間・日数・年数などの数量を表す語for three hours(3時間), for two days(2日間), for a long time(長い間)
since〜から、〜以来(過去の起点)過去の特定の時点、または節(S + 過去形V)since yesterday(昨日から), since 2021(2021年から), since this morning(今朝から)

for の後ろには「1時間」「3日」「5年」といった数えられる期間の長さが入ります。一方、since の後ろには「特定のスタート地点」となる時点が入ります。

また、since は接続詞としても働くため、since I was a child(子どものころから)のように「主語 + 過去形の動詞」という節をそのまま後ろに置くことができます。

使い分けの判定ポイント

forとsinceの判別チャート
1直後の語句確認

空欄の後ろに来る語句の形を確認する

2数量や期間

数字+単位ならfor(例: three hours)

3特定の一点

日時の一点ならsince(例: yesterday)

4S+過去形動詞

節が続く場合もsinceを選ぶ

後ろに続く語句の性質からforかsinceかを判定します。

この記事に出てくる英単語(イラスト・音声つきの辞典ページへ)

現在完了形と現在完了進行形の違い

現在完了形の「継続用法(ずっと〜している)」と「現在完了進行形(ずっと〜し続けている)」は、どちらも過去から現在への継続を表しますが、使える動詞の種類とニュアンスに決定的な違いがあります。

動詞の性質による使い分けルール

表は横にスクロールできます →

分類代表的な動詞継続を表す文法形式例文
状態動詞(進行形不可)know, like, want, have(持っている)現在完了形(have + 過去分詞)I have known Ken for five years.(私はケンを5年間知っています。)
動作動詞(進行形可能)run, play, wait, study, rain現在完了進行形(have been -ing)I have been studying for two hours.(私は2時間勉強し続けています。)
どちらも可能な動詞live, work, teach両方可能(意味の差はわずか)He has lived here since 2010. / He has been living here since 2010.

もっとも重要な判別基準は「動詞が状態動詞か動作動詞か」です。know(知っている)や like(好いている)などの状態動詞は、原則として進行形にできません。したがって、現在完了進行形(× have been knowing)にすることはできず、必ず通常の現在完了形(have known)を用います。

一方、run(走る)や wait(待つ)などの動作動詞で「今まさにその動作を休まず続けている」という躍動感を表すときは、現在完了進行形を用います。live(住む)や work(働く)は動作と状態の中間的な性質を持つため、通常の完了形と完了進行形のどちらを使ってもほぼ同じ意味になります。

Nathan英語の文法は、話して身につけよう。会話アプリ「モチスピ」英語を話して練習できる会話アプリ。話すたびに、発音・文法・自然さをその場で直してもらえます。無料で試す

【基礎】適語補充の現在完了進行形練習問題

空欄に適切な英語を補い、日本文に合う英文を完成させる基礎問題です。ノートや裏紙に自分の解答を書いてから、解答と解説を確認してください。

第1問

問題:父は朝からずっと庭の掃除をしています。
My father (  ) (  ) (  ) the garden since this morning. [ clean ]

【解答】has been cleaning
【解説】主語の My father は三人称単数なので、have ではなく has を用います。現在完了進行形の公式「has been + -ing」に従い、cleaning を続けます。

第2問

問題:トムと私は3時間ずっとサッカーを練習しています。
Tom and I (  ) (  ) (  ) soccer for three hours. [ practice ]

【解答】have been practicing(または practising)
【解説】主語が「Tom and I」で2人(複数)なので have を使います。practice の -ing 形は末尾の e を取って practicing とします。

第3問

問題:昨夜からずっと雨が降り続いています。
It (  ) (  ) (  ) (  ) last night. [ rain / 前置詞補足 ]

【解答】has been raining since
【解説】天候を表す主語 It は三人称単数なので has been raining となります。「昨夜」は過去の一時点(起点)を指すため、前置詞は for ではなく since を補います。

第4問

問題:彼らは長い間、そのバスを待っていません。
They (  ) (  ) (  ) (  ) for the bus for a long time. [ wait / not ]

【解答】have not been waiting(短縮形 haven't been waiting も正解)
【解説】現在完了進行形の否定文は、have の直後に not を置きます。語順は「have not been + -ing」となります。

第5問

問題:あなたはどのくらいの間、本を読み続けているのですか。
How (  ) have you (  ) (  ) the book? [ read / 疑問詞補足 ]

【解答】long / been reading
【解説】期間を尋ねる疑問詞は How long です。疑問文の語順は「How long + have + 主語 + been + -ing?」となります。

現在完了進行形の練習問題のイメージ

【標準】語順整序の英語現在完了進行形問題

かっこ内の語句を正しい語順に並べ替えて英文を完成させる問題です。文頭に来る語も小文字で表記されている場合があります。

第1問

問題:彼女は昨日の午後からずっと部屋で眠り続けています。
[ her room / sleeping / has / she / since / in / been ] yesterday afternoon.

【解答】She has been sleeping in her room since yesterday afternoon.
【解説】主語 She に続けて「has been sleeping」を配置します。

場所を表す「in her room」を置き、過去の起点を示す「since」を末尾に置きます。

第2問

問題:ケンは20分間ずっと誰かと電話で話し続けていますか。
[ on / talking / Ken / has / for / been ] the phone for twenty minutes?

【解答】Has Ken been talking on the phone for twenty minutes?
【解説】主語が Ken の疑問文なので、文頭に Has を出します。

語順は「Has + 主語(Ken) + been + -ing(talking) + on the phone」となります。

第3問

問題:私たちは午後2時からずっとこのゲームをプレイし続けていません。
[ not / playing / we / been / this game / have ] since 2 p.m.

【解答】We have not been playing this game since 2 p.m.
【解説】主語 We に続けて have not been playing と並べます。否定の not を置く位置は必ず have の直後です。目的語の this game がその後に続きます。

第4問

問題:マイクはここに来てからずっと何を作っているのですか。
[ Mike / what / making / been / has ] since he came here?

【解答】What has Mike been making since he came here?
【解説】疑問詞 What を文頭に置き、その直後に助動詞の has、主語の Mike、そして been making を並べます。

「疑問詞 + has + 主語 + been + -ing」の基本配列です。

【発展】和文英訳と書き換えの演習問題

日本語の意味に合うように英文全体を作成する問題と、文の書き換え問題です。状態動詞との判別やスペリングの規則を意識して解きましょう。

第1問(和文英訳)

問題:「私は30分間ずっとあなたをここで待っています。」を英語にしなさい。

【解答例】I have been waiting for you here for thirty minutes.(I've been waiting for you here for half an hour. も可)
【解説】「待つ」は wait なので現在完了進行形「have been waiting」を使います。

「あなたを待つ」は wait for you です。「30分間」という期間の長さの前には for を置きます。

第2問(和文英訳・ひっかけ注意)

問題:「エマは子どものころからずっとその人形が好きです。」を英語にしなさい。

【解答例】Emma has liked the doll since she was a child.
【解説】「好きである」を表す like は状態動詞です。

状態動詞は進行形にできないため、has been liking にしてはいけません。通常の現在完了形(has liked)を用います。「子どものころから」は起点なので since she was a child と表現します。

第3問(文の書き換え)

問題:次の2つの文を、現在完了進行形を用いて1つの文に書き換えなさい。
It began to snow this morning. It is still snowing now.(今朝雪が降り始めました。今も雪が降っています。)

【解答】It has been snowing since this morning.
【解説】「今朝降り始めて今も降っている」ということは「今朝からずっと雪が降り続いている」という意味になります。

動詞 snow を用いて has been snowing とし、起点である this morning の前には since を添えます。

第4問(疑問文への応答)

問題:次の問いに対して、「1時間勉強しています」という意味になるように3語以上の英語で答えなさい。
How long have you been studying math?

【解答例】I have been studying (it) for an hour.(または短縮して For an hour. / For one hour.)
【解説】期間を問われているため、for an hour(1時間)を用いて答えます。

完全な文で答える場合は、主語を I に変えて「I have been studying it for an hour.」とします。

テスト頻出のひっかけポイントと注意点

現在完了進行形の問題で点数を落としやすい原因は、動詞の形と前置詞の選択ミスに集中しています。解き終えた後に次の4点を確認する習慣をつけましょう。

1. -ing形にするときのスペリングミス

2. 進行形にできない動詞(状態動詞)の混入

テストでは、あえて状態動詞を混ぜて「現在完了形か、現在完了進行形か」を選ばせる問題が頻出します。

動詞誤った英文(不正解)正しい英文(正解)
know× I have been knowing him.○ I have known him for years.
want× She has been wanting this bag.○ She has wanted this bag since last week.
have(所有)× He has been having a cat.○ He has had a cat since 2018.

ただし、have でも「食事をする(having breakfast)」のように動作を表す場合は、現在完了進行形(He has been having breakfast.)にすることが可能です。「動作」なのか「状態」なのかを文脈から見極めましょう。

3. for と since の選択ミス

空欄の直後の語句をチェックしてください。「for three years」のように数量・期間であれば for、「since 2020」や「since yesterday」のように特定の時点であれば since です。

「three years ago(3年前)」のように ago が付いている場合は、「3年前という過去の一時点」になるため since three years ago と since を使う点もひっかけとして有名です。

-ing形のスペリング規則
-ingの作り方

発音しないeで終了

  • make → making
  • write → writing
  • practice → practicing

短母音+子音字

  • run → running
  • swim → swimming
  • sit → sitting

ieで終了

  • die → dying
  • lie → lying

動詞の語尾に応じた3つのing変化パターンです。

印刷用PDF練習問題プリントの活用法

学校の定期テスト対策や自学自習、家庭学習用として、本ページに掲載された問題と追加の確認テストを収録したA4サイズの印刷用問題プリント(PDF形式)を用意しています。

練習プリントの構成と学習手順

スマホやパソコンの画面上ですぐに確認したい場合は、本記事の各問題に掲載している解答・解説欄を活用し、紙に書いてしっかり手を動かしたい場合は印刷用プリントを利用することをおすすめします。

練習プリント学習の手順
1自力で解く

何も見ずに問題用紙を自力で解く

2チェック

間違えた問題に印をつける

3解説の確認

前置詞や進行形の根拠を解説で確認

自力で解いてから解説で理由を確認する学習の流れです。

続けて読む

英文法の疑問をすべて見る「現在完了進行形」のまとめ

理解度チェック

Q1. 現在完了進行形の肯定文を作る正しい語順はどれ?

  1. 主語 + have/has + being + -ing
  2. 主語 + have/has + been + -ing
  3. 主語 + is/are + been + -ing
  4. 主語 + have/has + been + 過去分詞
答えを見る

正解: B. 主語 + have/has + been + -ing
現在完了進行形の肯定文の基本ルールは「主語 + have / has + been + -ing」です。

Q2. 空欄に入る語の組み合わせとして最も適切な英文はどれ?

  1. He has lived here for 2010.
  2. He has been knowing Ken for five years.
  3. I have been waiting for you for two hours.
  4. She has been wanting this bag since then.
答えを見る

正解: C. I have been waiting for you for two hours.
waitは動作動詞で期間の長さにはforを用います。knowやwantなどの状態動詞は進行形にできません。

Q3. 前置詞sinceの後ろに置く語句として正しいものはどれ?

  1. three hours
  2. two days
  3. yesterday
  4. a long time
答えを見る

正解: C. yesterday
sinceの後ろには過去の起点となる時点が入るため、yesterdayが適切です。期間の長さにはforを用います。

よくある質問

Q. 現在完了進行形と過去進行形の違いは何ですか?
過去進行形(was / were -ing)は「過去のある時点で行われていた動作」を表し、現在の状況とは切り離されています。一方、現在完了進行形は「過去から始まって今も動作が続いている」ことを表し、現在と直接つながっています。
Q. live は現在完了形と進行形のどちらが正しいですか?
live や work はどちらを使っても文法的に正しく、意味の違いもほとんどありません。一時的な滞在感を強調したいときは完了進行形、永住や長期定住の事実を述べるときは通常の完了形が好まれる傾向があります。
Q. 否定文で not を置く正しい位置はどこですか?
not は必ず have または has の直後に置きます。語順は「have not been -ing」または「has not been -ing」となり、been の後ろに not を置くのは誤りです。
Q. How long の疑問文に答えるときの自然な返答は?
会話では期間だけを簡潔に「For about two hours.(約2時間です)」と答えるのが自然です。完全な英文で答える場合は「I have been waiting for about two hours.」のように主語と動詞を補います。
Q. since の後ろに文を続ける場合の時制は何ですか?
接続詞 since の後ろに節(主語 + 動詞)を置く場合、その動詞は過去の開始時点を示すため原則として過去形になります。例:since I moved here(ここに引っ越して以来)。

2026年10月8日更新・モチタン辞典編集部