過去完了形I had finished——二つの過去の出来事のうち先に起きた方を表す形)と現在完了進行形I've been waiting——今まで続いている動作を表す形)は、すでに学んだと思います。過去完了進行形はこの二つを組み合わせたもので、過去のある時点よりも前から、ある動作がしばらく続いていたことを表します。

  • I*'d been waiting** for an hour when the bus finally came.*
  • She was tired because she*'d been working** all night.*
  • They*'d been living** in Rome for a year before they moved to Milan.*

形は had + been + 動詞-ing です。

基本の形:主語 + hadbeen + 動詞-ingI*'d been working**. She hadn't been sleeping. Had you been waiting long?*

作り方

3つの要素は必ずこの順番に並びます。had は主語が何であっても変わりません。

主語 had been -ing 形
I / you / he / she / it / we / they had been working、waiting、studying…
  • I had been studying for hours before the exam started.I*'d been studying** for hours before the exam started.*
  • He had been driving all day when the accident happened.
  • We had been planning the trip for months.

had はすべての主語で同じなので、過去進行形のような was / were の使い分けはありません。-ing 形のスペリングは通常のルールに従います(語末の無音の -e は削除:make → making、強勢のある短母音+子音で終わる語では語末の子音を重ねる:run → running)——過去進行形と同じルールです。

基本の使い方:過去のある時点までの継続

これが B2 レベルでの中心的な使い方です。過去の別の時点よりも前に、どのくらいの間続いていたかを表します。

  • By 6 p.m., we*'d been travelling** for ten hours.*
  • How long had they been dating before they got married?
  • She*'d been feeling** ill for a few days before she saw a doctor.*

現在完了進行形と同じように for(期間)や since(起点)を使いますが、ここでの基準点は今ではなく、過去のある時点です。

  • He*'d been working** there for five years when the company closed.*
  • They had been waiting since dawn when the gates finally opened.

日本語では、過去のある時点よりも前から続いていた動作を「〜ていた」や「もう」「すでに」などで表すことが多いです(例:「門がようやく開いたとき、彼女はもう何時間も待っていた」)。英語では、基準になる過去の時点より前から続いていたことをはっきり示すために had been + -ing を使います。

直前までの動作を原因として、過去の状況を説明する

現在完了進行形が現在の状況を説明するのと同じように、過去完了進行形は過去の状況を説明します。その動作が直前に終わったばかりだった場合でも、まだ続いていた場合でも、その影響がその過去の時点で目に見えていた場合に使います。

  • Her clothes were wet because she*'d been swimming**.*
  • He was out of breath — he*'d been running**.*
  • The kitchen was a mess. Someone had been cooking.

これは、過去のある地点に立って、そこに至った直前の原因を振り返るようなものです。I've been working, that's why I'm tired と同じ考え方を、一段階過去にずらしたものです。

過去完了進行形と過去完了形の比較

どちらも過去のある時点から振り返る形ですが、現在完了形と現在完了進行形の対比と似た形で、焦点が変わります。

過去完了形 過去完了進行形
焦点 結果・数量・完了した出来事 進行中の動作やその継続時間
She had written three emails before lunch.(3通——数が重要) She*'d been writing** emails all morning.*(続いていた動作が重要)
He had finished the report when I called.(完了していた) He*'d been writing** the report when I called.*(まだ終わっていない可能性あり)

簡単な見分け方:結果や完了したことを数えるなら過去完了形、継続時間や動作が続いていたことを強調したいなら過去完了進行形です。

  • I*'d read** four chapters by the time she arrived.*(読み終えた章の数 = 結果)
  • I*'d been reading** for an hour by the time she arrived.*(どのくらい = 継続時間)

その期間全体を、ひとまとまりの完了した事実として述べるときは、live、work、study、teach のような長期的な状況を表す動詞で過去完了形が継続の意味でもよく使われます:I had worked there for five years before I left. 過去完了進行形は、その動作がそこまで続いていたことや、継続していた感じをより強調します:I'd been working there for five years and still didn't feel settled.

