現在完了進行形 / 現在完了 違い|have been doing と have done の違い

英語の学習で混乱しやすいのが、have been doinghave done の使い分けです。

どちらも「過去から今につながる」形ですが、見るポイントが違います。
ざっくり言うと、

  • have been doing は、動作の続き方・途中感を見せたいとき
  • have done は、結果・完了・経験・状態を伝えたいとき

です。

この記事では、初心者でも迷いにくいように、
「何に注目している形なのか」 を中心に、例文つきでわかりやすく整理します。

なお、ここでいう have done は、動詞 do だけの話ではなく、
have/has + 過去分詞 で作る現在完了形全体を指しています。
たとえば have finished / have written / have seen なども同じ仲間です。

目次

まず結論

最初に、違いをひと目でつかめる表を見ておきましょう。

スクロールできます
基本イメージ何を目立たせる?
have been doing過去から今まで動作が続いている / さっきまで続いていた動作そのもの・長さ・途中感I have been studying for three hours.
have done今につながる結果がある / 終わった / 経験がある / 状態が続いている結果・完了・経験・事実I have finished my homework.

迷ったら、まず次の2つを考えると整理しやすいです。

1. 今見せたいのは「活動そのもの」か、「結果」か
2. 動作動詞か、状態動詞か

この2つを押さえるだけでも、かなり判断しやすくなります。

現在完了進行形 have been doing の意味

1. 今も続いている動作を表す

have been doing は、過去に始まった動作が今も続いているときによく使います。

例文を見てみましょう。

  • I have been studying English for two hours.
    2時間ずっと英語を勉強しています。
  • She has been waiting since noon.
    彼女は正午からずっと待っています。
  • They have been living here for ten years.
    彼らは10年間ここに住み続けています。

この形では、「どれくらい続いているか」 が大事になりやすいです。
そのため、for / since / how long と相性が良いです。

💡 イメージとしては、線で伸びている感じです。
「始まった → 続いている → 今もつながっている」という見え方になります。

2. さっきまでしていて、今その影響が見える

現在完了進行形は、今はちょうど終わったかもしれないけれど、その活動のあとが今見えているときにも使えます。

  • I’m tired because I have been working all day.
    一日中働いていたので疲れています。
  • She has been crying.
    彼女は泣いていたようです。
  • It has been raining.
    雨が降っていたのです。

この使い方では、結果そのものよりも、
「その活動があったこと」 に意識が向いています。

たとえば、

  • I have cleaned the room.
    → 部屋がきれいになった、という結果が中心
  • I have been cleaning the room.
    → 掃除という作業をしていたことが中心

という違いになります。

3. 一時的・途中の感じが出やすい

現在完了進行形は、今まさに続いている途中感や、一時的な感じを出しやすい形です。

  • I have been staying with my aunt this week.
    今週はおばの家に泊まっています。
  • I have been going to bed late recently.
    最近ずっと寝るのが遅いです。

この形を使うと、
「そういう状態に今なっている最中」
という空気が出やすくなります。

現在完了 have done の意味

1. 完了・結果を表す

現在完了の大事な使い方のひとつが、終わったことの結果が今にあるという表し方です。

  • I have finished my homework.
    宿題を終えました。
  • She has written the report.
    彼女はレポートを書き終えました。
  • We have cleaned the kitchen.
    私たちはキッチンを掃除しました。

この形では、「もう終わった」
「その結果、今こうなっている」
という見え方が強くなります。

たとえば I have lost my key. なら、
単に「なくした」という過去の出来事ではなく、
今も鍵がないことが大事です。

2. 経験を表す

現在完了は、これまでにしたことがあるかを表すときにもよく使います。

  • I have been to Kyoto three times.
    京都に3回行ったことがあります。
  • Have you ever tried natto?
    納豆を食べたことがありますか。
  • She has never seen snow.
    彼女は一度も雪を見たことがありません。

この用法では、いつしたかよりも、
経験があるかどうかが中心です。

そのため、ever / never / before などと一緒に使われやすいです。

3. 継続する状態を表す

ここが、現在完了進行形とのいちばん大事な違いのひとつです。

現在完了は、状態が今まで続いていることも表せます。

  • I have known him for ten years.
    彼を10年間知っています。
  • We have loved this town since childhood.
    私たちは子どものころからこの町を愛しています。
  • She has had this car for five years.
    彼女はこの車を5年間持っています。

これらは、know / love / have のような状態動詞が使われています。
このタイプの動詞は、ふつう進行形にしません。

そのため、

  • × I have been knowing him for ten years.
  • × She has been having this car for five years.

のような形は、通常は不自然です。

状態が続くなら have done、動作が続くなら have been doing
という整理をしておくと、かなり迷いにくくなります。

have been doing と have done の比較

ニュアンス比較表

スクロールできます
伝えたいこと自然な形ニュアンス
今も続いている勉強have been doingI have been studying all morning.勉強という活動が続いている
書き終えたという結果have doneI have written the email.メールが完成した
何冊読んだかhave doneShe has read five books this month.数・達成が大事
どれくらい読み続けているかhave been doingShe has been reading all day.長さ・活動が大事
ずっと知っている状態have doneI have known her since high school.状態の継続
最近ずっと働いているhave been doingI have been working a lot lately.最近の活動の継続

例文で確認する

同じ場面でも、どちらを使うかで見せたいポイントが変わります。

