以下を英語にしてみましょう。

a. 私は今音楽を聴いている。( listen to music )
b. 私はササキさんを知っている。

a. I am listening to the music.
(今ちょうどやっているありあり感→現在進行形)
b. I know Mr. Sasaki.
(「知っている」のは今までも、今も、これからも続くこと→現在形)

ですね。a.のように「今やっている」を現在進行形で表す場合は、現在完了にするときも、be 動詞の過去分詞 been を使って have been ...ing と現在完了の進行形にします。

a. I have been listening to music for one hour.
(私は音楽を1時間聞いている。)
b. のように現在形を用いる場合は
I have known Mr. Sasaki for many yeas.
(私はササキさんを長年知っている。)
となります。
では、次はどうでしょうか?

・私はこの学校で10年理科を教えている。(teach)
c. I have taught science at this school for 10 years.

d. I have been teaching science at this school for 10 years.

c.現在完了形、d.現在完了進行形 どちらもありえます。違いはなんでしょう?

teach の現在形は、
 My father teaches mathematics at high school.
 「今までも」「今も」「これからも」「確かに」すること、あること。

現在進行形は、

 長くは続かない「ある行為、状態から「今」を切り取った、ありあり感のある形

 My wife is teaching English to my daughter's friend today.
 (妻は今日娘の友達に英語を教えているところだ。)

でしたね。teach を「現在完了形」にする場合は「現在形」の意味が生きています。
c. I have taught science at this school for 10 years.
(10年間安定して教えていてこれからも教える。)

「現在完了進行形」にする場合は、「現在進行形」の意味が生きていて、

d. I have been teaching science at this school for 10 years.
(10年間教えているが確かにこれからもかはわからない。)

の意味が含まれています。このような微妙な違いも、

                    動詞の形は、「気持ち」で決まる。

からです。
 では次の文はなぜ have lived ではなく「現在完了進行形」have been living あのでしょう。?

I have been living in this town for a long time, but still I don't like it.
 still 未だに
(私は長い間この町に住んでいるけど、未だに好きじゃない。)
 住んでいるのがどれほど「長い間」でも「未だに好きじゃない」ということは「その状態を安定して続るとは限らない。どこか別の場所に移るかもしれない」ことを含む、「現在完了進行形」を使っています。