並び順

ブックマーク数

期間指定

  • から
  • まで

1 - 40 件 / 74件

新着順 人気順

NestJSの検索結果1 - 40 件 / 74件

  • はじめに - NestJSの強化書 βversion

    本書の目標は、本読者がNestJSをすぐに実務で利用できる(具体的に言えばNestJSで簡単なプロダクトを開発できる)ように、最短ルートに読者を導く一冊になることです。本書は、NestJSの網羅的なドキュメントではありません。取り扱う内容は頻出する機能に絞って、「実務でNestJSを扱うなら、最低限ここだけは理解しておこう」「これさえ押さえておけば実務でも安心できる」という観点で執筆しています。 本書はNestJSを中心に取り扱いますが、実務上、必要になる知識としてJavaScriptやTypeScriptの仕様やフロントエンドフレームワークのReactやVueについても扱います。

    • GraphQL スターターパック | Prisma + NestJS + Next.JS製 個人ブログサイトをCloud Runで運用しよう

      GraphQL スターターパック | Prisma + NestJS + Next.JS製 個人ブログサイトをCloud Runで運用しよう 「GraphQLの仕様はなんとなく知っているけど、それを使ってどうアプリを作るのかいまいちイメージがわかない」 この本はそんなスキマを埋めるべく書きました。 近年ではReactをはじめフロントエンドの選択肢が豊富になっており、フロントエンドとバックエンド間のやりとりにはより汎用的かつ効率的な方法が求められます。 GraphQLはその選択肢のひとつです。本書では NestJS で GraphQLバックエンドを実装し、それをNext.jsから利用して、個人ブログサイトを構築してみます。 GraphQL開発の流れを体験し、ご自身のアプリ開発に役立ててください。 v1.10 refactor github deploy

        GraphQL スターターパック | Prisma + NestJS + Next.JS製 個人ブログサイトをCloud Runで運用しよう
      • NestJS の基礎概念の図解と要約

        はじめに 仕事で使用することになった NestJS について、公式の NestJS Fundamentals Course やドキュメントなどで勉強を進めているのですが、新しい概念が次々と現れるため消化しきれなくなってきました。そこで、まず全体の俯瞰図をしっかりと頭に入れるために、公式ドキュメントの Overview に出てくる範囲の概念を図解して整理し、また各々の役割やプロジェクト内のどこにどのように設定していくかについてまとめることにしました (逆に、大枠とは関係ない部分については大胆に省きました)。 対象読者としては、簡単な CRUD アプリケーションなどを NestJS によって作成したことがあり、基礎的な概念や構成要素について何となくは把握したものの、どうもスッキリとは理解できていない気がする、というような方を想定しています。 この記事が自分のような NestJS 入門者のお役に

          NestJS の基礎概念の図解と要約
        • NestJSをゼロから学ぶ - TypeORMの活用などをREST APIの実装から身に付けよう【Node.jsフレームワークの基本】|ハイクラス転職・求人情報サイト AMBI(アンビ)

          このようにさまざまなデコレータが用意されていますが、今回はサンプルで利用するデコレータに絞って説明します。他のデコレータについては、NestJSの公式ドキュメントなどを参照してください。 依存性注入(DI) 依存性注入(DI、Dependency Injection)とは、クラスの依存関係を解決する仕組みです。NestJSでは、依存性注入を使ってクラスの依存関係を解決します。 クラスの依存関係とは、クラスが他のクラスに依存している関係のことです。例えば、次のようなクラスAがあったとします。このクラスは他のクラスに依存していません。@Injectable()デコレータを使って、サービスを定義します。 @Injectable() class A { constructor() {} } そして、次のようなクラスBがあったとします。このクラスは、@Inject()デコレータを使って依存性を注入し

            NestJSをゼロから学ぶ - TypeORMの活用などをREST APIの実装から身に付けよう【Node.jsフレームワークの基本】|ハイクラス転職・求人情報サイト AMBI(アンビ)
          • Next.js + NestJS + GraphQLで変化に追従するフロントエンドへ 〜 ショッピングクーポンの事例紹介

            今回は、fragmentを活用するためにパターンCを採用しており、厳密には、以下のように方針を定めています。 SSR時のクエリ発行: ページコンポーネント単位 CSR時のクエリ発行: CSRが必要なコンポーネント単位 この際、取得したqueryの結果をどのようにfragmentへ変換するかというのがポイントです。 そこで、graphql-anywhereの filter メソッドを用いることで、クエリ結果をfragmentへ変換します。 以下は、簡略化されたクーポンページの実装例です。 type DetailPageProps = { // GraphQLクエリの結果 data: Query } const DetailPage: FunctionComponent<DetailPageProps> = ({ data }) => { // couponはGraphQLのCouponスキー

              Next.js + NestJS + GraphQLで変化に追従するフロントエンドへ 〜 ショッピングクーポンの事例紹介
            • メルカリ Shops での NestJS を使った GraphQL Server の実装 | メルカリエンジニアリング

              ソウゾウの Software Engineer をやっています、@mookjp です。 8/10 の記事「メルカリShopsの技術スタックと、その選定理由」では、メルカリ Shops のアーキテクチャについて、その全体像を紹介しました。 この記事では、そのうちの BFF(Backend for Frontend) レイヤとして用意した GraphQL サーバについて、NestJS を使った実装例を交えて紹介します。 GraphQL とは GraphQL サーバ周辺の構成 NestJS とは GraphQL Module NestJS で Code First なスキーマ定義をする Object types の定義 Query と Mutation の定義 GraphQL スキーマの生成 スキーマの Breaking Change (破壊的変更)を防ぐ DataLoader を使って Bat

                メルカリ Shops での NestJS を使った GraphQL Server の実装 | メルカリエンジニアリング
              • モバイルとの相性最強と言われるgRPCをFlutter x NestJSで実装し、Stream通信や認証、複数言語実装に使えるか試す

                まとめ 相性バツグンといわれる、モバイル x gRPCは思ったよりずっと簡単に実装可能 複数言語間でもProtocol Buffersの恩恵により型変換を意識することなくスムーズに開発が進められる。 メソッド、引数の型、引数の返り値の型が自動生成されるのでとても良い RESTful APIにおけるheaderを、表現力の高いMetaDataとして利用し、認証認可等にも使えそう Streamをうまく使いこなせば、ユーザー体験をめっちゃ高くできそう。チャットやゲームなどの双方向通信が比較的楽に実装できるかも どんな人向きでない記事? NestJSの詳しい実装を知りたい方 Bidirectional streaming, Client streamの詳細実装を知りたい方 モバイル向け通信技術の本格的な選択肢、gRPCを実際に試してみたい 現在、私の働いているMinediaで開発しているサービス群

                  モバイルとの相性最強と言われるgRPCをFlutter x NestJSで実装し、Stream通信や認証、複数言語実装に使えるか試す
                • NestJSでスケーラブルなBFFを構築。メルカリShopsエンジニアがGraphQL活用のリアルを語る【技術選定の裏側:GraphQL編 vol.2】 | IT/Webエンジニアの転職・求人サイトFindy – GitHubからスキル偏差値を算出

                  ハイクラスエンジニア向け転職・求人サイト。自社開発のWeb企業の求人多数!GitHub登録をすると、IT/Web企業とマッチングします。ユーザーサクセス (キャリア)面談も実施。

                    NestJSでスケーラブルなBFFを構築。メルカリShopsエンジニアがGraphQL活用のリアルを語る【技術選定の裏側:GraphQL編 vol.2】 | IT/Webエンジニアの転職・求人サイトFindy – GitHubからスキル偏差値を算出
                  • Next.js + NestJS で新サービスを作った話 | EUPHORIA DEV BLOG

                    はじめに はじめまして、ユーフォリア開発部エンジニアの山本未知彦です! このたび、ユーフォリアではJRFU(日本ラグビーフットボール協会)協力のもと、ラグビー選手の育成・強化のためのフィジカルデータベースシステムSCOTのリリースを行いました。(詳しくはこちらのプレスリリースをご覧下さい) 本記事では、SCOTのWebアプリケーション部分のアーキテクチャ紹介について、その技術選定理由と実際に開発してみて感じた良い点・気になった点をご紹介したいと思います。 SCOTのアーキテクチャ選定 まず技術選定の話をするに際して前提となるユーフォリア開発部の体制を説明します。当時、開発部にはエンジニアが2名しか在籍しておらず、SCOT開発に際しては業務委託の方々に協力いただいての開発となりました。そのため、技術選定においてはコードのレビューのしやすさと、仮にプロジェクト途中で人員の入れ替えが発生した場合

                    • NestJS + Prisma + Cloud Run + Cloud SQLを試す

                      経緯 ここ6,7年くらいはバックエンドに関してはRails + EC2/ECSあたりのAWS環境を中心に過ごしてきたが、昨今はフロントエンドでReact/Vue + TypeScriptを書く機会も増えている。なのでこの際NestJS等でバックエンドを書けるようになれば言語のコンテキストスイッチの切り替えが容易になりそうと思った(ちなみにモバイルアプリはFlutterで書くのでDartだが、ではDartでバックエンドを書くかと言われると一人でそんな勇気はないわ...となるのでひとまず置いておく) 最近はinputとoutputを型注釈によって守れたりすることの主に開発体験方面への恩恵が個人的に大きくて、Rails以外で安住の地を見つけたいとは予々思っていた。なので先に挙げたNestJSに全ベットするわけではないにしろ何かしらフレームワークは試していきたい。 AppEngineは大昔に少し触

                        NestJS + Prisma + Cloud Run + Cloud SQLを試す
                      • NestJS を使って最速リリースを目指している話 - ROBOT PAYMENT TECH-BLOG

                        こんにちは。ROBOT PAYMENTでエンジニアをやっております 牧野です。 今回は新規プロダクトの立ち上げに伴い開発言語からインフラ設計まで0→1でサービスリリースするのに必要な技術選定を行いました。 その際の選定理由や、実際に開発を進めていて得た所感などを書いてみたいと思います。 私は主にバックエンド(フロントエンド以外)を中心に技術選定を行っためそちらを中心に書かせていただきます。 チーム規模 選定技術 TypeScript NestJS GraphQL PostgreSQL AWS App Runner まとめ チーム規模 バックエンドエンジニア2人 フロントエンドエンジニア1人 PM 1人 デザイナー1人 上記を1チームとして最短距離でリリースすべくスクラム開発を行なっています。 既存の請求管理ロボ開発においては、厳密ではないですがコンテナ運用や監視ツール、CICDなど機能開発

                          NestJS を使って最速リリースを目指している話 - ROBOT PAYMENT TECH-BLOG
                        • NestJSと戦術的DDDのいいとこどりをしてバックエンドTypescriptの設計をした話

                          はじめに バックエンド開発にもTypeScriptを利用する事例、増えてますね。NestJSはTypescriptバックエンドの中でも、唯一のopinionatedなフレームワークとして採用しました(特に大規模な開発を目指している弊社では相性がいい)。しかし、実際にNestJSを使って開発を進めると「too much」と言われる前評判とは異なり、「not enough」という印象を受けました。特に、DDDの観点からすると、DTO(Data Transfer Object)やControllerなどプレゼンテーション層は整備されているものの、Service層にユースケース層、ドメイン層、インフラ層の役割を一括して詰め込んでしまい、結果として「Fat Service」になりがちです。 そこで、本記事ではNestJSの機能を活かしつつ、戦術的DDDのパターンを導入して、Service以下のコード

                            NestJSと戦術的DDDのいいとこどりをしてバックエンドTypescriptの設計をした話
                          • TypeScript + Prisma + NestJSでGraphQLサーバを作ってみる

                            はじめに 本記事では、TypeScriptとPrismaとNestJSを使ってGraphQLサーバを作ってみます。 最終的には、以下のような記事の取得と作成ができるGraphQLサーバができあがります。 Prismaとは Prismaは、以下の3つのツールで構成されたNode.jsとTypeScriptのためのORMです。 Prisma Client: 自動生成される型安全なデータベースクライアント Prisma Migrate: 宣言的なデータモデリングとカスタマイズ可能なマイグレーション Prisma Studio: データを閲覧・編集するためのモダンなGUI 開発体験が良く、先日のJSConf JPの @qsonaさんの発表 でもあったように最近では新規サービスでの採用事例が増えてきました。 NestJSとは NestJSは、素早くスケーラブルなサーバーサイドアプリケーションを構築す

                              TypeScript + Prisma + NestJSでGraphQLサーバを作ってみる
                            • マイクロサービス構成における NestJS での gRPC クライアントの運用戦略 - ドワンゴ教育サービス開発者ブログ

                              はじめに はじめまして、バックエンドセクションの yukimochi です。 現在、N予備校ではバックエンドのアプリケーションの移行計画が進んでいます。 その一環で、一部のマイクロサービス間通信についても REST API + OpenAPI の現状から gRPC へと移行することになりました。 私の参画しているプロジェクトである教材入稿ツールでは TypeScript + NestJS を採用しており、結合している他マイクロサービスとの通信でgRPCを利用する際の gRPC クライアントと、そのスキーマ定義を担う proto の運用戦略、実現方法について記します。 proto ファイルと型定義パッケージの取り回しについて考える スキーマ定義である proto をどこに保存するか スキーマ定義である proto をどこに保存しておくかは、 proto のバージョン管理の観点で重要です。今回

                                マイクロサービス構成における NestJS での gRPC クライアントの運用戦略 - ドワンゴ教育サービス開発者ブログ
                              • NestJS製GraphQLサーバの起動が遅かったので調査した話 - もうずっといなかぐらし

                                こんにちは、かたいなかです。 最近、NestJS製のGraphQLサーバでのSchemaからのTypescriptファイルの生成が遅い問題を調査する機会がありました。 今回の記事では、ツールの使い方等の自分への備忘録を兼ねて、どのように問題に取り組んだかを記事にして紹介します。 TL;DR 高速化するならまずは計測から。計測によるボトルネック特定が最優先。 フレームグラフが遅い処理を特定するのに超便利。Node.jsなら0xがフレームグラフ生成に便利。 @nestjs/graphql でGraphQLのスキーマからTypescriptのファイルを生成する処理が速くなった。 経緯 最近関わった案件では、BFFとしてNestJS製のGraphQLサーバをスキーマファーストで使用していました。GraphQLによるスキーマファーストな開発の恩恵は日々感じているものの、サーバの起動時や再コンパイルの

                                  NestJS製GraphQLサーバの起動が遅かったので調査した話 - もうずっといなかぐらし
                                • NestJS 公式ドキュメントver7日本語訳

                                  フルスタックサーバーサイドフレームワークNestのドキュメントの日本語訳です。DeepL翻訳を下敷きとして目標(~securityパート)達成したため完結です。githubにありますので、フォーク等お好きにどうぞ。 https://github.com/kisihara-c/nest-officialdoc-jp

                                    NestJS 公式ドキュメントver7日本語訳
                                  • NestJSちょびっとだけ触ってみた所感 - タオルケット体操

                                    ここ数年まともにサーバーサイドをやっていないなぁとかおもいつつなんやかんやあってNestJSを数日ほど触ったりドキュメントを読んだりしてたので初心を忘れないようにメモ。 いちおうTypeORMだけは出始めにちょっと使ってた。 理解度が高まったら気分が変わるかもしれないです。そしたらもっかい日記書きます。 てか全体的に難易度高くないこのフレームワーク?求められるリテラシー高くない? お気持ち表明 前提なんですが、僕はこのフレームワークのことをまだあまり好きになれていません。オブラートを外してのべると、すでに半分くらい嫌いです。 良いとおもったところ 色々なライブラリをつけ外しして使える つまりNestJS自体が提供している機能はそれほど多くないと言う意味ですね。 そこそこ柔軟に書ける ↑で述べているように、プラガブルなんで例えばORMだってTypeORM使ってもいいしPrisma使ってもいい

                                      NestJSちょびっとだけ触ってみた所感 - タオルケット体操
                                    • NestJSの構造化ロガーを公開しました

                                      先日以下の記事で書いたNestJSの構造化ロガーを汎用的に使えるかたちにして npm に公開しました。 使い方は普通のNestJSのカスタムロガーと同じでこんな感じで使います。 async function bootstrap() { const app = await NestFactory.create(AppModule, { bufferLogs: true }); app.useLogger(new StructuredLogger({ logLevel: process.env.LOG_LEVEL, format: process.env.LOG_FORMAT, })); const logger = new Logger("bootstrap"); logger.log("Hello structured log!", { foo: "bar" }); logger.debu

                                        NestJSの構造化ロガーを公開しました
                                      • NestJSのGraphQL Resolver関数を型安全にしたい

                                        ユビーではNestJSでGraphQLのサーバー実装をおこなっています。今回は実践で得られた知見を元にNestJSでGraphQLのResolverに対してGraphQLのスキーマから生成したTypeScriptの型を適用する方法について解説します。 前提としてNestJSにはスキーマファーストとコードファーストがありますが、今回はスキーマファーストで書いたうえで、スキーマから型を生成するアプローチを紹介します。 NestJS組み込みの型生成を使う NestJSのスキーマファーストのアプローチではNestJSの組み込みの機能でスキーマからTypeScriptの型を生成することができます。 以下のように書くことで、 graphql.ts に型が生成されます。 GraphQLModule.forRoot<ApolloDriverConfig>({ driver: ApolloDriver, t

                                          NestJSのGraphQL Resolver関数を型安全にしたい
                                        • Hasura + NestJS + Next.jsでの爆速開発構成 - aisaac技術ブログ

                                          アイザックでは新規事業を Hasura + NestJS + Next.jsのmonorepo構成 で開発しており、その概要について紹介します。 最短でのPMFを狙いたい アイザックでは新規事業に力を入れており、頻繁に新規事業が立ち上がっています。 立ち上がった新規事業は、PMFを目指しPDCAを回していきます。 このPDCAを高速で回すため、エンジニアとしてはプロダクトを世の中に速くリリースすることが求められます。 開発スピードを上げる要因は様々あると思いますが、今回は実装コスト削減に焦点を当てて構成を検討しました。 全体構成 以下のような構成になっています。 実装コスト削減のポイント 少ないエンジニアでも速いスピードで世の中にプロダクトをリリースできることを目的としています。 HasuraやCodegenによる自動生成で、できるだけコードを書かずに動くものを作ろうがポイントです。 ①

                                            Hasura + NestJS + Next.jsでの爆速開発構成 - aisaac技術ブログ
                                          • NestJS Way より TS Way を意識したバックエンド設計事例と Tips - Mobile Factory Tech Blog

                                            こんにちは!BC チームでエンジニアをしている id:d-kimuson です。 最近、弊チームで構築した社内向け Web API のバックエンド設計をしたので事例として紹介しようと思います。 フレームワークとして NestJS を採用していますが、NestJS Way よりも TS Way を意識した設計をしており、このエントリの主題でもあるため、TS Backend の設計事例として読んでいただければと思います。 対象システムの概要 社内の他サービス向けの Web API で、他チームのサービスを経由してエンドユーザーに届く中間システム チーム内のサービスからもチーム外のサービスからも叩かれる想定 チーム外からも叩かれるため、なんらかのスキーマを共有したいというモチベーションがある → 2023 年現在で標準的な OpenAPI Specification (以後 OAS と呼びます)

                                              NestJS Way より TS Way を意識したバックエンド設計事例と Tips - Mobile Factory Tech Blog
                                            • NestJSとPrismaで頑張らないDDD。設計ガイド編(他の技術でも展開可) - aisaac技術ブログ

                                              ここ数年でレイヤードアーキテクチャやクリーンアーキテクチャ、オニオンアーキテクチャそしてDDDという言葉を急激に聞くようになってきました。 私個人は何年かGolangをクリーンアーキテクチャで運用したことがあります。 その経験の中ではわりと辛い側面も多く、次にやるならこうすると思っていた構想をNestJSにぶつけてみました。 読んでいただいている方と私の知識のベースラインを揃えるために、割と文字が多めですが最後まで読んでいただけると幸いです。 実装だけを知りたい方は別記事で出しますので是非ウォッチしてお待ちいただきたいです! DDDする前に前置き DDDで出てくる言葉については、こちら非常にうまくまとまっていたので日本語訳して適宜削減と修正をおこなっております。本当に感謝します。 また併せて、ADR(Architecture Decision Record)としてなぜそうしたのかの経緯も記

                                                NestJSとPrismaで頑張らないDDD。設計ガイド編(他の技術でも展開可) - aisaac技術ブログ
                                              • Next.js×NestJSをモノレポで構築/運用してみました - stmn tech blog

                                                こんにちは、スタメンエンジニアの手嶋です。普段はRuby on RailsやReactなどの技術を用いて開発しています。最近はフィーチャーチーム体制に切り替わったこともあり、AWSなどの技術にも触れる機会が増えました。 これまで複数のプロジェクトにおいてReact(TypeScript)で開発を行ってきました。そんな中でやはり型の恩恵を感じることが多かったのですが、バックエンドも含めてTypeScriptでアプリケーションを作成してみたいという想いが湧いてきたので、個人開発としてNext.jsとNestJSで構築したアプリケーションをモノレポで運用し本番環境で動かしてみました。 モノレポはその名の通り、単一のリポジトリ(git等)で複数のプロジェクトを管理することです。 主に以下のようなメリットを享受できないかと思い、モノレポを採用しました。 ESLint / Prettierなどの設定を

                                                  Next.js×NestJSをモノレポで構築/運用してみました - stmn tech blog
                                                • Distrolessを使った2021年最新のDocker環境を試した[Node.js/NestJS]

                                                  今回は NestJS を使っていますが、ビルド後のファイルと node_modules を使っているだけですので、Express やほかの FW でも同様にできると思います。 Distroless とは? Google 製の Docker イメージです。 アプリケーションとそのランタイムの依存関係だけが含まれています。 本番環境に特化したイメージであり、ランタイムに不要なプログラム(シェルなど)を含まないのでパフォーマンスの向上・セキュリティ向上が見込めます。 また alpine ではなく Distroless を使う理由はこちらの記事が参考になるので、気になる方はこちらを参照してください。 Distroless で本番環境を作ろうとなったきっかけの記事でもあります。 結果 削減対策なし slim マルチビルド slim マルチビルド distroless

                                                    Distrolessを使った2021年最新のDocker環境を試した[Node.js/NestJS]
                                                  • NestJS を Cloud Run へデプロイする方法いろいろ / 継続的デプロイの構築

                                                    はじめに NestJS はサーバーサイド TypeScript のフレームワークとして注目しています。手元で試すべく触っているうちに、せっかくならデプロイしたいという気持ちになりました。デプロイ先の選択肢はいろいろとありますが、最近は Google Cloud を触っていることもあり Cloud Run へデプロイしてみることに。この記事にデプロイした記録を残します。 結論的な意見 NestJS(というかNode.jsアプリ)を Cloud Run へデプロイするためには以下の選択肢があります。 ソースコードのみ用意して gcloud run deploy で全部おまかせ ソースコードとDockerfileを用意してあとは gcloud run deploy でおまかせ ソースコードとDockerfile、Cloud Build トリガーを定義して Artifact Registry から

                                                      NestJS を Cloud Run へデプロイする方法いろいろ / 継続的デプロイの構築
                                                    • 【NestJS/Next.js/GraphQL】TypeScriptだけでバックエンドもフロントエンドも作ってみる

                                                      やったこと ほぼTypeScriptだけでバックエンドもフロントエンドも作ってみた できたもの 技術スタック Backend NestJS TypeORM GraphQL (Code first) / Apollo Frontend Next.js / React GraphQL Code Generator / Apollo Client emotion / Semantic UI Other yarn workspace ESLint / Prettier / husky Docker / Docker Compose Vercel GCP (CloudSQL / Cloud Run / Cloud Build) Backend NestJS TypeScriptでスケーラブルなサーバーサイドアプリを構築するためのNode.jsフレームワークです 型安全なので何か誤った記述があれば起動

                                                        【NestJS/Next.js/GraphQL】TypeScriptだけでバックエンドもフロントエンドも作ってみる
                                                      • NestJSにざっくり入門してみる

                                                        この記事では、 NestJSでの新規プロジェクトを始め方 NestJSで開発する際に押さえておきたい基本 について記載しています。 (勉強途中なので徐々に追記していければと思っています。) この記事は、Udemyの「NestJS入門 TypeScriptではじめるサーバーサイド開発」というコースを受講し、その忘備録として記載したものです。 非常にわかりやすい講座ですので、ぜひ受講してみてください! NestJSの概要 まずNestJSの概要について記載します。 わかりやすい説明が、下記の記事にあったのでそのまま引用させて頂きます🙇‍♂️ Nest (NestJS) は効率的でスケーラブルなNode.jsサーバーサイドアプリケーションを構築する為のフレームワーク。 最新のJavascriptで構築され、Typescriptを完全にサポートしており、にも関わらずピュアJavascriptでコ

                                                          NestJSにざっくり入門してみる
                                                        • その try-catch、意味がありますか?NestJSにおける例外処理の戦略 | TrustHub テックブログ

                                                          弊社(トラストハブ)では、バックエンドのプログラミング言語として TypeScript、ウェブフレームワークとしてNestJSを採用しています。本記事では、NestJSの特長を生かした、実際に弊社で採用されている例外処理の戦略について述べます。 その try-catch、意味がありますか? TypeScriptのコードにおいて、try-catch が使われている場面をたびたび見かけます。 try-catch で囲う意図としては以下のようなものがあると思います。 例外をハンドリングすることで処理を継続したい。 例外の型によって処理を分岐したい。 例外の内容をログに出力したい。 例外をハンドリングする必要がありますか 例外は、例外的な状態なので例外なのです。 例外が発生した多くの場合、書かれたコードでは処理を継続できない状況が発生します。処理を継続できない状況において、例外を catch して

                                                            その try-catch、意味がありますか?NestJSにおける例外処理の戦略 | TrustHub テックブログ
                                                          • Microservices with CQRS and Event Sourcing in TypeScript with NestJS

                                                            Recently, I published three articles, each on Domain-Driven Design (DDD), CQRS, and event sourcing. In each of these articles, I have made it clear that while these concepts and architectures are independent, they complement each other perfectly, especially in the context of microservices and APIs. However, I would like to go into this interaction more closely today. I created a simple open-source

                                                              Microservices with CQRS and Event Sourcing in TypeScript with NestJS
                                                            • サーバーサイドTS【NestJS/FoalTS/frourio】でDI/API実装/Fastify連携/etcを比較した

                                                              概要 サーバーサイド TypeScriptのフレームワークで、個人的に有力視している以下の 3 フレームワークを比較します。 FoalTS NestJS frourio 主な比較項目は以下のとおりです。 Controllerの書きやすさ(バリデーション含む) Dependency Injectionの書きやすさ、テストの実装のしやすさ Fastify連携の対応可否 ※frourio は Next.js をフロントに Integration したフルスタックフレームワークとしての一面がありますが、API 鯖としても便利だと思っているので、本記事は APIの活用にフォーカスして説明していきます。 実装する機能 ユーザーアカウントを作成する APIを実装していきます。 POST /userでユーザー情報を渡して実行するものとして、Controller に UseCase を DI する処理を書い

                                                                サーバーサイドTS【NestJS/FoalTS/frourio】でDI/API実装/Fastify連携/etcを比較した
                                                              • 【NestJS 本格入門】API の作成からテストの作成・自動化までを網羅(TypeORM & JEST & GitHub Actions)

                                                                【NestJS 本格入門】API の作成からテストの作成・自動化までを網羅(TypeORM & JEST & GitHub Actions) NestJS とは Node.js 上で動作する バックエンドフレームワーク です。 NestJS を採用することで「TypeScript を完全にサポートしており、型をつけることができる」、「テストフレームワークが標準で用意されている」といった大きなメリットを享受することができます。 本書籍では、そんな NestJS に本格入門するため、基本的な CRUD 処理を行う API の作成から、単体テスト・E2E テストをしっかりと書いていきます。 一緒に NestJS を学んでいきましょう。

                                                                  【NestJS 本格入門】API の作成からテストの作成・自動化までを網羅(TypeORM & JEST & GitHub Actions)
                                                                • 【V.9対応】TypeScript +NestJSをプロジェクトで導入したら素晴らしかった件

                                                                  はじめに 昨年12月に投稿させていただいた記事でしたがNestJSのバージョンアップに伴いTypeORM系の処理が動かなくなっていることを発見しましたので記事を更新させていただきました レポジトリはこちら 環境について Windows環境での動作確認はしておりませんのでご了承ください NestJSとは? Nest (NestJS) は、効率的でスケーラブルなNode.jsサーバサイドアプリケーションを構築するためのフレームワークです。プログレッシブJavaScriptを採用し、TypeScriptを完全にサポートし、OOP(オブジェクト指向プログラミング)、FP(機能的プログラミング)、FRP(機能的反応プログラミング)の要素を兼ね備えています。 環境構築

                                                                    【V.9対応】TypeScript +NestJSをプロジェクトで導入したら素晴らしかった件
                                                                  • TypeScript + Nestjs + Prisma でGraphQLサーバー構築

                                                                    概要 TypeScript + Nestjs + Prisma でGraphQLサーバー構築。 ついでにdocker-composeでmysqlサーバーも構築。 Nestjsとは? NestJSは、素早いサーバー実装を可能にし、テストしやすく作ることを目指したTypescript製のWebフレームワークです。GraphQLを扱う際は、ApolloServerと一緒に使われることが多い印象。 Prismaとは? 3要素から成る、Node.jsとTypeScriptのORM。 Type-safe database client: 型安全なORM Hassle-free migrations: 強力なMigration Visual database browser: DBをブラウザで見れたり、操作ができる Rubyで言うActiveRecordのような確固たる地位を築きつつあるORM。 手順(

                                                                      TypeScript + Nestjs + Prisma でGraphQLサーバー構築
                                                                    • API開発の最高のDXを求めて - NestJS+Prisma+AWS Copilot

                                                                      最近、何度目かになる個人プロダクト開発をしようという思いつきからAPI開発をしてて、その際できるだけ低コストでDX(開発者体験)を追求してみようとやってみたら、結構いい感じにできて個人的にはまぁまぁ満足できました。 数年前から考えるとDX関連の進化はめざましく、ユニットテストやLint、フォーマッターなどがあるのはほぼ当たり前になってきました。ここからさらに数年後に見たときにまた大きく変化してるような気もするので、見比べるためにも備忘録がてら技術選定やツールの使い勝手について記録したいと思います。 技術選定 言語選定 DXってところを重視するとやはり静的型付は欲しい+多少なりとも使い慣れてる言語が良いなと思い、RustとTypescriptの2択にしました。 Rustは言語思想がめちゃくちゃ面白くて好きなので、今回もRustにしようかなぁとも思ったのですが、主流のORMのDiesleの型エ

                                                                        API開発の最高のDXを求めて - NestJS+Prisma+AWS Copilot
                                                                      • NestJS + GraphQL + Prisma + MySQL でJWT認証をつくる

                                                                        NestJSでGraphQLとPrismaを使ってJWTを使った認証をつくってみます。 DBにはMySQLを使います。 できること GraphQLによるAPI DBのスキーマ定義からObject TypeやInput Typeなどの定義を自動生成 GraphQLのスキーマ定義の自動生成 ValidationPipeを使った自動的なバリデーション パスワードをハッシュ化して保存 メールアドレスとパスワードによる認証(NestJSのデフォルトはユーザ名とパスワード) JWTトークンを使った認証 開発環境構築 VS Codeの拡張機能Remote - Containersを使ってDocker上に開発環境をつくります。 ここではプロジェクトのディレクトリをnest-graphql-prismaとします。 プロジェクトのディレクトリをVS Codeで開き、直下に*.devcontainer*ディレク

                                                                          NestJS + GraphQL + Prisma + MySQL でJWT認証をつくる
                                                                        • NestJS: Microservices with gRPC, API Gateway, and Authentication

                                                                          Today, I wanna introduce you to Microservices in NestJS (TypeScript) combined with Google’s gRPC framework, and API Gateway to handle incoming HTTP requests and authentication based on JWT. This article got very long, so I split it into 2 parts. Introduction, Preparation, Databases, Shared Proto ProjectAuthentication Microservice, Product Microservice, Order MicroserviceYou’ll find a link to each

                                                                            NestJS: Microservices with gRPC, API Gateway, and Authentication
                                                                          • Next.js、NestJS で新規Webアプリケーション開発をしている話

                                                                            これは、FORCIA Advent Calendar 2021の19日目の記事です。 はじめに 第1旅行プラットフォーム部長の武田です。これまで検索アプリケーションの開発をメインに担当していましたが、最近は検索で利用する商品データを作成するサービスの開発をしています。 慣れ親しんだ検索アプリケーションとは異なりますが、そのノウハウを活かしつつ、新しいことに取り組んでいます。今回はそのサービス開発で利用している技術についてご紹介いたします。 フロントエンド Next.js フォルシアではアプリケーション開発で社内製のWebアプリケーションフレームワークを利用しています。現在は3代目までのWebアプリケーションフレームワークが存在します。3代目のフレームワークは内部でNext.jsを利用しています。そのためNext.jsを採用するのは自然な流れでした。 この社内製Webアプリケーションフレーム

                                                                              Next.js、NestJS で新規Webアプリケーション開発をしている話
                                                                            • NestJSに入門してみた

                                                                              こんにちは! フロントの方で使ってみたいライブラリがあったりして、自分用のツールの開発を行なっていたのですが、何となく NestJS も使ってみたくなりました。 ということで、NestJS に入門してみました!! 本記事では、今回 NestJS で開発をして学んだことをまとめていきます。 NestJS とは NestJS は、TypeScript で構築された、バックエンド開発のための Node.js フレームワークです。Angular の影響を受けて開発されているようです。 Controllers Controllersは、ルーティングを記述し、クライアントからリクエストを受け取り、レスポンスを返す役割をします。 @Controller()デコレータを記述することで、Controllersとして定義することができます。 Providers Providersでは、Serviceファイルを

                                                                                NestJSに入門してみた
                                                                              • NestJS で Prisma の発行するクエリを出力する

                                                                                NestJS で Prisma を扱うとき、発行されるクエリがどんなものか追いたかったのですが、いずれの公式ドキュメントにも明記されていなかったため備忘録です。 なお、執筆環境の依存モジュールバージョンは以下の通りです。バージョン差異による不具合はご了承ください。 "dependencies": { "@nestjs/common": "^8.0.0", "@nestjs/core": "^8.0.0", "@prisma/client": "^3.11.1", "prisma": "^3.11.1" } Prisma on NestJS の雛形 NestJS で Prisma を利用する場合、インスタンス化せず以下の様に service として定義、各々の module で利用します。DB 接続を試行するライフサイクルイベントonModuleInitの定義は現在オプションですが、後続解説

                                                                                  NestJS で Prisma の発行するクエリを出力する
                                                                                • NestJSを用いたWebAPIサーバーの開発と、仕様書作成/APIテストの効率化

                                                                                  2023-01-20 NestJSを用いたWebAPIサーバーの開発と、仕様書作成/APIテストの効率化 NestJS Swagger API Testing Dredd はじめに 私たちのチームでは、新しく作成するREST APIサーバーの開発にNestJS、API仕様書のフォーマットにOpenAPI(Swagger)を採用しました。NestJSでは、組み込みのモジュールを利用することにより、OpenAPI仕様書を容易に作成することが可能です。 また、APIテストフレームワークにDreddを用いることで、実装がOpenAPI仕様書通りに動いているかどうかを自動で確認することができます。この記事では、NestJSとDreddに関しての説明や利点、またサンプルコードを用いて実際にAPIサーバー構築・OpenAPI仕様書作成・APIテストまでの一連の流れを紹介していきます。 この記事の対象者

                                                                                    NestJSを用いたWebAPIサーバーの開発と、仕様書作成/APIテストの効率化