Contents
スポンサーリンク
概要
「Node.jsフレームワーク超入門」を読んだので感想を書こうと思います。
スポンサーリンク
書籍概要
どんな本?
JavaScriptは、Node.jsの登場によりあらゆる開発に用いられるようになりました。
本書は、Node.jsの多数のフレームワークのうち、Express、Sails.js、Adonis.js、NestJS、Meteor、Prisma、TypeORMという「これだけは知っておきたい」フレームワークについて、インストールから基本的な機能の使い方まで解説した超入門書です。いろいろためしたい方におすすめします。
- 掌田 津耶乃 著
- 2022年05月 発行
- 448ページ
- 定価3,080円(税込)
スポンサーリンク
内容のまとめと感想
JavaScriptのブラウザ外の実行ランタイムである、Node.jsにおけるWebアプリケーションのフレームワークをたくさんとりあげた書籍です。
具体的には、Express、Sails.js、Adonis.js、NestJS、Meteorといった5つのフレームワークを取り上げて順々に説明する構造です。
加えて一部のフレームワークではDBアクセスの機能として、Prisma、TypeORMといったORMライブラリを導入、使用して、その機能を紹介しています。
基本はJavaScriptベースでの説明ですが、フレームワークによってはTypeScriptを使用した説明になっています。
個々の内容はあっさりめでWebアプリ経験者向け
多く紹介しているだけに、1個1個の内容はあっさりとしたもので、基本的に簡単なCRUDを行うような画面を作るまでが基本的な流れです。
ある程度コードの説明はされていますが、Webアプリケーション自体を全くやった事が無いという人ではなく、ある程度MVC系のフレームワークを触った人向けの内容になっていると思います。
自分のようなReactやVue、Angularといったフロントエンドから本格的にJSを使い出した人間には、Node.jsのフレームワークに関して幅広く知る事ができて面白いのではないかと。
各フレームワークの所感
Express
老舗的なWebアプリケーションフレームワーク。Node.jsをあまり使用しなくても良く耳にする。
多くの機能は取り換え可能なプラガブルな構造で、用途に合わせて自分で追加していくイメージ。
お手軽なWebアプリを作るならば便利だが、規模が大きくなると構造をしっかり決めないとカオスになりそう。
Prisma
DBとのやりとりを行うためのORMライブラリ。今回はExpressと併せて実装する場合の説明。
マイグレーションなど基本的なORMとしての機能もありつつ、専用のGUIなども用意されている。(テーブルのレコード追加などが簡単にできる。)
schemaという拡張子のファイルを作成して、そこにモデルの定義を書いていくスタイル。
Expressが老舗的な存在なのに対して、こちらは比較的新しめ。
Sails.js
こちらもExpressと同じく、歴史のある老舗的なフレームワークで、名前からも分かる通り、Ruby on Railsに大きく影響を受けている。
MVCパターンで使い方もRailsに近く、そちらに慣れている人ならば使いやすいのかもしれない。
ORMはRailsのActiveRecordを踏襲したような、フレームワークに統合された独自のものを使用する。
(JSにモデル定義を書いてマイグレーションする)
Expressのような使用する機能を選ぶスタイルではなく、オールインワンで提供された機能を使用していくのであれこれ迷わない。
Adonis.js
Laravelから影響を受けたMVCフレームワーク。(Laravelを触った事がないので、どの程度似ているのかは不明 )
後発だけあって、TypeScriptに対応しているのが特徴で、本書でもTypeScriptを使用している。(Sails.jsも一応対応はしているたみたい。)
基本はSails.jsと同じようなMVCフレームワークだが、プラガブルな構造で拡張性が高そう。
Lucidといった専用のORMが提供される。(後付けで導入)
アノテーションを使用した他の言語でもよく見受けられるモデル定義を行い、マイグレーション等にも対応。
NestJS
基本的にREST APIとして使用するためのフレームワーク。
テンプレートエンジンを後付けで入れることは可能で、本書はサンプルの都合上これを使用して画面を作成している。
TypeScriptに標準対応で、これまで紹介したMVCフレームワークとは違う独自の構造で、Angularから影響を受けている。
NestJS自体はDB周りの機能は提供していないので、自身でORMなどのライブラリを選択して使用するスタイル。
本書ではTypeORMを使用した例を紹介している。
TypeORM
Expressの時に紹介したPrismaと同じく、DBとやりとりを行うためのORMライブラリ。
モデル定義をアノテーションで書いていくスタイル。
実際のアクセスは提供されているRepositoryというクラスにジェネリクス指定する形で利用する。
Meteor
これまで紹介したものとは異なり、フロントとサーバー側をシームレスに繋ぐフレームワーク。
WebSocketでクライアントとサーバーが通信をして、画面を書き換えていくような構造で、Blazorのサーバー版に近いようなイメージ?
クライアントとサーバーのコードがまとめて書けるので、慣れれば効率的だが独自のルールを覚える必要がある。
ReactなどのSPAフレームワークとも相性が良く、本書ではReactを使用した例が紹介されている。
(独自のフックなどが用意されていて、そちらを使用してサーバー側とやりとりできる。)
サーバーサイドの実装をREST APIとして分けずに直接フロントとシームレスに実装できるのでFirebaseのFireStoreとかに近いイメージ?
画面側の描画はSPAに任せて、サーバーとのやりとりだけをシームレスにするという使い方は便利そうではある。
DBとしてはMongoDBとの相性が良いらしく、本書でもMongoDBを使用している。(一応RDBMSも使用はできるみたいではある。)
まとめ
Node.jsのWebアプリケーションフレームワーク及び、ORMライブラリの紹介を行なっている書籍です。
CRUD機能の作成までを通して、各フレームワークの基本的な使用方法を学ぶ事ができます。
個々の内容はさわりなので、気になるものがあったら別途個別に調べる必要があると思いますが、どういったものなのかを浅く広く知るにはよい一冊だと思います。
また、基本的に各フレームワークのお作法の説明がメインなので、Node.js自体に関しては知りたいという方はハンズオンNode.jsなどがオススメです。