現在完了進行形は「have[has]+been+〜ing」の形で「以前から今までずっと
〜し続けている」という意味を表す形です。
進行相
be
+〜ing
完了相
have + 過去分詞
完了進行相 have
+ been
+〜ing
このように「進行」と「完了」を足し算すると,「be+過去分詞
→ been」となります。
次の3つの文を比べてみましょう。
(a) I have lived here for
ten years. (私はここに10年間住んでいる)
(b) I have been working
here for ten years. (私はここで10年間働いている)
状態動詞(=進行形にしない動詞)は,完了進行形にもしません。
(a)の live は状態動詞なので,have been living ではなく have
lived(現在完了形)で〈状態の
継続〉を表します。一方(b)の work
は動作動詞なので,have been working(現在完了進行形)
で〈動作の継続〉を表します。
(b)と次の文を比べてみましょう。
(c) I have worked here for
ten years. (私はここで10年間働いている)
この文は(b)とほぼ同じ意味で使うことができます。しかしこの文は「私はここで10年間の
勤務を終えたところだ」〈完了〉の意味にも解釈できるので,〈継続〉の意味を明確にしたい
ときは(b)を使う方がよい −
これが学校英語の標準的な説明です。
いくつかの点を補足しておきます。
@ (b)と(c)の関係のように,「現在完了進行形を使う方が〈継続〉の意味が明確になるが,
現在完了形で代用することもできる」というタイプの動詞があります。「表現のための実践
ロイヤル英文法」(旺文社)では,そのタイプの動詞として
work のほかに learn,live,
rain,sleep,stay,study,wait
を挙げています。
A逆に言えば,それら以外の動作動詞を〈継続〉の意味で使いたいときは,現在完了進行形
にしなければならないことになります。
・ She has been talking [×has
talked] on the phone for nearly an hour.
(彼女は電話で1時間近く話し続けている)
B(b)と(c)をもう一度見てみましょう。
(b) I have been working
here for ten years.
(c) I have worked here for
ten years.
この2つの文の意味は全く同じではない,と言うネイティブもかなりいます。その人たちは
次のような印象を持つようです。
・(c)は〈完了〉の意味(「ここで10年の勤務を終えた」)である。
・したがって(c)はこれから別の場所で仕事をするという響きがある。一方(b)はこれから
先もここで仕事をするという場合に使う。
C(b)と(c)の違いは,次のようにも説明できます。
(b)は I'm working here.
という文(現在進行形)をもとにした文であり,(c)は I
work here.
(現在形)をもとにした文です。したがって(b)は work
を一時的な行為としてとらえており,
(c)の話し手は work
を〈習慣〉としてとらえています。したがって,
・ I have been working part-time here for
a month.
(私がここでアルバイトを始めてから1か月になります)
この文の場合,話し手がアルバイトを一時的な仕事と考えるなら,現在完了進行形を
使う可能性が高いと言えるでしょう。同時にこの文は,上記Bのとおり「これから先も
しばらくここでアルバイトを続ける」という含みを持つ,と感じる人もいます。