現在完了の基本形は(have[has]+過去分詞)となり、中学で習った、完了・結果・経験・結果の他に、高校英語では、現在完了進行形が新しい文法事項となります。
過去から続いてきた動作や状態が、話をしているちょうどその瞬間に終了してしまっているような時に使われます。
I have just written the report.
「私はちょうど報告書を書いたところだ。」
※just を already にすれば「すでに書いてしまった」となります。
Has he done his homework yet?
「彼はもう宿題をしてしまいましたか。」
My aunt has not(hasn't) come yet.
「私のおばさんはまだ来ていません。」
※yet は疑問文では「もう」、否定文では「まだ」となります。
過去の動作などの結果として、それが残っている現在の状態などを時に使います。
※日本語は“完了”と同じようになることがありますが、日本語だけで判断せず、状況を考えて使い分けることが求められます。
I have lost a Gucci bag.
「私はグッチのバッグを失くしてしまった。」
※この場合は、以前に失くしてしまった物が、今も見つかっていない状態であることを意味していますが、単なる過去形にすると、今は手元にあるのかどうかは分かないことになります。
Ryoko has gone to Paris.
「良子はパリに行ってしまった。」
※この場合は、パリに行ってしまって、今はここにはいない状況を説明することになりますが、口語的には“完了”や“経験”を表すこともあります。
現在完了の中で、一番分かりやすい用法ではないかと思います。
※この用法では、once, never, ever, ~times などが同時によく使われます。
I have once met the actor.
「私はかつてその俳優に会ったことがあります。」
Have you ever seen a ghost?
「あなたは幽霊を見たことがありますか。」
They've visited Japan many times.
「彼らは何度も日本を訪れたことがあります。」
状態の継続を表現する場合に使われる用法です。
※この用法で共に使われる since と for は非常に間違いやすいので注意してください。
We have known each other for ten years.
「私たちは知り合ってから10年になる。」
※「10年間お互いをずっと知っている」と訳せば分かりやすくなるでしょう。
The animal has been in the hole since this morning.
「その動物は今朝からずっとその穴の中にいます。
※「~から」となっていても、since を from にすることはできません。よく間違える人がいるので、誤文訂正問題などによく出てきます。
この用法は、高校になって初めて勉強する方が多いと思いますので、現在・過去進行形との違いをしっかり理解するようにしてください。
※この用法で使われる動詞は“継続用法”とは違って、動作を表す動詞が中心になります。
Bob has been reading comic books for more than five hours.
「ボブは5時間以上もずっと漫画を読んでいる。」
※次のように、継続用法と同じように使われる場合もあります。
The family has lived in New York for seven years.
The family has been living in New York for seven years.
「その家族は7年間ニューヨークにずっと住んでいる。」
過去進行形は、過去の一点における進行を表現するものなので,期間の長さを表す言葉とは一緒に使えませんね。
I was staying with my cowkers in that apartment.
これに(×for two years)などは付けません。
at that time(その時期)などの一時的、瞬間的な言葉は付けることができます。