「どのくらいのあいだ続いているか」という期間の長さを言うときは for を使います(for five years「5年間」、for a week「1週間」、for two hours「2時間」)。
for + 期間の長さ
I have lived here for five years.
She has worked there for six months.
We have known each other for a long time.
やってみよう: She has worked at the clinic ___ six months. (for / since / from) 答え: for — six months は期間の長さ(どのくらいか)を表すので、for を使って for six months とします。「Since」は起点を表すとき(since January)に使い、「from」はここでの現在完了形には使いません。
since + 始まった時点
「いつ始まったか」という過去の起点(特定の時点)を言うときは since を使います(since Monday「月曜日から」、since 2019「2019年から」、since I was a child「子どもの頃から」)。
I have lived here since 2019.
She has worked there since January.
We have known each other since school.
やってみよう: Hiroshi has lived in Haffenville ___ 2019. (since / for / from) 答え: since — 2019 は始まった時点を表すので、since を使って since 2019 とします。「For」は期間の長さ(for five years)に使います。「from」を使うなら後ろに to などが必要です。
今も続いていること:have / has done
for や since を使って、過去に始まって今も続いていることを言うときは、現在形や過去形ではなく have / has + 過去分詞を使います。
I have studied English for two years. (I still study it.)
We have stayed at this hotel since Friday.
Camila has lived here since she was young.
Not "I live here for three years." — say "I have lived here for three years.". 過去に始まって今も続いているので、現在形の live ではなく have lived を使います。
やってみよう: We ___ each other since school. (have known / know / knew) 答え: have known — 学生時代に知り合って今も友人関係が続いているので、have known を使います。「Know」は現在の状態だけを表し、「knew」だと過去のことで今はもう知らないように聞こえてしまいます。
否定文と How long? の疑問文
否定文にするには have/has に n't をつけて、haven't(have not)/ hasn't(has not)+ 過去分詞とします。期間の長さをたずねるときは、How long have / has …? で始めます。
I haven't seen Camila since Monday.
He hasn't lived here for long.
We haven't lived here since we were children — only since last year.
How long have you lived in Haffenville?
How long has she worked at the clinic?
Not "How long you have lived here?" — say "How long have you lived here?". 疑問文では have が you の前にきます(How long have you lived…?)。
やってみよう: ___ have you lived in Haffenville? (How long / How much / How many) 答え: How long — 始まってから今までの期間の長さをたずねるときは、How long have / has …? を使います。「How much」は量、「How many」は数をたずねる表現です。
やってみよう: I ___ seen Camila since Monday. (haven't / don't / didn't) 答え: haven't — have + seen の否定形は haven't / hasn't を使って I haven't seen とします。「Don't」や「didn't」は通常の現在形や過去形で使い、have/has + 過去分詞の形には使いません。
for か since か?(見分け方)
「期間の長さ」か「始まった時点」かを考えましょう。期間の長さ(どのくらい)なら for、始まった時点なら since です。前に the last...(この〜年間など)と言い換えられる場合は、たいてい for になります。
for two weeks, for an hour, for ages → a length → for
since Tuesday, since 9 o'clock, since we met → a starting point → since
I've been busy for three days. / I've been busy since Monday.
Not "I have known her for last year." — say "I have known her since last year.". last year は始まった時点(起点)なので、for ではなく since を使います。
やってみよう: Lars has played the guitar ___ ten years, and in a band ___ last summer. (for … since / since … for / for … for) 答え: for … since — Ten years は期間の長さなので for を使い、last summer は始まった時点なので since を使います。期間には for、起点には since です。