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 GraphQL開発を支える 自作CodeGenerator
Search
fujitani sora
December 18, 2024
65
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
NestJS GraphQL開発を支える 自作CodeGenerator
fujitani sora
December 18, 2024
More Decks by fujitani sora
See All by fujitani sora
TypeScript * xx 一年目の振り返り
fujitanisroa0414
0
240
Terminal IDE の世界
fujitanisroa0414
1
310
RubyでNeoVim Pluginを作る技術
fujitanisroa0414
0
120
toridori DevRel 立ち上げ約半年の成果と今年の目標
fujitanisroa0414
0
330
なぜtoridori開発部はDevRelに取り組むのか
fujitanisroa0414
1
130
AWS SDK for PHPによる AmazonECS構成管理
fujitanisroa0414
2
540
ARR成長の為に開発者個人で出来る事
fujitanisroa0414
0
280
育成ゲームとしてのvim(桃太郎)
fujitanisroa0414
0
79
書籍紹介 「採算に乗る事業」の仕組みづくり
fujitanisroa0414
0
100
Featured
See All Featured
Designing for humans not robots
tammielis
254
26k
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
inesmontani
PRO
0
620
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
350
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
200
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
480
Balancing Empowerment & Direction
lara
6
1.2k
Imperfection Machines: The Place of Print at Facebook
scottboms
270
14k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
1
230
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
380
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
10k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.3k
Transcript
NestJS GraphQL開発を支える 自作CodeGenerator mita.ts 5分LT fujitani sora
名前 ・藤谷 想楽(ふじたに そら) ・@_fs0414 ・2001(23) 所属 ・株式会社トリドリ ・開発統括部 ・エンジニア,
DevRel 自己紹介 TsKaigi2025の運営メンバーやったりもしてます。 イベントページ公開されてます! https://2025.tskaigi.org/
2022 12月19日 東証グロース市場 に 上場 2016 2017 2019 10月 インフルエンサー広告
プラットフォームシステム アップロント を展開 株式会社 アップロント 設立 2020 8月 インフルエンサー マネジメント事務所 OTOZURE 設立 株式会社 コラボテクノ ロジー に社名変更 インフルエンサー広告 プラットフォームシステム コラボマーケ ティング & コラボベース をリリース 渋谷 オフィス に移転 株式会社 トリドリ に社名変更 各サービス toridori シリーズ へ名称変更 2021 7月 株式会社 GIVIN と事業統合 インフルエンサーブランド 立ち上げ支援 toridori made 始動 10月 10月 9月 6月 沿革 2023 12月 株式会社 OverFlow と事業統合
6つの事業を通して インフルエンサーマーケティング を展開しています ※グループ会社
@toridori_tech(X) @toridori tech blog(Zenn) 会社のNote(Note)
shibuya.tsやります 2/5 WeWork 渋谷スクランブルスクエア 41F 登壇枠は一旦埋まりましたが増枠予定なのでwatchしておいてもらえますと! https://arc.net/l/quote/pzpnyxis
toridoriのNestJS GraphQL • Dmian単位でFeatureModuleに分割し、必要なファイルを配置している • Resolver • Model • Service
• Entity • QueryService • Repository • DTO • TxService(Transaction管理用Class) • etc… FeatureModule 特定のドメインに関連する Contoller, Service, Repositoryなどをまとめた Module。
新しいFeatureModuleを作成したい • Resolver 1. ファイルを作成していつものコードを記述 2. index.tsでexport • Module 1.
ファイルを作成してinports, providers, exportsを記述 2. graphql.module.tsにFeatureModuleを登録 • 手で毎回作成しているとミスも起きる • デフォルトのNest CLIだけだと、プロジェクト独自のClass生成に対応できない • 新しいFeatureModuleを作成する時は、大体ServiceとかRepositoryとかも一度に必要。 ◦ [ExceptionHandler] Nest can't resolve dependencies 🥺 ◦ 個別に作って依存解決を気にするのはめんどくさい
これらの課題を解決する為に、 nest-commander, ts-morph, enquirerを活用した自作CodeGeneratorを運用している
package.jsonのscriptsに登録して簡単に実行できる コードはcliディレクトリに配置
code-genコマンド step1 • 生成したいComponentを選択する • 複数選択可能 • ロジック内のの抽象化されたコードは載せていません。そのうちZennに書きたい
code-genコマンド step2 • ファイル名を入力する ◦ ファイル名 + Compoment名になる • resolver,
modelなど他のCompomentでも 同様の依存解決を行なっている
code-genコマンド step3 • 作成するドメイン = NestJs FeatureModuleを指定 • 指定したリソースが自動で生成されている。うれしい
code-genコマンド 生成したコード • 頻出のボイラープレートコードを自動で生成してくれる ◦ GraphQLのNodeInterface ◦ 認証に使うGuardの実装 ◦ ModuleでのDI解決
◦ etc… • 便利