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

中3英語 現在完了進行形の問題と公式まとめ
現在完了進行形はhave / has been + 動詞の-ing形で表し、「過去のある時点から現在までずっと~し続けている」という動作の継続を示します。
主語が3人称単数の場合はhasを用い、期間を表すforや起点を表すsinceと一緒に使われます。基礎から発展までの問題演習を通じて、定期テストや高校入試で狙われるポイントを正しく整理できます。
現在完了進行形の基本公式とルール
現在完了進行形は、過去に始まった動作が今この瞬間も途切れずに続いていることを表す構文です。中学3年生の教科書で学習し、高校入試や定期テストでも頻出の単元です。まずは文の形と意味を正確に確認しましょう。
肯定文の形と意味
現在完了進行形の肯定文は、主語 + have [has] + been + 動詞の-ing形で作ります。意味は「(ずっと)~し続けている」となります。主語が3人称単数(he, she, itや人の名前など)のときはhasを使います。
- I have been studying English for two hours.(私は2時間ずっと英語を勉強し続けています。)
- Ken has been watching TV since this morning.(ケンは今朝からずっとテレビを見続けています。)
否定文の形
否定文はhaveやhasの後ろにnotを置きます。短縮形であるhaven'tやhasn'tも非常によく使われます。
- They have not been playing soccer since noon.(彼らは正午からずっとサッカーをし続けているわけではありません。)
- She hasn't been sleeping well lately.(彼女は最近ずっとよく眠れていません。)
疑問文の形と答え方
疑問文を作るときは、HaveまたはHasを文頭(主語の前)に出します。文末にはクエスチョンマークを付けます。答えるときもhaveやhasを用います。
- Have you been waiting for me?(あなたは私をずっと待っていたのですか。)
— Yes, I have.(はい、待っていました。) / No, I haven't.(いいえ、待っていませんでした。) - Has it been raining since yesterday?(昨日からずっと雨が降り続いていますか。)
— Yes, it has.(はい、降っています。) / No, it hasn't.(いいえ、降っていません。)
期間をたずねる How long の疑問文
「どれくらいの間~し続けていますか」と期間をたずねる疑問文は、文頭にHow longを置き、その後に通常の疑問文の語順を続けます。入試・定期テストともに最も出題率が高い形の一つです。
- How long have you been reading this book?(あなたはこの本をどれくらいの間読み続けていますか。)
— I have been reading it for three days.(3日間読み続けています。)
for と since の使い分け
現在完了進行形では、動作がどのくらい続いているかを表すためにforとsinceが多用されます。この2つの前置詞の使い分けはテストの選択問題で頻出です。
表は横にスクロールできます →
| 前置詞 | 後ろに来る語句 | 意味 | 具体例 |
|---|---|---|---|
| for | 時間の長さ・数量 | ~の間 | for three hours(3時間の間)、for two days(2日間) |
| since | 動作が始まった過去の時点 | ~から、~以来 | since yesterday(昨日から)、since last year(去年から) |
I have been studying English for two hours.私は2時間ずっと英語を勉強し続けています。
have/hasとbeenに動詞のing形を組み合わせます。
具体的な文のバリエーションを確認したいときは、現在完了進行形の使い方の例文集を参考にしてください。
次の疑問基本ルールを押さえたあとは、中学英語の現在完了進行形解説でつまずきやすい例文や使い方をじっくり確認できます。
【基礎問題】語形変化・適語補充
カッコ内の動詞を適切な形に変えて英文を完成させる、基礎的な適語補充問題です。主語に応じたhaveとhasの選択、および動詞の-ing形の規則に注意して解いてみましょう。
問題
- Ken ( wait ) for the bus for thirty minutes.(ケンは30分間ずっとバスを待っています。)
- We ( practice ) the piano since this morning.(私たちは今朝からずっとピアノを練習し続けています。)
- It ( rain ) since last night.(昨夜からずっと雨が降り続いています。)
- My brother ( not / use ) this computer for two hours.(私の兄は2時間ずっとこのコンピュータを使い続けているわけではありません。)
- ( you / cook ) dinner since four o'clock?(あなたは4時からずっと夕食を作り続けていますか。)
解答と解説
- has been waiting
解説: 主語のKenは3人称単数なのでhasを使います。現在完了進行形の公式「has been + 動詞の-ing形」に合わせてhas been waitingとします。 - have been practicing
解説: 主語がWe(複数)なのでhaveを用います。動詞practiceは語尾がeで終わるため、eを取って-ingを付ける規則に注意し、have been practicingとします。 - has been raining
解説: 天候を表す主語Itは3人称単数です。したがってhas beenにrainの-ing形を繋げてhas been rainingと答えます。 - has not been using(またはhasn't been using)
解説: 否定文の形です。主語My brotherは3人称単数であるためhas not beenとします。useも語尾のeを取ってusingにします。 - Have you been cooking
解説: 疑問文なので文頭にHaveを置き、主語youの後にbeen + cookingを続けます。文頭の大文字を忘れないようにしましょう。
【標準問題】定期テスト頻出の並べ替え
日本文の意味に合うように、示された語句を正しい語順に並べ替える問題です。疑問詞や前置詞の位置に注意して取り組みましょう。
問題
- 彼女は2時間ずっと部屋を掃除し続けています。
[ cleaned / has / she / been / cleaning / her room / for / two hours / . ](※余計な語が1語含まれています) - 彼らは昨日からずっとその試合について話し合っています。
[ discussing / since / have / been / they / the game / yesterday / . ] - あなたはどれくらいの間、英語を勉強し続けていますか。
[ studying / how / you / have / been / long / English / ? ] - トムはその映画を午前中からずっと見ています。
[ watching / Tom / since / morning / has / this / been / the movie / . ] - 私のお父さんは今朝からずっと車を洗っていません。
[ washing / my father / his car / not / been / has / since / morning / this / . ]
解答と解説
- She has been cleaning her room for two hours.(不要語: cleaned)
解説: 現在完了進行形は「has been + -ing」を用いるため、過去分詞のcleanedは使いません。主語Sheに続けてhas been cleaning、目的語her room、期間のfor two hoursと並べます。 - They have been discussing the game since yesterday.
解説: 主語Theyの後にhave been discussingを置き、目的語the game、過去の起点を表すsince yesterdayを配置します。 - How long have you been studying English?
解説: 期間をたずねる疑問詞How longを文頭に置きます。その後に疑問文の語順であるhave you been studyingを続け、最後に目的語Englishを置きます。 - Tom has been watching the movie since this morning.
解説: 主語Tomが3人称単数なのでhas been watchingとなります。「今朝から」はsince this morningで表します。 - My father has not been washing his car since this morning.
解説: 否定文なのでhasの直後にnotを挟み、has not been washingの順にします。「車」はhis carと修飾します。
英語の文法は、話して身につけよう。会話アプリ「モチスピ」英語を話して練習できる会話アプリ。話すたびに、発音・文法・自然さをその場で直してもらえます。無料で試す
【発展問題】高校入試レベルの和文英訳
高校入試や定期テストの応用問題で頻出の英作文問題です。日本語のニュアンスを的確にとらえ、適切な語句を補いながら正確な英文を作りましょう。
問題
- 私の母は正午からずっと昼食を作り続けています。(「正午」は noon を使用)
- ケンとユキは1時間ずっと図書館で本を読んでいますか。
- あなたはどれくらいの間、ここで待っているのですか。
- 外では3時間ずっと強い風が吹き続けています。(「強い風が吹く」は blow hard を使用)
- 私たちは昨夜からずっと何も食べていません。(現在完了進行形ではなく現在完了形を使うべきかどうかも含めて判断し、eat を用いて英作しなさい)
解答と解説
- My mother has been cooking lunch since noon.
解説: 「正午から」は時点を表すためsince noonとします。主語My motherは3人称単数なのでhas been cookingとなります。 - Have Ken and Yuki been reading books in the library for an hour?
解説: 主語がKen and Yukiという2人(複数)なので、文頭はHasではなくHaveで始めます。「1時間」は期間なのでfor an hour(またはfor one hour)を用います。 - How long have you been waiting here?
解説: 「どれくらいの間」はHow longです。待つはwaitで表し、「ここで」を表す副詞hereを文末に添えます。 - The wind has been blowing hard outside for three hours.(または It has been blowing hard outside for three hours.)
解説: 「風が吹く」は動詞blowを用います。「強く」は副詞hardで表します。3時間という期間を示すためfor three hoursを配置します。 - We have not eaten anything since last night.
解説: 動作が「行われていない」状態が続いている場合、「食べていない動作をずっと続けている」という進行形にはせず、通常の現在完了形(継続用法・否定文)で表現するのが自然です。この識別は入試の応用問題で差がつくポイントです。

現在完了形との違いと見分け方
現在完了形の「継続用法(ずっと~である)」と「現在完了進行形(ずっと~し続けている)」は、どちらも過去から現在までの継続を表すため、混同しやすい文法事項です。見分ける決定的な基準は「使われている動詞の性質」にあります。
状態動詞と動作動詞の区別
英語の動詞は、性質によって大きく2つに分類されます。
- 状態動詞: その場ですぐにやめたり始めたりできない動詞(例: know, live, have, like, be など)。原則として進行形(-ing)にできません。
- 動作動詞: 人の動作や行為を表し、今すぐやめたり再開したりできる動詞(例: study, play, run, read, wait, watch など)。進行形にできます。
使い分けの判定ルール
「過去から現在まで続いている」と言いたい場合、次の手順でどちらの文法を使うか判断します。
- 文で使いたい動詞を確認する。
- 動詞が状態動詞(know, live, have等)の場合 → 進行形にできないため、通常の現在完了形(have + 過去分詞)を使う。
- 動詞が動作動詞(study, play, wait等)の場合 → 今もその動作が行われている臨場感を出すため、現在完了進行形(have been + -ing)を使う。
| 分類 | 現在完了形(have + 過去分詞) | 現在完了進行形(have been + -ing) |
|---|---|---|
| 使われる動詞 | 状態動詞(know, have, be など) | 動作動詞(study, run, rain など) |
| 文のニュアンス | ある状態がずっと続いている | ある動作が今も休まず行われ続けている |
| 例文 | I have known him for five years.(私は彼を5年間知っています。) | I have been studying for five hours.(私は5時間ずっと勉強し続けています。) |
| 誤りの例 | × I have been knowing him... | △ I have studied for five hours.(文脈により可だが動作の継続には進行形が好まれる) |
※なお、live(住んでいる)やwork(働いている)などの動詞は、状態動詞とも動作動詞とも解釈できるため、have livedとhave been livingのどちらを使ってもほぼ同じ意味を表せます。
状態動詞(進行形不可)
- know
- live
- have
- like
- be
動作動詞(進行形可能)
- study
- play
- run
- read
- wait
動詞が状態動詞か動作動詞かによって使い分けを判断します。
基本となる完了形の文法を確認したいときは、現在完了形の使い方の例文集が役立ちます。
テストで失点しない減点防止チェック
定期テストや高校入試で現在完了進行形の問題を解く際、生徒が最も落としやすいケアレスミスをまとめました。答案を見直す際の指針として活用してください。
減点防止チェックリスト
- 3人称単数の has 忘れ: 主語が he, she, my sister, Ken などの単数のとき、無意識に have と書いていないか確認しましょう。
- been の書き忘れ: 進行形の意識が強すぎて、have studying のように been を抜かしてしまうミスが多発します。「have + been + -ing」の3語セットを指差し確認しましょう。
- 動詞の -ing 化ルール違反: 語尾にそのまま ing を付けて減点されるケースが目立ちます。特に次の変化に注意してください。
・e で終わる語は e を取って -ing(例: make → making, use → using, write → writing)
・短母音+子音字で終わる語は末尾を重ねて -ing(例: run → running, swim → swimming, stop → stopping) - for と since の取り違え: 後ろに数字や期間(two hours, three years など)がある場合は for、過去の特定の時点(yesterday, last night, then など)がある場合は since です。
- 疑問文の文頭大文字とクエスチョンマーク: How long have... や Have you... の文頭が大文字になっているか、文末に「?」があるかを確認します。
高校入試での出題傾向
現在完了進行形は、新学習指導要領への移行に伴い中学校で本格的に扱われるようになった文法項目です。そのため公立高校入試では、自由英作文で「今熱中していること」や「何年間続けている習い事」を表現する場面、および長文読解での対話文中の受け答えにおいて頻出しています。
特にHow long have you been -ing?に対する返答の組み立ては確実に得点源にできるようにしておきましょう。
- 3人称単数の has 忘れ主語がheやKen等の単数ならhas
- been の書き忘れhave + been + -ingの3語を確認
- 動詞の -ing 化ルール違反make→making、run→running等
- for と since の取り違え期間はfor、過去の時点はsince
- 疑問文の文頭大文字と「?」文頭の大文字と末尾の記号を確認
テスト解答時に見落としがちな5つの注意点を確認しましょう。
入試やテストに向けた演習を進める際は、中学生・高校生の英語アプリの使い方も参考になります。
印刷用問題プリント(PDF)のご案内
自宅学習や塾での小テスト、定期テスト直前の総復習用として手書きで解けるA4サイズの練習問題プリントを用意しています。本記事に掲載した基礎・標準・発展の問題に加えて、追加の練習問題を収録した問題用紙と詳細な解答用紙がセットになっています。
- 中3英語「現在完了進行形」基礎・標準・発展確認テスト(A4サイズ・解答付き)
紙にペンで書いて解くことで、動詞の-ing形のスペルミスやbeenの脱落といった手作業ならではの減点要素を事前にあぶり出すことができます。復習の仕上げに役立ててください。
続けて読む
理解度チェック
Q1. 現在完了進行形の肯定文を作る基本公式はどれですか。
- 主語 + have [has] + 過去分詞
- 主語 + have [has] + been + 動詞の-ing形
- 主語 + be動詞 + 動詞の-ing形
- 主語 + have [has] + been + 過去分詞
答えを見る
正解: B. 主語 + have [has] + been + 動詞の-ing形
現在完了進行形の肯定文は「主語 + have [has] + been + 動詞の-ing形」で作ります。
Q2. 「彼は2時間ずっと本を読み続けています」の正しい英文は?
- He has reading this book for two hours.
- He has been read this book since two hours.
- He has been reading this book for two hours.
- He have been reading this book for two hours.
答えを見る
正解: C. He has been reading this book for two hours.
主語Heは3人称単数なのでhas beenとし、動詞を-ing形にし、期間にはforを用います。
Q3. knowなどの「状態動詞」の継続を表す場合、どうしますか。
- 原則として進行形にできないため現在完了形を使う
- 現在完了進行形にして -ing 形を付ける
- 過去進行形にして期間を表す語を添える
- 必ず短母音+子音字の規則で語尾を重ねて表す
答えを見る
正解: A. 原則として進行形にできないため現在完了形を使う
knowなどの状態動詞は原則として進行形にできないため、通常の現在完了形(have + 過去分詞)を使います。
よくある質問
- Q. 現在完了進行形の基本の形は?
- 基本の形は「主語 + have [has] + been + 動詞の-ing形」です。主語が3人称単数のときはhasを用い、「ずっと~し続けている」という動作の継続を表します。
- Q. forとsinceの簡単な見分け方は?
- 後ろに時間の幅(数量)が来るときはfor(例: for three days=3日間)、動作の起点(過去の時点)が来るときはsince(例: since yesterday=昨日から)を使います。
- Q. knowを現在完了進行形にできますか?
- knowは状態を表す動詞であるため、進行形にはできません。そのため「知り合いである」という継続を表す場合は、現在完了形を用いてhave knownと表します。
- Q. How longの疑問文への正しい答え方は?
- 「I have been studying for two hours.」のように現在完了進行形とfor/sinceを用いて答えるか、「For two hours.」のように期間だけを答えます。
2026年10月8日更新・モチタン辞典編集部
for
since
how long