shouldには「〜したほうがいい」という意味があります。
学校だと「〜すべき」という意味で覚えますが、実際はそこまで強くありません。
相手にそこまで期待しておらず、「〜しておいたほうがいいよ」ぐらいの弱い意味です。
例えば、以下のような使い方をします。
You should study English harder.
(英語をもっと勉強したほうがいいよ。)
He should know more about his company.
(彼は勤め先についてもっと知ったほうがい。)
ただ、実はshouldでは過去を表すことができません。
もう少し正確に言うと、should単体では過去形を表せません。
ではどうすればいいかというと、should+have+過去分詞という形をとります。
これによって、「〜すべきだった(だけどしなかった)」という意味になります。
過去分詞とは動詞の3段活用の最後にくるものです。
例えば、takeでいうと、take-took-takenの中のtakenに当たるものが過去分詞になります。
どういう場面で使うかというと、「〜すべきだったなあ」という後悔を表したい場合です。
以下をご覧ください。
I should have bought an umbrella this morning.
(今朝、傘を買うべきだった。)
この状況としては昼になって突然雨が降り出したため、「傘を買っておけばよかった」という気持ちを表したい場合などに使われます。
I should have slept longer yesterday.
(昨日はもっと長く寝るべきだった。)
こちらの状況としては、寝不足で色々なミスを繰り返してしまったため、「もっとしっかり寝ておくべきだった」という後悔を表したい場合などです。
いかがでしょうか?
これは必須表現なので、必ず覚えるようにしましょう。