人気npmパッケージ25本をサクッと紹介する
2017/12/20
こちらはNode.js Advent Calendar 2017 - Qiitaの20日目の記事です。
今回はnpm rankの2017/12/12のデータを元に、もっとも権威のある(検索でヒットしやすい)パッケージTOP25を超簡潔に紹介していきます。
node.jsには便利なパッケージがたくさんあり、ほとんどのことはパッケージで効率化できます。しかしパッケージを使うには、どういうパッケージがあるか知らなければサッと使うことができません。とはいえ1つずつググっていくと意外と多くの時間がかかってしまう。そのために頭のなかに索引をつくるような記事を書いてみようと思いました。苦労して調べるのは一人でいい! 私自身ほとんどパッケージを知らないので、サーベイの意味を込めて。
説明の誤りや改善点があればコメントください。
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の機能も使えるのが大変使い勝手が良い。
参考
- jprichardson/node-fs-extra: Node.js: extra methods for the fs object like copy(), remove(), mkdirs()
- node.jsで階層ディレクトリ作成やコピーをしたいときは? - Qiita
10. moment
時間のデータを扱うための軽量ライブラリ。パースしたり検証したり操作したりフォーマットを整えたりできる。
参考
ソシム
売り上げランキング: 13,002
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などの関数型プログラミングもサポートしている。
参考
- Underscore.js
- 第1回 Underscore.jsとは:Underscore.jsの入り口|gihyo.jp … 技術評論社
- Underscore.jsの全メソッドを表にまとめてみた - あと味
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や画像のローダが存在する。
参考
翔泳社
売り上げランキング: 189,232
21. yargs
CLIツールを作成する際に引数のパースやユーザインターフェースの作成のための機能を提供するモジュール。6番目に紹介したcommanderに近い。
参考
22. babel-runtime
babel-polyfillを使うのに必要らしい。 あんまり深い情報を得られなかったので良い解説求む。
参考
- babel/packages/babel-runtime - GitHub
- babel-polyfillとbabel-runtimeの使い分けに迷ったので調べた - Qiita
- フロントエンドでもES6構文使ってみる【webpack+babel-loader(旧6to5-loader)】 - yutaponのブログ
23. q
Promiseを扱うためのライブラリ。Promiseは関数の返却値と例外を定義するオブジェクト。7番目に紹介したbluebirdと類似。
参考
- kriskowal/q - GitHub
- PromiseとQとBluebird - Qiita(https://qiita.com/kamijin_fanta/items/21a061a00575f0a357c6)
24. css-loader
webpackであらゆるファイルをJS一本化する際、CSSをJavaScriptに変換するのに必要なモジュール。これはsass やlessなどのメタCSS言語をコンパイルするのではなく、プレーンなCSSをJavaScriptで読み込めるようにする機能を持つ。
参考
- webpack-contrib/css-loader - GitHub
- なんとなくで理解しないWebpackのCSS周辺 - Qiita
- webpackのcss-loaderでCSS Modulesをやる - Qiita
25. inquirer
その名の通り、コマンドライン上でユーザに問いかけるのに使うモジュール。 質問を投げかけたり、入力された内容をパースしたり、入力された内容を検証したり、階層構造を持つ質問を管理したり。
参考
あとがき
これ書いてて痛感したんですが、モジュールのREADMEに「Why ◯◯?」みたいにそのモジュールの価値を簡潔に書いてくれてるのはすごくありがたい。
最近よく使われている技術をさらっと俯瞰することは勉強になりますね。私はjQueryでなんでもやっちゃおうという世代なので、モダンJS特有知らない概念を吸収できた点が有益でした。これからモダンJS使えるようになりたい。
あと、人気モジュールを追うことで今のデファクトスタンダードが自ずと見えてくる。ライブラリ導入の判断材料として役立ちそう。
SBクリエイティブ
売り上げランキング: 256,064