1. write の場合

  • I have written my essay.
    エッセイを書き終えた。
  • I have been writing my essay.
    エッセイを書いているところだ / ずっと書いていた。

1つ目は完成が大事です。
2つ目は作業中だったことが大事です。

2. read の場合

  • She has read ten pages.
    10ページ読んだ。
  • She has been reading for an hour.
    1時間ずっと読んでいる。

前者はどれだけ終わったか
後者はどれだけ続いたかに注目しています。

3. work の場合

  • I have worked here since 2020.
    2020年からここで働いています。
  • I have been working here since 2020.
    2020年からここで働き続けています。

このように、動詞によってはどちらも使われることがあります
ただし、have been working のほうが、
今も続いている途中感がやや出やすいです。

4. know の場合

  • I have known him for years.
    彼のことは何年も前から知っています。
  • × I have been knowing him for years.

know は状態動詞なので、通常は進行形にしません。
ここは、現在完了進行形にしないのがポイントです。

迷ったときの選び方

迷ったら、次の順番で考えると選びやすいです。

1. 「結果」を言いたいなら have done

  • 宿題が終わった
  • レポートを書いた
  • 3冊読んだ
  • その映画を見たことがある

こういうときは、have done が基本です。

キーワード

  • 完了
  • 結果
  • 経験
  • 回数
  • 数量

2. 「活動の途中・継続」を言いたいなら have been doing

  • ずっと勉強している
  • 最近ずっと働きすぎている
  • 朝から待っている
  • さっきまで掃除していた

こういうときは、have been doing が自然です。

キーワード

  • 続いている
  • どれくらい続いているか
  • 最近の活動
  • 疲れ・濡れ・汚れなど、活動のあとが見える

3. 「状態が続く」なら have done

  • know
  • like
  • love
  • have
  • believe
  • want

このような状態動詞では、通常、have done を選びます。

4. 「何個・何回」と「どれくらい」を見分ける

これはとても便利な見分け方です。

  • 何個・何回 → have done
  • どれくらいの時間 → have been doing

例:

  • I have written three emails today.
    今日はメールを3通書いた。
  • I have been writing emails all morning.
    今日は朝からずっとメールを書いている。

数を言うなら現在完了、長さを言うなら現在完了進行形
と覚えると、実戦で役立ちます。

よくある間違い

1. 状態動詞を進行形にしてしまう

誤り

  • I have been knowing her for years.
  • He has been liking this band since high school.

自然な形

  • I have known her for years.
  • He has liked this band since high school.

2. 完了を言いたいのに進行形にしてしまう

誤り

  • I have been finishing my homework.

自然な形

  • I have finished my homework.

「終わった」という完了を言いたいなら、進行形より現在完了のほうが合います。

3. 数量を言うのに進行形にしてしまう

やや不自然になりやすい例

  • I have been reading five books this month.

自然な形

  • I have read five books this month.

five books のように、達成した量が中心なら現在完了が自然です。

4. 完了形と過去の特定時点を一緒にしてしまう

誤り

  • I have finished it yesterday.
  • She has been busy last week.

自然な形

  • I finished it yesterday.
  • She was busy last week.

yesterday / last week / in 2020 のような、
終わった過去の時点をはっきり言うときは、現在完了ではなく過去形を使います。

練習問題

問題

次の日本語に合うように、have donehave been doing のどちらが自然か考えてみてください。

  1. 私は朝からずっとこのレポートを書いています。
  2. 私はそのレポートを書き終えました。
  3. 私は彼を10年間知っています。
  4. 彼女は今日3杯コーヒーを飲みました。
  5. 最近ずっと雨が降っています。

答え

  1. I have been writing this report since this morning.
    → 続いている活動なので have been doing
  2. I have written the report.
    → 完了した結果なので have done
  3. I have known him for ten years.
    know は状態動詞なので have done
  4. She has had three cups of coffee today.
    → 数量が中心なので have done
  5. It has been raining lately.
    → 最近の継続する活動なので have been doing

まとめ

最後に、ポイントを短く整理します。

have been doing
動作の継続・途中感・最近の活動を見せたいとき

have done
結果・完了・経験・状態の継続を伝えたいとき

✅ 迷ったらこの基準で考える

  • 活動そのものを見せたい → have been doing
  • 結果や事実を見せたい → have done
  • 状態動詞なら → have done
  • 何個・何回なら → have done
  • どれくらい続いているかなら → have been doing

英語では、同じ「今につながる過去」でも、
どこに焦点を当てるかで形が変わります。

単に日本語訳で覚えるよりも、

  • 結果を見るのか
  • 活動を見るのか
  • 状態なのか動作なのか

を意識したほうが、実際の会話や英作文でずっと使いやすくなります。

「終わったこと」を言いたいのに進行形を使っていないか、
「ずっと続いている動作」なのに結果形に寄りすぎていないか。

この2点を確認するだけで、かなり自然な英語になります。

この記事を書いた人

英語表現の意味・違い・使い分け、英語例文・英語メール・会話フレーズ、英会話のコツ・勉強法、英検・TOEIC・TOEFLの対策方法、英語学習アプリ・オンライン英会話・英語コーチングなどの情報を発信しています。
自身の英語学習経験と、教材・学習サービスの利用経験をもとに、初心者にもわかりやすく、実際に役立つ情報を重視して記事を作成しています。記事は辞書・公式情報・教材情報などを確認し、必要に応じて内容を更新しています。

目次