今回は現在完了形の話です。
現在完了形はやはりとても難しいと感じている生徒が多いし、
実際に多くの生徒が意味や用法をきちんと理解していません。

さて、現在完了形で悩ましいのが、その名称と意味が矛盾している、という点です。
普通、現在完了形の意味は3ないしは4つに分類されます。

①完了・結果
②継続
③経験
*完了と結果を分けると4つとなります。

具体的に見てみましょう。
(1) I have lost my key.
  私は鍵をなくしてしまった。(完了・結果)
(2) I have known him for ten years.
  私は彼を10年間知っている。(継続)
(3) Have you ever been to Hawaii?
  あなたは今までにハワイに行ったことがりますか。(経験)

現在完了形のを用いた文ですから(1)の「完了・結果」は特に異論がないでしょう。
また(3)の「経験」もすでにそのような「経験」をするのを「完了」していると考えると
とくに「完了形」という名称と矛盾がないかもしれません。

では、「完了形」なのに意味が「継続」というのはどういうことでしょうか?
そこで(2)の英文を以下のように考えてみましょう!

(4) I met him ten years ago for the first time. We are good friends now.
  私は10年前に彼に初めて会いました。私たちは今はよい友達です。
(2)の英文は(4)をぎゅっと凝縮した感じでとらえてもらうとよいでしょう。
つまり「『彼と知り合いになる』ということが10年前に完了して、今も続いている」
というのが現在完了形の継続の用法です。やっぱりなにかしら「完了している」わけです

つまり現在完了形を使って表されたことは・・・
「過去のある時点で(=現時点までに)完了した動作や状態が今も続いている」という点で
同じと言えるわけです。

(1) 過去のある時点:鍵をなくした 現在:まだ鍵は見つかっていない
(2) 過去のある時点:彼と出会った 現在:知り合い
(3) 過去のある時点:ハワイに行った 現在:ハワイに行った経験がある

という感じです。
さてここまでは前置きです。
で、タイトルの「現在完了形と使えない語句」の話です。
先ほども述べたように現在完了形は「過去のある時点で完了したことが今も続いている」
時に使う時制(=動詞の形)です。
結局「で、今はどうなの?」という感じで「現在の状態」に焦点を当てているので、
過去の一時点を示す語句とは相いれないのです。

× I have known him ten years ago.
 私は10年前に彼を知っています。

○ I have known him for ten years.
 私は彼を10年間知っています。(=私が彼と知り合って10年になります)

× When have you finished your homework?
 いつ宿題を終わらせたの? ←日本語だと違和感ないですね、(笑)

○ When did you finish your homework?
 いつ宿題を終わらせたの?
Have you finished your homework?
 宿題を終わらせたの?

ちなみに以下のような語句は過去から現在までを覆う時間を表すのでよく現在完了形と共に使われます。

for ten years 10年間
since 1999  1999年から(今まで)
already   (現時点で)すでに
yet     (現時点で)まだ
just     ちょうど今

いかがでしょうか?
「なんとなくわかったかも!」という人は現在完了形を使った文をいろいろと読んで、
「これは現在完了形だよね!」と納得できるか確認してみて下さい。

では、今回はここまでです。