Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
NestJS Meetup #3 NestJS導入してみた
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Kouki
July 25, 2022
Programming
0
730
NestJS Meetup #3 NestJS導入してみた
NestJS Meetup #3 の際に発表した登壇資料になります。
アーカイブはこちら
https://www.youtube.com/watch?v=tdg7IBb-oOQ
Kouki
July 25, 2022
Tweet
Share
Other Decks in Programming
See All in Programming
Data-Centric Kaggle
isax1015
2
780
フロントエンド開発の勘所 -複数事業を経験して見えた判断軸の違い-
heimusu
7
2.8k
15年続くIoTサービスのSREエンジニアが挑む分散トレーシング導入
melonps
2
230
CSC307 Lecture 05
javiergs
PRO
0
500
360° Signals in Angular: Signal Forms with SignalStore & Resources @ngLondon 01/2026
manfredsteyer
PRO
0
140
IFSによる形状設計/デモシーンの魅力 @ 慶應大学SFC
gam0022
1
310
AI時代の認知負荷との向き合い方
optfit
0
170
React Native × React Router v7 API通信の共通化で考えるべきこと
suguruooki
0
100
開発者から情シスまで - 多様なユーザー層に届けるAPI提供戦略 / Postman API Night Okinawa 2026 Winter
tasshi
0
210
AIで開発はどれくらい加速したのか?AIエージェントによるコード生成を、現場の評価と研究開発の評価の両面からdeep diveしてみる
daisuketakeda
1
2.5k
AI Agent の開発と運用を支える Durable Execution #AgentsInProd
izumin5210
7
2.3k
なるべく楽してバックエンドに型をつけたい!(楽とは言ってない)
hibiki_cube
0
140
Featured
See All Featured
The #1 spot is gone: here's how to win anyway
tamaranovitovic
2
950
Joys of Absence: A Defence of Solitary Play
codingconduct
1
290
Leadership Guide Workshop - DevTernity 2021
reverentgeek
1
200
Balancing Empowerment & Direction
lara
5
900
The Cult of Friendly URLs
andyhume
79
6.8k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
Context Engineering - Making Every Token Count
addyosmani
9
670
Are puppies a ranking factor?
jonoalderson
1
2.7k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
61k
So, you think you're a good person
axbom
PRO
2
1.9k
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
60
42k
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
62
50k
Transcript
NestJS導入してみた PHPが主体の会社になぜ導入したのか? 2022.07.22 koki.okawa
@o_kouchanne 大川 航貴 Koki Okawa Webエンジニア6年目 バックエンドを中心に 幅広くやってます。
アジェンダ • なぜNestJSを導入したの? • NestJSを採用した決め手 • NestJSがハマると思うところ
なぜNestJSを導入したの?
最初はNestJSというより Node.jsがマストだった
Node.jsがマストの技術要件だった 今回のプロジェクトでは双方向通信をするためにWebSocketが必要だったの で、Node.jsを使わなきゃいけないという条件があった APIはPHPでWebSocketだけは別途でNode.jsサーバーを立てて内部で通 信をするみたいな時間がなかった...
エンジニアがフルスタック PCアプリ → Electron フロントエンド → React フロントエンドはJSがもう確定している状態で、開発するエンジニアはフロント エンド・バックエンドどちらもフルスタックに対応する必要があった。 その際の言語の切り替えが開発体験を著しく下げてしまうのを防ぎたかった。
ではなぜNestJSになったの?
最初はExpressでやろうとおもった 私自身はExpressでAPIを作った経験があったのでExpressでやろうと思っ た。 しかし、Expressはフレームワークの性質上シンプルなのでWebフレームワー クのベストプラクティスをある程度知っていないとプロジェクトが崩壊してしまう と感じていた。 しかも、アサインされたメンバーはPHP x Laravelしかやったことないメンバー なので自分も手を動かしながらそこまでのハンドリングがちゃんとできるのだろ
うか?...
シンプルなフレームワークで失敗した過去あり PythonのFlaskというフレームワークを使った際にカオスな状態を作って失敗 した経験がある シンプルなフレームワークは気軽に実装できる反面ある程度の規模になると ルールを作り込めないと崩壊することを学んでいた
Expressをカスタマイズ ORM → TypeORM を導入 Controller → routing-controllers を導入 TS化
→ webpack で開発環境構築して デザインパターン → ディレクトリ構成を考えて... おやっ? これ全て揃ってるやつすでにあるじゃん...
そう! NestJSがあるじゃないか!
NestJSを採用した決め手
公式ドキュメントが充実している 英語が読めればOK APIを作る際に必要なことはだいたい 乗っている
スポンサーが充実している ある程度長期的に使って行けそうな 安心感があった。 Node.jsのWEBフレームワークとして 発展していきそうなイメージを持てた
TypeScriptがデフォルト 昔と違って NotFound @type/hogehoge って言われることがなくなったので 現代でTypeScriptを導入しない選択肢はない TypeScriptはwebpackで頑張る時代を生きてきた身にとっては、あの管理 がなくなるのは最高に開発体験が良かった
Expressがベースである Expressがベースなので、Expressのことが分かっていれば大体のことは理 解できた Express用のライブラリとのハイブリットな構成も実現可能 NestJSが用意していない機能等が必要になった場合は、Expressの Middlewareの作り方を知っていればなんとかなる
DIの仕組みが素敵 自前で依存関係の注入は結構しんどいところがあります 多分、シングルトンオブジェクトの作り方とか知らなかったらそもそもそこまでた どり着かない説がある NestJSはそのあたりを気にせずに実装できるのがすごくよいですよね 使い勝手としてはJava/Spring Bootに近いのもポイントが高い
Nest CLI がある LaravelをやっていたメンバーにやってもらうにはCLIで色々できるという点は 余計なことを考えなくて済むのでとても良かった。 初期構築がとても楽、他のプロダクトでも導入するってなった際に環境差分を 生みにくい webpackの自作はマジでしんどい
NestJSがハマると思うところ
中規模以上のサービス APIエンドポイントが複数あるような簡易的サービスじゃない場合は導入を検 討したほうが良いです。 ORMが必要になってくるようなプロダクトは、Expressを使うと自前でハンドリ ングするのが大変になるのでNestJSを使うと幸せになれる気がする。 逆にマイクロサービスとして展開するくらいであれば、オーバースペックかなと いう感じもある
フロント 兼 バックエンド なチーム 弊社のように、フロントエンドとバックエンドで明確に分業がされていなくてどち らも対応しなきゃいけないようないわゆるフルスタックなチームには言語感のノ イズがなくなって最高 エンジニアの採用もTypeScript(JS)に一本化できるし
後々GraphQLを検討している人 GraphQLを導入したいけど、社内のリソースや技術スタックを考えたときにま ずはREST APIから導入したい NestJSはそもそもフレームワークでREST APIもGraphQLもどちらも対応して いるので、そのために新しく環境を新設する必要がないです。 適切なServiceを作っておいて、追々GraphQLに移行していくという進め方も 十分可能だと思います。
BFFサーバーとしての利用 マイクロ サービス マイクロ サービス マイクロ サービス フロント エンド そのまま、全てをNestJS内に完結
しても十分利用できますがクライア ントサイドとの中継役のBFFとして のポテンシャルは高いと感じまし た。
NestJS 最高!