🐈

Rails エンジニアが NestJS に入門する:プロジェクト作成編

2022/07/12に公開

環境

どうせなら最新にしようと node も今日時点での最新を入れましたよー!

$ node -v
v18.5.0

さらに、ちょうど先日 NestJS の最新バージョン v9 がリリースされたので、初心者なのにいきなり最新版で試していくことになりました。やっていき!

nest new

何はともあれ https://docs.nestjs.com/first-steps を読みながら、プロジェクトを作ってみます。

$ npm i -g @nestjs/cli
$ nest new hello-nestjs
⚡  We will scaffold your app in a few seconds..

CREATE hello-nestjs/.eslintrc.js (665 bytes)
CREATE hello-nestjs/.prettierrc (51 bytes)
CREATE hello-nestjs/README.md (3340 bytes)
CREATE hello-nestjs/nest-cli.json (118 bytes)
CREATE hello-nestjs/package.json (1997 bytes)
CREATE hello-nestjs/tsconfig.build.json (97 bytes)
CREATE hello-nestjs/tsconfig.json (546 bytes)
CREATE hello-nestjs/src/app.controller.spec.ts (617 bytes)
CREATE hello-nestjs/src/app.controller.ts (274 bytes)
CREATE hello-nestjs/src/app.module.ts (249 bytes)
CREATE hello-nestjs/src/app.service.ts (142 bytes)
CREATE hello-nestjs/src/main.ts (208 bytes)
CREATE hello-nestjs/test/app.e2e-spec.ts (630 bytes)
CREATE hello-nestjs/test/jest-e2e.json (183 bytes)

? Which package manager would you ❤️  to use?
  npmyarn
  pnpm

最近耳にする pnpm も気になっているけど、慣れている yarn で。

? Which package manager would you ❤️  to use? yarn
✔ Installation in progress... ☕

🚀  Successfully created project hello-nestjs
👉  Get started with the following commands:

$ cd hello-nestjs
$ yarn run start


                          Thanks for installing Nest 🙏
                 Please consider donating to our open collective
                        to help us maintain this package.


               🍷  Donate: https://opencollective.com/nest

言われるがまま進めます。

$ cd hello-nestjs
$ yarn run start
yarn run v1.22.19
$ nest start
[Nest] 59693  - 2022/07/12 11:24:57     LOG [NestFactory] Starting Nest application...
[Nest] 59693  - 2022/07/12 11:24:57     LOG [InstanceLoader] AppModule dependencies initialized +17ms
[Nest] 59693  - 2022/07/12 11:24:57     LOG [RoutesResolver] AppController {/}: +3ms
[Nest] 59693  - 2022/07/12 11:24:57     LOG [RouterExplorer] Mapped {/, GET} route +1ms
[Nest] 59693  - 2022/07/12 11:24:57     LOG [NestApplication] Nest application successfully started +0ms

ドキュメントの方を見ると 3000 で listen しているっぽいのでブラウザから http://localhost:3000/ にアクセス。

Hello World! できました〜。生成されたソースコードはこんな感じですね。

各ファイルの説明は本家のチュートリアルを読むとして、デフォルトでテストコードも作られてるのが良いですね〜(Railsもそうですが)。

ちなみに、yarn run start ではファイルの変更を watch しないので開発中は

$ yarn run start:dev

を使うことになりそうです。

おわり

公式ドキュメントの First steps はここで終わり。NestJS の Rails ガイド のようなものは無いのかなーと探したのですが、公式で有料の学習コースがあるようです。

https://courses.nestjs.com/

$89.99 なので購入してこれをやっていくでも良いのですが、そこでやった内容をブログに書くのはまずそうなのでそれはなしとして・・・ここはやはり表題のとおり Rails エンジニアが NestJS に入門するために、Rails ガイドの順番で独自にやっていきたいと思います。学習する順序としても Rails ガイドの順序は個人的にしっくりきているので。

ということで、次はモデルを作っていきたいと思います。それでは!

予告編

それでは!と、終わろうと思ったのですが気になってドキュメントをあれこれ読んでいると、どうやら nest generate には、modelentity も無く、シュッとモデルを作る機能はなさそう。

公式ドキュメントのDatabase を読むと、TypeORM と Sequelize と Mongo は強めにサポートしているけど、他にも好きに選んでね。となっており、いきなり重たい決断を迫られそうです。

ORMなー、どーれーにしようかなー(いきなり初心者に選ばせるのは難易度高すぎじゃねーーー)

株式会社モニクル

Discussion