動詞によっては、わずかな意味の違いで両方の形が自然です。I'd lived there for years(過去完了形——長期的な状況でよく使われる)と I'd been living there for years(過去完了進行形——継続している動作をやや強調)。どちらも正しい表現です。

過去完了進行形と過去進行形の比較

この二つは異なる問いに答えます。過去進行形過去のある特定の瞬間に起きていたことを表し、過去完了進行形はより後の過去の時点まで続いていた動作を表します。

  • At 8 p.m., I was cooking dinner.(まさにその瞬間——過去進行形)
  • By the time she arrived, I*'d been cooking** for an hour.*(彼女が到着した時点までの継続時間——過去完了進行形)

状態動詞は多くの場合、単純形のまま

状態を表す動詞(動作ではなく)——know、believe、understand、like、love、need、own、have(所有)——は、過去のことであっても、継続を表すときは通常そのまま単純形を使います。

  • I'd been knowing him for years before I found out. → ✅ I'd known him for years before I found out.
  • She'd been having the car since 2018.(所有の意味)→ ✅ She'd had the car since 2018.

いつものように、一時的または動作的な意味では進行形になることもあります(He'd been having second thoughts)が、本来の状態の意味では使いません。

否定形

nothadbeen の間に置きます。たいてい hadn't に短縮されます。

  • I hadn't been sleeping well before the trip.
  • They hadn't been speaking for months when they finally made up.

疑問文

疑問文では had が主語の前に移ります。

  • Had you been waiting long?
  • Had she been feeling unwell before the appointment?
  • How long had they been living there?

短い答え:Yes, I had. / No, I hadn't.

よくある間違い

  • I had been wait for an hour. → ✅ I had been waiting for an hour.been の後には -ing 形が続く)
  • She had been been working all day. → ✅ She had been working all day.been は1つだけ)
  • How long you had been waiting? → ✅ How long had you been waiting?(疑問文では had が主語の前に来る)
  • We had been living there since three years. → ✅ We had been living there for three years.three years は期間なので for
  • I'd been knowing her since school. → ✅ I'd known her since school.(状態動詞 → 過去完了形)
  • He had been finished the report when I arrived.(二つの形を混同)→ ✅ He had finished the report when I arrived.(結果 → 過去完了形)または He*'d been writing** the report when I arrived.*(進行中 → 過去完了進行形)——両方同時には使えません。

確認テスト

過去完了形と過去完了進行形、どちらが正しいでしょう?

  1. By the time the ambulance arrived, he ____ (lie) on the ground for ten minutes.
  2. She ____ (write) three chapters before her laptop broke.
  3. ____ you ____ (wait) long when the taxi finally showed up?
  4. They were exhausted because they ____ (hike) since sunrise.
  5. I ____ (know) him for years before he told me his real name.
答えを見る
  1. had been lying(その瞬間までの継続時間)
  2. had written(章の数 = 結果)
  3. Had you been waiting(タクシーが来るまでの継続時間)
  4. had been hiking(続いていた動作が疲れの理由)
  5. had known(状態動詞 → 過去完了形。継続を表すときでも)

まとめ

  • 過去完了進行形 = had + been + 動詞-ing——had は主語が何であっても変わりません。
  • 過去のある時点より前の動作の継続時間を表すとき(for / since)、または過去の状況を直前の原因で説明するとき(she was wet — she'd been swimming)に使います。
  • 過去完了形との違い:過去完了形=結果・数量・完了した出来事、過去完了進行形=進行中の動作やその継続時間。
  • 過去進行形との違い:過去進行形=過去のある特定の瞬間に起きていたこと、過去完了進行形=より後の過去の時点まで続いていた継続時間。
  • 状態動詞know、have、own、like など)は、過去のことでも継続を表すときは単純形のままです:I'd known him for years.
  • 否定形:hadn't been + -ing。疑問文:Had + 主語 + been + -ing?