How long have you ...? / Since when have you...?
現在完了の継続用法は皆さん勉強されたと思います。
1. I have lived in Tokyo since I was a kid.
2. I have been living in Tokyo since I was a kid.
細かく言えばニュアンスの違いはあるんでしょうが、特に気にする必要なくほぼ同じ意味で使っていいでしょう。
"子供のころから東京に住んでいます。" という意味ですよね。
継続の意味合いが明確になるので私は2を使いますが、今回は現在完了進行形はちょっと置いときます。
どのくらい(の期間)東京に住んでいるかを聞く疑問文は
How long have you lived in Tokyo?
が一番自然でしょう。学校英語でも恐らくこの場合の疑問詞は "How long" であると教えると思います。実際それで問題ないんですが、元の文で期間を表す副詞句(節)は "for ... " ではなく "since ..." です。
Since when have you lived in Tokyo?
これどうですか?学校英語ではあまり教えないかもしれませんが、これも全く問題ありません。文法的にも、意味的にも。ただし、少し聞こえ方が違うんだろうと思います。おそらく "Since when" の方が強調的なんですね。
というのも、"for ... "は "for 10 years" とか "for few weeks" とか大体の期間を表現しているように聞こえます。一方で "since" は「いつ以来」というある意味明確な「過去の一点(起点)」を意味するんですね。(もちろん "for just 10 years" と "since when I was a kid" では後者の方が曖昧に聞こえるので一概には言えません。当然文脈によります。)
疑問文にした時に ”Since when” を使うと「正確にいつからか知りたい」というニュアンスとなり、それゆえに強調的な、場合によっては驚きを含んだ表現に聞こえます。
例えば、10年来の友人の趣味がピアノで、しかもかなり上手だとたった今知ったとします。
Really? Since when have you played the piano?
マジで?(一体)いつからピアノなんて弾いてんだよ?
こんな感じでしょうか。( "how long ...?" でも全然いいんですよ。念のため)
さて、ここまでは "how long" と "since when" についてお話ししましたが、
Since when have you smoked?
Since when do you smoke?
この違いは何?
長くなったので次回に続きます。