モチタン辞典 › 読みもの › 英文法 › 過去完了進行形と現在完了進行形の違い

過去完了進行形と現在完了進行形の違いを解説
過去完了進行形と現在完了進行形の決定的な違いは、「動作が継続している基準の時点」が過去か現在かという点です。現在完了進行形(have / has been -ing)は「過去から今この瞬間まで」動作が続いていることを表し、過去完了進行形(had been -ing)は「過去のある時点まで」動作が続いていたことを表します。
日本語訳の「〜していた」に頼らず、文中の基準時を見ることで両者を正確に見分けられます。
一目でわかる違いの比較表
現在完了進行形と過去完了進行形の基本的な違いを整理しました。どちらを使うべきか迷ったときは、時間軸の基準が「現在」にあるのか「過去」にあるのかを確認します。
| 項目 | 現在完了進行形 | 過去完了進行形 |
|---|---|---|
| 基本の形 | have / has been + -ing | had been + -ing |
| 基準の時点 | 現在(今) | 過去のある基準点(when節など) |
| 動作の期間 | 過去のある時点から「現在」まで | 大過去から「過去の基準点」まで |
| 今の状態 | 今も動作が継続中、または直前まで続いていて影響がある | 過去の時点で終了したか、その時点で続いていた(今は無関係) |
| 代表的な例文 | I have been studying English for two hours.(私は2時間ずっと英語を勉強しています[今も勉強中]) | I had been studying English for two hours when he arrived.(彼が到着したとき、私は2時間ずっと英語を勉強していました) |
日本語ではどちらも「〜していた」と訳される場面があるため、和訳だけで判断しようとすると混同が起きます。英語の時制を正しく判断するには、文全体の時間の流れに着目する必要があります。
次の疑問過去完了進行形の基本的な形や使い分けを例文と一緒におさえたいときは、過去完了進行形の使い方と例文が参考になります。
時間軸のイメージと基本構造
2つの時制を英語の感覚で正しく理解するために、時間軸(タイムライン)での位置関係と文法構造を確認します。
時間軸上の位置関係
現在完了進行形は、過去の起点から矢印が伸びてきて、先端が「現在(今)」に到達しています。視線は常に「現在の自分」にあります。
[過去の起点]==(動作の継続)==>[現在(基準点・今も継続中)]
一方、過去完了進行形は、さらに過去(大過去)から伸びてきた矢印が、「過去のある時点」で受け止められます。視線は「過去の特定の場面」に向けられており、現在の状況には直接触れません。
[大過去の起点]==(動作の継続)==>[過去の基準点(終了またはその時も継続中)]……[現在]
基本の形と文の作り方
肯定文、否定文、疑問文の作り方は助動詞の活用規則に従います。
- 現在完了進行形の肯定文:She has been waiting for the bus since morning.(彼女は朝からずっとバスを待っています)
- 現在完了進行形の否定文:They have not been practicing lately.(彼らはここ最近練習をしていません)
- 現在完了進行形の疑問文:How long have you been living here?(あなたはどのくらいの間ここに住んでいるのですか)
- 過去完了進行形の肯定文:He had been driving for five hours before he took a break.(彼は休憩を取る前に5時間ずっと運転していました)
- 過去完了進行形の否定文:I had not been sleeping well until that medicine worked.(その薬が効くまで、私はずっとよく眠れていませんでした)
- 過去完了進行形の疑問文:How long had you been waiting when the train arrived?(電車が到着したとき、あなたは何時間待っていたのですか)
大過去から始まった動作が過去の基準点まで継続し、視線は過去に向けられます。
例文対比でつかむニュアンス差
同一の動詞やシチュエーションを用いた例文を比較することで、話し手の意識がどこにあるのかを実感できます。
雨の天気を表す例文の比較
It has been raining for three hours.
(3時間ずっと雨が降り続いています)
話し手は窓の外を見ており、今も雨が降っているか、あるいは雨が止んだばかりで地面が水浸しになっている状態を目の前にしています。基準は「今」です。
It had been raining for three hours when we went out.
(私たちが出かけたとき、3時間ずっと雨が降り続いていました)
基準は「私たちが出かけた(went out)」という過去の瞬間です。
出かけた時点で3時間降っていたという過去の状況を振り返って述べており、今現在の天気については何も語っていません。
疲労や感情を表す例文の比較
完了進行形は、直前までの動作が生み出した結果(疲労、息切れ、苛立ちなど)を強調する際によく使われます。
I am tired because I have been running.
(私は走っていたので疲れています)
今まさに息を切らしており、汗をかいている状態を説明しています。
I was tired because I had been running.
(私は走っていたので疲れていました)
「疲れていた」という過去の時点の理由として、その直前まで走っていた動作を挙げています。
待ち時間の苛立ちを伝える会話表現
I had been waiting for two hours when the manager finally appeared!
(責任者がやっと現れたとき、私は2時間も待たされていたんだ!)
ネイティブスピーカーが過去の出来事に対して「2時間も待たされ続けていた」という蓄積した不満や苛立ちを表現する場合、単なる過去形ではなく過去完了進行形を選びます。
日常的な用例をもっと確認したいときは、現在完了進行形の使い方の例文集を参考にしてください。
過去完了形や過去進行形との違い
過去完了進行形とよく混同される時制に「過去完了形(had + 過去分詞)」と「過去進行形(was / were + -ing)」があります。それぞれの機能の違いを明確にします。
過去完了形と過去完了進行形の違い
どちらも「大過去から過去の基準点まで」に関わる時制ですが、どこに焦点を当てているかが異なります。
表は横にスクロールできます →
| 時制 | 形式 | 焦点 | 例文 |
|---|---|---|---|
| 過去完了形 | had + 過去分詞 | 動作の完了・結果・状態の継続 | I had written the report when the boss asked for it.(上司が求めたとき、私は報告書をすでに書き終えていた) |
| 過去完了進行形 | had been + -ing | 動作そのものの継続プロセスの強調 | I had been writing the report for three hours when the computer crashed.(パソコンが壊れたとき、私は3時間ずっと報告書を書き続けていた) |
過去完了形は「すでに書き終えていた」という完了の事実に焦点がありますが、過去完了進行形は「3時間書き続けていた作業の途中でトラブルに遭った」という動作のプロセスそのものに焦点があります。
過去進行形と過去完了進行形の違い
過去進行形は過去のある一瞬の動作を切り取ります。一方、過去完了進行形はそれまでの期間の長さや動作の積み重なりを表します。
表は横にスクロールできます →
| 時制 | 形式 | 時間的特徴 | 例文 |
|---|---|---|---|
| 過去進行形 | was / were + -ing | 過去の一点における動作(点) | When he called, I was cooking dinner.(彼が電話してきたとき、私は夕食を作っている最中だった) |
| 過去完了進行形 | had been + -ing | 過去の基準点までの継続期間(線) | When he called, I had been cooking dinner for an hour.(彼が電話してきたとき、私は1時間ずっと夕食を作り続けていた) |
for an hour のように「期間」を表す語句を伴って動作の積み重ねを示す場合は、過去進行形ではなく過去完了進行形を用います。

