仮定法

仮定法とは、その名の通り、仮定を表す、表現です。
英語では、仮定法は、「counterfactual」と呼ばれるとおり、事実とは違うことを表現するときに使われます。
「counter(反対の)」+「factual(事実の)」=「事実とは反対の」という意味になります。

● If you had to become a cockroach or a toilet brush, which would you choose?
  もし、ゴキブリかトイレのブラシに、ならなくてはいけないとしたら、どちらを選びますか?

この文は、人間が、ゴキブリやトイレのブラシになることはありえないので、「仮定」の話になります。
このように、現在の仮定の話では、「If S 過去形 〜、S 助動詞の過去形 〜.」の形になります。

● If I hadn't met you, I couldn't have been this happy.
  君に出会えていなかったら、俺は幸せにはなれなかっただろう。

この文は、仮定法過去になります。
「過去にこうだったら、こうであっただろう」という意味になります。
二人はもう出会っているので、過去に出会っていなかったらという、過去の仮定になります。
このように、過去の仮定の話では、「If S 過去完了形 〜、S 助動詞の過去形 現在完了形 〜.」の形になります。

● If it hadn't been for music, I would be dead by now.
  もし音楽がなかったら、俺は死んでるだろうな。

この文では、過去の仮定の結果、今こうなってるだろうな、という意味になります。
その時は、「If S 過去完了形 〜、S 助動詞の過去形 〜.」の形になります。
「If it hadn't been for〜」は、熟語として覚えてしまってもいい表現で、「もし過去に〜がなかったら」という意味になります。
「If it weren't been for〜」なら、「もし今〜がなかったら」という意味になります。

ちなみに、条件法、つまり普通の「if」を使った文との違いは、「実現度の違い」にあります。

● If I become rich, I will buy my parents a house.
  金持ちになったら、両親に家を買ってやるつもりだ。

● If I became invisible, I would pull a lot of pranks.
  もし透明人間になったら、いっぱいイタズラをしてやる。

上の文は、現実的にありえるので、普通の条件法になっています。
一方、下の文は、現実的にありえないので、仮定法になっています。

また、次のような文もあります。

● If it should rain tomorrow, I would watch DVDs at home.
  もし万が一明日雨が降ったら、私は家でDVDでも観るよ。

この「should」は「shall」の過去形で、「If S should 〜」で、「万が一、Sが〜だったら」というような意味になります。

● When I saw him for the first time I felt as if I had been struck by lightning.
  彼を初めて見た時、アタシは、まるで、雷に打たれたような感じがした。

この文では、「as if」節だけが、仮定法で、後は、普通の文です。