きゃべログ

人気npmパッケージ25本をサクッと紹介する

JavaScriptnode.jsnpm

こちらはNode.js Advent Calendar 2017 - Qiitaの20日目の記事です。

今回はnpm rankの2017/12/12のデータを元に、もっとも権威のある(検索でヒットしやすい)パッケージTOP25を超簡潔に紹介していきます。

node.jsには便利なパッケージがたくさんあり、ほとんどのことはパッケージで効率化できます。しかしパッケージを使うには、どういうパッケージがあるか知らなければサッと使うことができません。とはいえ1つずつググっていくと意外と多くの時間がかかってしまう。そのために頭のなかに索引をつくるような記事を書いてみようと思いました。苦労して調べるのは一人でいい! 私自身ほとんどパッケージを知らないので、サーベイの意味を込めて。

説明の誤りや改善点があればコメントください。

Node.js超入門
Node.js超入門
posted with amazlet at 17.12.21
掌田津耶乃
秀和システム
売り上げランキング: 17,840

1. lodash

JavaScriptでで関数型プログラミングをするのに使えるモダンユーティリティライブラリ。配列や数値、オブジェクト、文字列の扱いを簡単にする。関数型プログラミングでおなじみの合成関数も利用できます。あと速い。

参考

2. request

httpコールをシンプルに作成するためのライブラリ。とりえずWeb API叩いてみたいときはこれ使っとけばいい感じ。

参考

3. chalk

ターミナルに表示する文字列のスタイルを指定するのを簡単にする。ログの出力を簡潔な表記で色付けしたりボールド体にできる。メソッドチェーンを使って1文でハイコンテキストなスタイリングが可能。

参考

4. async

非同期処理をシンプルなAPIで記述できる。また並列処理と逐次処理を同じインターフェースで記述できる。

参考

5. express

高速、オープン、軽量なNode.jsのためのWebフレームワーク。 JavaScriptでデファクトスタンダードのMVCフレームワークです。 REST APIの実装とかチャチャッとしたいとき便利。

参考

6. commander

CLIツールを作るためのフレームワーク。 簡単にバージョン指定できたり、オプションが指定できたり。

参考

7. bluebird

Promiseを実現するためのモジュール。 ちなみにPromiseは非同期処理をベースにした並列処理の実装です。コールバック地獄からの解放。

参考

8. debug

Node.jsとWebブラウザで動作する軽量デバッグユーティリティ。デバッグのときのみログ出力したいときに有効。デバッグログ用にconsole.log()を使ってしまうと、実働コードでコメントアウトor削除する手間が生じる。debugモジュールを使えばDEBUG環境変数をいじるだけでログのON/OFFが可能。

参考

9. fs-extra

Node.jsにデフォルトで存在するfsモジュールには含まれないファイルシステム関連メソッドを追加するモジュール。fsモジュールにない、mkdirp,rimraf,ncpなどを個別にインポートする手間が省ける。promiseに対応させることも可能 。fsモジュールをインポートする代わりにfs-extraモジュールをインポートすればfsの機能も使えるのが大変使い勝手が良い。

参考

10. moment

時間のデータを扱うための軽量ライブラリ。パースしたり検証したり操作したりフォーマットを整えたりできる。

参考

11. mkdirp

シェルのコマンドmkdir -p 相当のことが出来る関数を使えるようになる。デフォルトのモジュールではできないところを解決するシンプルなモジュール。

参考

12. body-parser

httpリクエストのbodyをパースするためのミドルウェアという位置づけのモジュール。マルチBodyな構造には対応していない。

参考

13. react

FacebookのUIライブラリであるReactをサクッと使うためのモジュール。Reactを使用したモジュールをbrowserify(モジュールの依存関係を解決し、1つのjsファイルに)するときに特に有用。

参考

14. glob

ワイルドカードを使ってファイル名を特定するモジュール。パターンに合うファイルを探すときに使う。拡張子がjsのファイル名が知りたい時とか。

参考

15. underscore

配列やオブジェクトの操作をシンプルに書くための関数などの便利関数がパッケージ化されているモジュール。map, reduceなどの関数型プログラミングもサポートしている。

参考

16. babel-core

ES2015やJSXなどのモダンなJS仕様でコーディングされたものをブラウザでも動作するように生のJSに変換するトランスパイラ(コンパイラ)。

参考

17. colors

node.jsコンソールに表示する文字列のスタイルを指定するのを簡単にする。3番目に紹介したchalkと類似のモジュール。chalkと比較するとstringにメソッドを生やすなど影響範囲が大きいらしい。

参考

18. webpack

複数のモジュールを1つにまとめてファイルを出力するモジュールバンドラ。類似のモジュールにはBrowserifyがあるが、Webpackがユニークな点は、css、画像、Webフォントなどのアセットをモジュールとして扱って1つのバンドルにして出力する点。

参考

19. react-dom

元々Reactで提供されていたDOMのルートノード作成機能を分離提供したもの。reactとreact-domはReactを使うのに最低限必要。

参考

20. babel-loader

webpackのモジュールローダとしてbabelを使うために必要。簡単に言うとローダーは入力したファイルをバンドル(一個にまとめる)ときに生JSにコンパイルしてくれる。TypeScriptやES2015などのモダンJavaScriptだけでなくcssや画像のローダが存在する。

参考

実践Node.js プログラミング (Programmer's SELECTION)
Mike Cantelon Marc Harter T.J. Holowaychuk Nathan Rajlich
翔泳社
売り上げランキング: 189,232

21. yargs

CLIツールを作成する際に引数のパースやユーザインターフェースの作成のための機能を提供するモジュール。6番目に紹介したcommanderに近い。

参考

22. babel-runtime

babel-polyfillを使うのに必要らしい。 あんまり深い情報を得られなかったので良い解説求む。

参考

23. q

Promiseを扱うためのライブラリ。Promiseは関数の返却値と例外を定義するオブジェクト。7番目に紹介したbluebirdと類似。

参考

24. css-loader

webpackであらゆるファイルをJS一本化する際、CSSをJavaScriptに変換するのに必要なモジュール。これはsass やlessなどのメタCSS言語をコンパイルするのではなく、プレーンなCSSをJavaScriptで読み込めるようにする機能を持つ。

参考

25. inquirer

その名の通り、コマンドライン上でユーザに問いかけるのに使うモジュール。 質問を投げかけたり、入力された内容をパースしたり、入力された内容を検証したり、階層構造を持つ質問を管理したり。

参考

あとがき

これ書いてて痛感したんですが、モジュールのREADMEに「Why ◯◯?」みたいにそのモジュールの価値を簡潔に書いてくれてるのはすごくありがたい。

最近よく使われている技術をさらっと俯瞰することは勉強になりますね。私はjQueryでなんでもやっちゃおうという世代なので、モダンJS特有知らない概念を吸収できた点が有益でした。これからモダンJS使えるようになりたい。

あと、人気モジュールを追うことで今のデファクトスタンダードが自ずと見えてくる。ライブラリ導入の判断材料として役立ちそう。

はじめてのNode.js -サーバーサイドJavaScriptでWebアプリを開発する-
松島 浩道
SBクリエイティブ
売り上げランキング: 256,064

きゃべ / Masaya Kurahashi
きゃべ / Masaya Kurahashi
Software Engineer, Product Manager