Inquirer.jsはnode/JavaScript製のオープンソース・ソフトウェア(MIT License)です。

CUIで対話型で入力していくことはよくありますが、基本的に文字か数字を入力する程度でとても簡単なものです。しかしInquirer.jsを使えばもっとカラフルで格好いい対話が実現します。

[![](http://images.moongift.jp/2013/07/Screenshot 2013-07-08 8.33.00_thumb.1373331336.png)](http://images.moongift.jp/2013/07/Screenshot 2013-07-08 8.33.00.1373331336.png)
インストールはnpmで行います。

[![](http://images.moongift.jp/2013/07/Screenshot 2013-07-08 8.35.27_thumb.1373331341.png)](http://images.moongift.jp/2013/07/Screenshot 2013-07-08 8.35.27.1373331341.png)
一例。入力を待って処理を行うものです。?のところがカラーリングされています。

[![](http://images.moongift.jp/2013/07/Screenshot 2013-07-08 8.35.47_thumb.1373331344.png)](http://images.moongift.jp/2013/07/Screenshot 2013-07-08 8.35.47.1373331344.png)
入力した結果。JSONで受け取れるので使い回しが簡単そうです。

[![](http://images.moongift.jp/2013/07/Screenshot 2013-07-08 8.36.09_thumb.1373331347.png)](http://images.moongift.jp/2013/07/Screenshot 2013-07-08 8.36.09.1373331347.png)
パスワード入力。*で隠されているのがいい感じです。

[![](http://images.moongift.jp/2013/07/Screenshot 2013-07-08 8.36.41_thumb.1373331351.png)](http://images.moongift.jp/2013/07/Screenshot 2013-07-08 8.36.41.1373331351.png)
チェックボックス。なんと矢印キーで移動してスペースで選択状態をトグルできます。

[![](http://images.moongift.jp/2013/07/Screenshot 2013-07-08 8.36.33_thumb.1373331355.png)](http://images.moongift.jp/2013/07/Screenshot 2013-07-08 8.36.33.1373331355.png)
こんな感じで選択項目を取得できます。

[![](http://images.moongift.jp/2013/07/Screenshot 2013-07-08 8.36.52_thumb.1373331359.png)](http://images.moongift.jp/2013/07/Screenshot 2013-07-08 8.36.52.1373331359.png)
入力のリアルタイムの反映。

[![](http://images.moongift.jp/2013/07/Screenshot 2013-07-08 8.37.01_thumb.1373331362.png)](http://images.moongift.jp/2013/07/Screenshot 2013-07-08 8.37.01.1373331362.png)
dを押したらShow diffと表示されました。

[![](http://images.moongift.jp/2013/07/Screenshot 2013-07-08 8.37.06_thumb.1373331365.png)](http://images.moongift.jp/2013/07/Screenshot 2013-07-08 8.37.06.1373331365.png)
Yを押すとOverwriteに変わります。インタラクティブです。

[![](http://images.moongift.jp/2013/07/Screenshot 2013-07-08 8.37.09_thumb.1373331369.png)](http://images.moongift.jp/2013/07/Screenshot 2013-07-08 8.37.09.1373331369.png)
選択すればそれがJSONになります。

[![](http://images.moongift.jp/2013/07/Screenshot 2013-07-08 8.37.35_thumb.1373331372.png)](http://images.moongift.jp/2013/07/Screenshot 2013-07-08 8.37.35.1373331372.png)
順々に入力していくデモです。

Inquirer.jsはCUIでの入力をユーザにとってはより分かりやすく、プログラマーにとっては自由度高くしてくれます。node.jsではWebサービスの他、コンソールベースのアプリケーションも多数あるので、その中で使ってみると便利そうです。

MOONGIFTはこう見る

コンソールでの入力においてよくありがちなのはパスワードの入力ミスで、deleteキーを押してしまうパターンです。パスワードを入力している時には何も出ないのが原因でしょう。幾ら開発者とはいえ、入力が適切にされているかされていないのかも分からないのはユーザビリティが高いとは言えません。

プログラマーとコンソールは切っても切れない関係にありますので、そこで感じるストレスは徐々に蓄積されていきます。しかしそんなストレスを解消する工夫ができるのもまた開発者です。もっと良い入力方式を考えてそれを実現させてみましょう。

SBoudrias/Inquirer.js