mongoDB + Angular + NestJS

私は現在バックエンドエンジニアとして働いており、今後フルスタックエンジニアになれればと思っています。

NestJS公式twitterをフォローしていたら、Raj Sekharさんの『Rapid full stack for Angular developers— The MAN Stack (Part I)』という「フルスタックな開発者とは何か?」のような記事を発見したので、英語力リハビリのため記事を翻訳したので紹介いたします。

AngularがRuby on Railsと似ているという部分が個人的には面白いなあと思っています。 今後日本でもNestJSやAngularが多くの会社で使われるといいなと感じています。

ところどころgoogle翻訳のような意味不明な日本語になってしまい申し訳ありません。。

以下、元記事の翻訳となります。

Angular開発者のための超速フルスタック - MANスタック

タイポしてるって?いや、私はMANスタックのことを書いたのであって、MEANスタックを指してるんじゃないんだ。

1_OonQ2syFQlSTyaFMCxAZCA.jpeg

AI、データサイエンス・分析、クラウド、DevOpsに対する間違った考えや要求が最近高まってきているが、フルスタックな開発者/エンジニアに対する要求レベルとしては未だにそれらと同じ水準に達していない。フロントエンドやバックエンドといった線引きに代わるものとして、特に最近探し求められている。 恐らく、スタートアップやスモールビジネスの成長によって、ウェブサイトをなるべく早く市場に投入することが求められており、開業資金を上げ、マーケットシェアを握っている。 多国籍企業については、フロントエンドとバックエンドの両方にコストカットが行われ、一人の社員によって最小限のコストで開発が行われており、より多くを成長技術や研究開発費に投入している。

StackOverflowの2019年の調査によると、半数の回答者は自分をフルスタックだと考えている。これは近年のフルスタックな開発者への需要が反映されているのではないだろうか。

1_t19CH7HUxmzR3Y8sLkqc4w.jpeg

私がWeb開発をAngularとともにスタートしたのは次の理由からである。

  • Typescriptが使われている
  • RxJSが使われている。
  • ” opinionated framework”だから。つまり全Angularプロジェクトの中のベストプラクティスに従った、熟知されたプロジェクト構成ということだ。この意味ではAngularがRuby on Railsに似ているとも言える。
  • CLIがウィザードで、よりパワフルになっていくから。 全てのコードをscaffoldしてくれて私の暮らしをゆったりとさせ、私自身の魔法創造に専念させてくれる。
  • 素晴らしいコミュニティがある。

フルスタックな開発者になるために、今こそ私はバックエンドを学習しなければならない。そうすることで、私はどんなwebアプリでもすべての機能を理解できるのだ。

下記4項目がフルスタックな開発者になるために求められる条件だと思う

  • フロントエンドとバックエンドのコンセプトと原理 当たり前だ!これは明らかに必要だ。
  • フロントエンドとバックエンドそれぞれのためになるバックエンドのプログラミング言語を学習。 Web開発でもっとも一般的なプログラミング言語はJavascript、Ruby、Java、Python、Goがある。
  • より早い開発を行えるようにするため、その言語でのフレームワークを探し、構文とベストプラクティスを学習する。 もっともポピュラーなバックエンドの技術スタックのいくつかにRuby On Rails, Spring boot, Express, Django, Revel, Laravelがある。
  • 保守や他の人が理解しやすいようなプロジェクトアーキテクチャをデザインする。 *Model-View-Controller (MVC), Hierarchical-Model-View-Controller (HMVC), Model-View-Presenter (MVP), Model-View-ViewModel (MVVM), Model-View-whatever (MVW or MV**).(AngularはMVWフレームワークだ)

私はプロジェクトアーキテクチャを好きなようにすることができる…だが、新人がプロジェクトに参加してきたらどうなるか?わかりやすくて、すぐに理解できるものだろうか?

0_g2l6eGDMvx3Gyjzx.jpeg

多くの異なった選択肢があるために、特にキャリアをスタートさせた人にとっては圧倒されやすくなる。

Ryan Dahl、Node.JSを作ってくれてありがとう

現在ではJavascriptがあれば、クライアントサイドもサーバーサイドも簡単に書くことができ、他の言語を学ぶオーバーヘッドを下げてくれる。今ではExpressは最もポピュラーなNodeJSのフレームワークで、早く、最小限で、軽量で、大きなコミュニティで人気がある。

だけど待ってくれ。 私はExpressのニュアンスや文法、ベストプラクティスを学ぶ必要がまだある。プロジェクト構成を学習する必要のあるnon-opinionatedなフレームワークだと、他のプロジェクトと違ってしまうので、プロジェクトを変えると、慣れるのに時間がかかってしまう。

つまり、Node+Expressは明らかにJavascriptの開発者がサーバーサイドプログラムを書くことを手助けしてくれるが、新たな文法、ベストプラクティスを学ぶ新たな学習カーブが発生し、プロジェクトを切り替えるのが難しくなる。

NestJSの導入

1_7ffjFob0_DkqG9DY7hOFwA.png

NestJSはプログレッシブなNodeJSのフレームワークで、Kamil Mysliwiecにより作られ、多くの概念をAngularと共有している。AngularはNestJSにインスパイアを受け、TypescriptとリアクティブなJavascriptでできている。NestJSは効率的で、スケーラブル、テスト可能で、高性能なサーバーサイドアプリを作り上げることが可能で、最近急激に伸びてきているNodeJSのフレームワークだ。

NestJSは素晴らしいドキュメンテーションとGraphQL, WebSockets、マイクロサービスアーキテクチャなどを備えた将来を見据えているフレームワークだ。

Angular開発者にとって、NestJSは同じように見える。

どうしてMANスタックは早くて信頼があるの?

  • プロジェクト構成:AngularとNestJSの両方はopinionatedなフレームワークなので、新人開発者にとって、既存のどのプロジェクトについても保守しやすくなっている。
  • フレームワーク:サービス、依存性注入、デコレータ、モジュールなどの多くのコンセプトがフロントエンドとバックエンドの間で共有されており、文法もAngularとNestJSで似ている。

Angular開発者として、これらの共有されたコンセプトと特徴は知識・経験の再利用とコーディングしやすさを可能にしてくれる。

NestJSを始めよう!

あなたは2つの簡単なコマンドでNestJSを使い始めることができる。 NestJSをインストールする: npm i -g @nestjs/cli プロジェクトを作る: nest new project-name

もしコードを探しているのなら、AngularとNestJSを使った簡単なToDoリストアプリに関する記事を作成する予定なので待っていてほしい。

参考記事

Rapid full stack for Angular developers— The MAN Stack (Part I)