Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
NestJS GraphQL開発を支える 自作CodeGenerator
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
fujitani sora
December 18, 2024
71
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
250
Terminal IDE の世界
fujitanisroa0414
1
310
RubyでNeoVim Pluginを作る技術
fujitanisroa0414
0
130
toridori DevRel 立ち上げ約半年の成果と今年の目標
fujitanisroa0414
0
340
なぜtoridori開発部はDevRelに取り組むのか
fujitanisroa0414
1
140
AWS SDK for PHPによる AmazonECS構成管理
fujitanisroa0414
2
550
ARR成長の為に開発者個人で出来る事
fujitanisroa0414
0
280
育成ゲームとしてのvim(桃太郎)
fujitanisroa0414
0
80
書籍紹介 「採算に乗る事業」の仕組みづくり
fujitanisroa0414
0
100
Featured
See All Featured
Believing is Seeing
oripsolob
1
210
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.9k
First, design no harm
axbom
PRO
2
1.3k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
jQuery: Nuts, Bolts and Bling
dougneiner
66
8.6k
State of Search Keynote: SEO is Dead Long Live SEO
ryanjones
0
260
HTML-Aware ERB: The Path to Reactive Rendering @ RubyCon 2026, Rimini, Italy
marcoroth
4
610
Paper Plane
katiecoart
PRO
2
53k
Testing 201, or: Great Expectations
jmmastey
46
8.3k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.6k
Practical Orchestrator
shlominoach
191
12k
Are puppies a ranking factor?
jonoalderson
2
3.9k
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… • 便利