NestJSのデコレーターとは?@Controllerや@Injectableの意味と使い方を初心者向け
投稿日: 2025年07月29日
今回はデコレーターについてです。@Controller()
や @Injectable()
など、コードの上に @
がついた記号を見かけたことがある方も多いのではないでしょうか?
そんなデコレーターですが、デコレーターとは何か、どこでどう使うのか、なぜ必要なのかの部分を見ていきましょう!
デコレーター(Decorator)とは、クラスやメソッドなどに“追加の意味や機能”を与えるための記法です。
TypeScriptの機能のひとつで、NestJSではあらゆる場所で使われています。
記号は @
で始まります。
NestJSでは、**「このクラスは何のためのものか」「この関数はどのリクエストで使われるか」**を明確にする必要があります。
デコレーターを使うことで:
NestJSの内部で自動的に処理を登録・設定できる
開発者が構造をパッと見て理解しやすくなる(宣言的プログラミング)
js
function sayHello() {
return 'Hello!';
}
ただの関数です。リクエストもルートも関係ありません。
ts
@Controller()
export class AppController {
@Get()
sayHello() {
return 'Hello!';
}
}
ここでは:
@Controller()
→ このクラスがHTTPルーティングの担当だと宣言
@Get()
→ この関数が GET / に対応するエンドポイント だと宣言
NestJSがこの情報をもとに、ルーティングを自動的に設定します。
僕の感覚的でいうと、TypeScriptのような堅牢なイメージです!
ここの処理がどこの役割をしているのかを、デコレーターで宣言することで可読性のあるコードが書けるイメージです。