回答

現在完了進行形って、わかりやすくって意識してもとっても難しくて、説明にも曖昧な点とか矛盾をはらんでます。なのでわかんなかったらツッコミ入れてください。

現在完了形は、現在形をベースに完了形にしたもので
現在完了進行形は、現在進行形をベースに、完了形にしたものです。
だから現在形と現在進行形の違いがわかれば、
この2つの違いもわかると思います。

①現在形は状態や属性を表す/現在進行形は動作や行為を表す
現在形は、「現在のこと」というよりは、
いつでも成り立つようなこととか
繰り返し行なっていること、という方が近くて、
主語の状態/属性とか職業とかを表すのに使います。

例えばHe teaches English. っていう現在形の文は、いまとかいつとかっていうより、教えるという動作を繰り返している、という意味になります。
そこから属性とか職業を表す用法で使われて、言い換えるならばHe is an English teacherってことになるんです。

それに対して現在進行形は、
「継続中の動作や行為」を表します。
He is teaching his students English in the classroom
は「いま英語を教室で教えている真っ最中」ってことなよで、is teachingは今行っている動作を表しています。

この違いは完了形と完了進行形でも同じなんです。
質問者さんの画像の説明もこのことを言っています。

a)He has worked for the company for 30 years

b)He has been working outside for 3 hours

b)は現在完了進行形なので、進行形をベースに完了形にしたものです。つまり「外で働いている真っ最中」というのが3時間続いているということです。
workという動作をしているのが継続している。

a)は現在完了形です。現在形をベースに完了にしている。
現在形の場合はHe works outside(彼は[普段]外で働いている)という意味になります。
内勤じゃなくて外勤の人、オフィスじゃなくて現場仕事のひと、みたいな感じです。
そしてこれを完了形にすると、そういう属性を30年間続けた、ということになります。

だから
30年間眠らずにworkという動作を続けた
っていう人間には不可能なことを言ってるんじゃなくて、
オフィスの中じゃなくて外勤の立場で30年間いた、現場仕事が好きで、ベテランになってもオフィスで働いて管理職に昇進したりとかしなかったんだね、みたいなことを言ってます。

ののののの

②状態動詞は進行形にしない
例えばhaveは「持つ」ではなく「持っている」という意味です。
持ってないものを持つ という動作ではなくて
持っているという状態を表すんですね。こういう動詞をややこしい名前ですが「状態動詞」と言います。

こういう動詞は基本的に進行形にしません。なぜかというと、始まりと終わりがある動作じゃないから、ずっと継続するのが当たり前だからです。
これは完了形と完了進行形でもそうで、状態動詞は完了進行形には基本的にしません。

③完了進行形はこれからも続くと思われることを表す。
a)He has worked for the company for 30 years
c)He has been working for the company for 30 years

①の説明と矛盾するようですが、c) の文は「彼は30年間、外で(眠らずに体を動かして)働き続けている」という意味にはなりません。そのように理解することは文法上可能ですが、現実的にあり得ないと誰でもわかるので、そう受け取る人はいないと思います。

a)とc)の違いは、
a)は 30年間が外勤の立場で働いてきた というだけ
c)は 30年間外勤してきて、今後もそれが続くだろう
という感じです。

他の方もおっしゃるように
現在(完了)進行形は「継続的な動作」
現在(完了)形は「断続的な(繰り返し行う)動作」
で、そこから①で説明したような違いがうまれます。
そうするとこのcの文は矛盾を感じるのですが、進行形でいう「継続」というのは、「今まさに行っている」はもちろんですが、「大きな視点で見て継続している」でも構わないんです。

ある解説書の現在進行形の説明で
友達と電話中に『(最近)小説読んでるんだよねー』っていう会話のときに現在進行形でI'm reading a novelって言って問題ない。実際には「いま」は「電話で会話中」であったとしても、って書いてました。 

つまり話し手の中で「終わってない(=継続中)」という意識があれば、「まさにそれを今やってる」ってことでなくても進行形にしていいってことだと思います。
c) の完了進行形の文も、進行形のそういう面を反映していると思います。c)の文は30年間続けてきて、そしてまだ終わってなくて続いている、ということです。

それに対して進行形抜きの現在完了形の場合は、
一つ一つの行為が始まって、一定期間続いて、完了する
という一連の流れを長いことやってきた、という感じになります。だからa)の文は、30年間、1日1日か1年ごとかわからないけど、都度都度区切りをつけながら働いてきた、ということを言っていて、これから先のことには言及していないということになります。

ののののの

①と③の説明が矛盾しているような感じで、過去のここでの質問を振り返ってもここがうまく説明できないんだよなーと思ったんですが、
書いてから思ったのは
現在完了進行形は
現在進行形に完了のニュアンスを加えたもの→①
現在完了形にある進行のニュアンスを加えたもの→③
の2つの意味合いがある、と思えば
感覚的にスッと入る気がしました。

この回答にコメントする

これは非常に難しい問題だと思います。

「現在完了進行形は過去から今まで継続することに使われる。現在完了形でも現在完了進行形でもほとんど変わらない場合もある」という説明が書かれているのを見たことがある気がします。それほど明確な区別が難しいと言うことだと思います。

僕は、「継続の意味が強まる」ぐらいに理解しています。

例えば

I have studied English for seven years.

だと、完了・継続・経験のどの意味になるかは文脈判断になります。(もちろん継続の意味になることが多いと思いますが)

「ずっと勉強している」と継続の可能性もありますし
「勉強した」という完了の可能性もありますし
「勉強したことがある」という経験の可能性もあります。

しかし、

I have been studying English for seven years.

なら確実に継続の意味だとわかります。
「7年間ずっと英語を勉強している」

また、「継続の意味が強まる」から「今後もそのままの勢いで続く可能性を含む」という説明もあります。

つまり、上の例文だと、

「7年間ずっと英語の勉強をしている(今後も続く)」

のような感じです。

また、写真にも記載されていますが、

動作動詞と状態動詞での区別もされます。
状態動詞(know, liveなど)は進行形にはできませんから、継続を表したい場合はhave p.p.で表します。
※状態動詞も例外的に進行形にはなる場合もありますが、ここでは置いておきます。

この回答にコメントする

現在完了形→過去から断続的にやっていて現在もしてるということを表すとき
現在完了進行形→過去から継続的にやっていて現在もしていることを表すとき

user

I have taught English to my students since two years ago
2年前からずっとご飯も食べずに英語を教えることはできませんね。よって断続的にしてる事なので現在完了形です。
I have been running around here for two hours.
走ることは継続的にやってるから現在完了進行形です。

ニコ

6のピアノを2時間弾くのは継続的にしていて、現在完了進行形になるのはわかるのですが、7の五年間日本語を勉強しているのはなぜ現在完了進行形になるのですか?

user

なんか正直少し強調というめんでも現在完了進行形にすることもあるんですよね。

user

下の御二方の回答がベターです。

この回答にコメントする
疑問は解決しましたか?