2つの時制の対比について理解を深めたいときは、過去完了進行形と過去進行形の解説も役立ちます。
次の疑問had + 過去分詞との使い分けをさらに深掘りしたいなら、過去完了と過去完了進行形の違いでニュアンスの差を整理できます。
状態動詞は進行形にできない規則
完了進行形を学習する上で注意すべき文法規則が「状態動詞」の扱いです。状態を表す動詞は、原則として現在完了進行形にも過去完了進行形にもできません。
進行形にできない主な動詞
自分の意思で即座に開始・停止できない「状態」を表す動詞は、継続を表す場合でも完了進行形ではなく完了形(have / had + 過去分詞)を用います。
- 心理・認識:know(知っている)、understand(理解している)、believe(信じている)
- 好悪・感情:like(好む)、love(愛している)、hate(嫌う)
- 所有・状態:have(持っている)、belong(所属している)、resemble(似ている)
誤文の例:I had been knowing him for ten years when we started the project.(不可)
正文の例:I had known him for ten years when we started the project.(プロジェクトを始めたとき、私は彼と10年来の知り合いだった)
中間的な動詞(live, work, study)の扱い
live(住む)、work(働く)、study(勉強する)などの動詞は、完了形でも完了進行形でも大きな意味の差なく使えます。
- She has lived in Tokyo for five years.(彼女は東京に5年間住んでいる[安定した状態])
- She has been living in Tokyo for five years.(彼女は東京に5年間住み続けている[生き生きとした生活の継続])
ただし、一時的な滞在であることを強調したい場合は進行形が好まれます。
心理・認識
- know
- understand
- believe
好悪・感情
- like
- love
- hate
所有・状態
- have
- belong
- resemble
状態を表す動詞は完了進行形にできず、継続を表す場合も完了形を用います。
見分け方手順とテスト頻出サイン
試験や資格テストの空所補充問題で迷わないための判断手順と、解答の決め手となるキーワードをまとめました。
判別のための3ステップ
- 動詞の種類の確認:動詞が know や have などの状態動詞である場合、進行形(-ing)の選択肢をすべて除外します。
- 基準時点の確認:文中に過去の時点を示す表現(when節、before節、過去を表す副詞句など)があるか探します。
- 文全体の基準が「過去」である場合 → 過去完了(または過去完了進行形)を検討
- 文全体の基準が「現在」である場合 → 現在完了(または現在完了進行形)を検討
- 継続のニュアンスの有無:for や since などの期間表現があり、かつ動作の途中・躍動感を強調している文脈なら完了進行形を選択します。
テストで過去完了進行形を決定づけるサイン
過去完了進行形が正解となる典型的なパターンは、過去形の文脈(when S + 過去形動詞 など)の直前に、for two hours や all day などの期間を表す修飾語が組み合わさっている場合です。
例:The ground was wet because it ( ) all night.
主節が was(過去形)であるため、地面が濡れていた過去の時点よりも前に雨が降り続いていたことがわかります。したがって空所には had been raining が入ります。
knowやhaveなどの状態動詞なら進行形を除外
when節等の過去表現なら過去完了、今なら現在完了
for等の期間表現があり動作の強調なら完了進行形
動詞の種類、文の基準時点、継続ニュアンスの有無を順に確認して判別します。
理解度を確認する練習問題
学んだ知識を使って、次の練習問題に挑戦してみましょう。
第1問(選択問題)
次の空所に入る最も適切なものを1つ選んでください。
When Ken called me yesterday, I ( ) for the exam for four hours.
(A) am studying
(B) have been studying
(C) had been studying
(D) was studied
正解:(C) had been studying
解説:When Ken called me yesterday という明確な過去の基準点があります。
さらに for four hours(4時間ずっと)という継続期間が示されているため、過去の時点まで動作が続いていたことを示す過去完了進行形の had been studying が適切です。
第2問(誤文訂正問題)
次の文の誤っている箇所を指摘し、正しく直してください。
We had been knowing each other for a long time before we became business partners.
正解:had been knowing → had known
解説:know(知っている、知り合いである)は状態動詞であるため、進行形にはできません。「過去のある時点までの状態の継続」を表すには、過去完了形を用いて had known とします。
第3問(文脈判断問題)
次の空所に入る最も適切なものを1つ選んでください。
Look at your muddy shoes! What ( ) you ( )?
(A) had / done
(B) had / been doing
(C) have / been doing
(D) were / doing
正解:(C) have / been doing
解説:Look at...(〜を見なさい)と現在呼びかけていることから、基準時は「今」です。「泥だらけの靴」という現在の状況を引き起こした、直前まで行われていた動作を尋ねているため、現在完了進行形の have you been doing が正解です。
まとめと日常会話への活用
現在完了進行形と過去完了進行形の違いを身につけるための要点を振り返ります。
- 現在完了進行形(have / has been -ing):過去から「現在」まで続く動作。今の様子や余波を伝える。
- 過去完了進行形(had been -ing):大過去から「過去の基準点」まで続いた動作。過去の出来事の背景や理由を伝える。
- 状態動詞(know、likeなど)は進行形にせず、完了形を使う。
- 試験問題では「主節や従属節の時制」と「for / since などの期間表現」を組み合わせて判断する。
「今のことなのか、過去のことなのか」という視点の位置を意識しながら英文に触れることで、日常会話でも自然に使い分けられるようになります。
過去から現在まで続く動作。今の様子や余波を伝える
大過去から過去の基準点まで続いた動作。過去の背景を伝える
knowやlikeなどは進行形にせず完了形を使う
主節・従属節の時制とforやsinceなどの期間表現で決まる
時間軸の基準点、動詞の性質、文脈のサインを押さえて使い分けましょう。
続けて読む
理解度チェック
Q1. 過去完了進行形が表す時間軸の位置関係はどれですか?
- 過去の起点から現在まで動作が継続している
- 大過去から過去の基準点まで動作が継続していた
- 現在から未来のある時点まで動作が継続する
- 過去の一点における一瞬の動作を切り取っている
答えを見る
正解: B. 大過去から過去の基準点まで動作が継続していた
過去完了進行形は、大過去から伸びた矢印が過去の基準点で受け止められる時間軸を表します。
Q2. 原則として完了進行形にできない動詞の組み合わせはどれですか?
答えを見る
正解: C. know と like
knowやlikeなどの状態動詞は、原則として完了進行形にできず完了形を用います。
Q3. 空所に最も適切な語句は? When he called, I ( ) for an hour.
- was cooking
- had been cooking
- have been cooking
- am cooking
答えを見る
正解: B. had been cooking
calledという過去の基準点と、for an hourという期間の重なりがあるため過去完了進行形が入ります。
英語の文法は、話して身につけよう。会話アプリ「モチスピ」英語を話して練習できる会話アプリ。話すたびに、発音・文法・自然さをその場で直してもらえます。無料で試す
よくある質問
- Q. 過去完了進行形はいつ使う?
- 過去のある時点を基準にして、その時点まで動作が継続していたことや、その直前まで続いていた動作が過去の状況に影響を与えていたことを説明するときに使います。
- Q. 現在完了進行形との簡単な見分け方は?
- 文全体の視点が「今」にあるか「過去」にあるかを見ます。文中にwhen節などの過去の動詞があれば過去完了進行形、今現在の状況を語っていれば現在完了進行形です。
- Q. 状態動詞を進行形にしてはいけない理由は?
- knowやlikeなどの状態動詞は「すでにある状態」を表し、意図的に始めたり中断したりする「動作」ではないため、動作の進行や継続を強調する進行形にはできません。
- Q. 会話で怒りや疲労を込めて使うのはなぜ?
- 完了進行形は「その動作がずっと続いていたプロセス」を生き生きと際立たせるため、「ずっと待たされた」「ずっと作業していた」という感情の強さを伝えやすくなります。
2026年10月2日更新・モチタン辞典編集部