should/must/may have done — 過去への推量と後悔
助動詞 + have + 過去分詞 の形は「過去の出来事に対する現在の話し手の推量・評価・後悔」を表します。高校で最重要パターンの一つです。
基本ルール
助動詞 + have + 過去分詞 の使い分け:
① must have + 過去分詞: 「〜したに違いない」(過去への確信)「He must have been very tired.(彼はとても疲れていたに違いない)」
② may/might have + 過去分詞: 「〜したかもしれない」(過去への控えめな推量)「She may have missed the train.」
③ cannot have + 過去分詞: 「〜したはずがない」(過去への強い否定の推量)「He cannot have said such a thing.(彼がそんなことを言うはずがない)」
④ should have + 過去分詞: 「〜すべきだったのに (実際はしなかった)」(過去への後悔・非難)「You should have told me.(言ってくれればよかったのに)」
⑤ shouldn't have + 過去分詞: 「〜すべきでなかったのに」「I shouldn't have eaten so much.」
⑥ need not have + 過去分詞: 「〜する必要はなかったのに (実際はした)」「You need not have come so early.」
⑦ could have + 過去分詞: 「〜できたのに (実際はしなかった)」または「〜したかもしれない」「I could have helped you.(手伝えたのに)」
⑧ would have + 過去分詞: 仮定法過去完了「If 〜, I would have done」(講座8で詳しく)
She must have forgotten the appointment.(彼女は約束を忘れたに違いない)
He may have left already.(彼はすでに出発したかもしれない)
You should have studied harder for the exam.(試験のためにもっと勉強すべきだった)
She cannot have done such a terrible thing.(彼女がそんなひどいことをしたはずがない)
I could have called you, but I forgot.(電話できたのに、忘れてしまった)
注意点
① 推量の確信度の強弱:
- must have done (90%): したに違いない
- may have done (50%): したかもしれない
- might have done (30%): したかもしれない (より控えめ)
- cannot have done (90% 否定): したはずがない
- could have done: できたのに / したかもしれない (二義的)
② should have vs ought to have:両者ほぼ同じ「すべきだった」の後悔。ought to have done もよく出題される。
③ need not have done vs didn't need to do の違い:
- need not have done: 必要なかったのに実際はした「I need not have brought my umbrella. (傘を持ってきたが必要なかった)」
- didn't need to do: 必要なかったのでしなかった「I didn't need to bring my umbrella. (傘を持ってくる必要がなかったので持ってこなかった)」
これは大学入試で頻出の引っかけ。
④ would have done の二義性:仮定法 (if 〜) と単純な過去への推量がある。「He would have been a great writer if he had lived longer.(仮定)」「Who's that? — That would have been Tom.(推量、堅い)」。
- must have done: したに違いない (確信)
- may/might have done: したかもしれない (推量)
- cannot have done: したはずがない (否定の確信)
- should have done: すべきだった (後悔・非難)
- need not have done (した) vs didn't need to do (しなかった)
練習
- 「彼女は道に迷ったに違いない」を must have を使って英訳しなさい。
- 「もっと早く家を出るべきだった」を should have を使って英訳しなさい。
- 2文の違いを日本語で説明しなさい:(a) I need not have hurried. (b) I didn't need to hurry.