Slide 1

Slide 1 text

NestJS をかじってみた MIERUNE BBQ #01 2023/05/31 tacck / 木原卓也 1

Slide 2

Slide 2 text

2 木原 卓也 Kihara,Takuya / @tacck 生活協同組合コープさっぽろ デジタル推進本部システム部 Amplify Japan User Group 運営メンバー AWS Community Builder Q2 2021, 2022, 2023 / Category: Front-end Web and Mobile 好きなフィギュアスケートの技 スプレッド・イーグル ゆるWeb勉強会@札幌 主催

Slide 3

Slide 3 text

今日お話しすること • NestJS をかじってみた話 • 詳しいことは話せません 3

Slide 4

Slide 4 text

NestJSとは • サーバサイド(Backend)向けのフルスタックフレームワーク • TypeScriptベースで開発 • ランタイムはNode.js https://nestjs.com/ 4

Slide 5

Slide 5 text

ざっくりどういうことができるか • 他の言語のフルスタックフレームワークと似た感じ • DI (Dependency Injection) のサポート • ORM のサポート • CLI による Scaffolding (ベースとなるコード生成) • その他は勉強中です… 5

Slide 6

Slide 6 text

デモ • アプリ作成 • URLパス追加 • ORM (Sequelize) を利用 6

Slide 7

Slide 7 text

アプリ作成 $ nest new sample-project (...) 🚀 Successfully created project sample-project 👉 Get started with the following commands: $ cd sample-project $ npm run start Thanks for installing Nest 🙏 Please consider donating to our open collective to help us maintain this package. 🍷 Donate: https://opencollective.com/nest 7

Slide 8

Slide 8 text

URLパス追加 src/app.controller.ts @Get('/hi') getHi(): string { return this.appService.getHi(); } 8 src/app.service.ts getHi(): string { return 'Hi There!'; }

Slide 9

Slide 9 text

ORM (SEQUELIZE) を利用 src/app.module.ts imports: [ SequelizeModule.forRoot({ database: 'sample', dialect: 'sqlite', storage: 'database/database.sqlite3', models: [User], }), UsersModule, ], 9 src/users/entities/user.entity.ts import { Column, Model, Table } from 'sequelize- typescript'; @Table export class User extends Model { @Column firstName: string; @Column lastName: string; @Column({ defaultValue: true }) isActive: boolean; } $ nest g res users ? What transport layer do you use? REST API ? Would you like to generate CRUD entry points? Yes

Slide 10

Slide 10 text

ORM (SEQUELIZE) を利用 src/users/users.service.ts constructor( @InjectModel(User) private userModel: typeof User, ) {} 10 src/users/users.service.ts create(createUserDto: User) { return this.userModel.create({ lastName: createUserDto.lastName, firstName: createUserDto.firstName, isActive: createUserDto.isActive, }); } findAll() { return this.userModel.findAll(); } src/users/users.module.ts imports: [SequelizeModule.forFeature([User])], ],

Slide 11

Slide 11 text

まとめ • NestJS を使って、 TypeScript (Node.js) でも 快適なフルスタックフレームワークライフを過ごせそう! • もう少し使い込んでみます。 11

Slide 12

Slide 12 text

宣伝 12 JJUG CCC 2023 Spring 2023/06/04 FaaS における Java 起動時間の比較 (AWS / Azure / GCP) 16:40-17:00 オンライン配信あり 私の発表するトラックは リアルタイム配信ありません。 https://eventregist.com/e/luIcqEmpqPI2

Slide 13

Slide 13 text

END 13