こんにちは。ディレクターのエリカです。
Node.jsという言葉を聞いて「何となくはわかるけど、実際にどんなものか触ったことがない」という初心者の方に向け、チュートリアル用モジュール「learnyounode」でエクササイズをしていくコーナーの第2回目です。
前回はコンソール(標準出力)に「HELLO WORLD」と表示するプログラムを書きましたが、今回は合計値を計算しコンソールに出力をしていきます。
Node.jsを勉強したいと思っている人のキッカケや第一歩になれば幸いです。それでは早速はじめていきましょう。
BABY STEPS(Exercise 2 of 13)
「learnyounode」のインストールがまだの方は、こちらからどうぞ。
問題
コマンドラインの引数として与えられた、1つもしくは2つ以上の数字の合計を計算し、コンソールに出力してください。
ヒント
コマンドラインの引数には、processオブジェクトからアクセスできます。argvというプロパティに、コマンドを含めた配列で格納されています。process.argvですね。
まず最初に、このprocess.argvの中身を確認してみてください。
console.log(process.argv)
このようなプログラムを作成し、以下のようにいくつかの数字を引数に指定して実行してみます。
$ node program.js 1 2 3
[ 'node', '/path/to/your/program.js', '1', '2', '3' ]
このような感じで表示されたかと思います。実行したコマンドが、そのまま配列化されていますね。
数字の部分のみをループさせる方法
では次に、どのようにして数字の部分のみをループさせればよいでしょうか?
この場合ですと、1つ目および2つ目が「node」、「プログラムへのパス」になりますから、3つ目(インデックスでいえば2ですね)からはじめて、最後まで加算していけばいいかと思います。
もう1つ、数字と言いましたが、process.argvの要素は文字列として設定されてしまっています。従って、数字として扱うようにする必要がありますね。Number()を利用したり、+のプレフィクスを利用しましょう。実際に動かしてみる場合についてですが、learnyounodeが自動で引数を割り当てます。従って、いつものように learnyounode verify program.js を実行するだけで大丈夫です。また、テストの場合でも learnyounode run program.js と、実行すれば、自動で引数を割り当ててくれます。
解答
$ learnyounode verify program.js
ランダムで引数が設定され、その合計値が正しく出力されているかの判定が行われます。
解答例としては、以下のようになります。
var result = 0 for (var i = 2; i < process.argv.length; i++) result += Number(process.argv[i]) console.log(result)
ループの手法はいろいろありますが、ここではインデックス2からはじめ、配列の最後までを繰り返し、それぞれの要素をNumber()で数値化させ、加算させていってますね。
まとめ
いかがでしたでしょうか?
まったくプログラムに触れたことがなかった人は難しく感じるかと思いますが、手を動かしているうちになんとなく分かってくるのではないでしょうか。
クリアにならなかった場合は、プログラムを修正し、再度答え合わせのコマンドを実行してください。何度でも繰り返して、クリアになるまで頑張ってみましょう。
次回は、ファイルの読み込み(同期)「MY FIRST I/O!」に挑戦します。それでは、また!
【「learnyounode」エクササイズシリーズ】
- Node.js完全初心者向けチュートリアル用モジュール「learnyounode」を使ってみよう
- Node.js完全初心者のための、合計値を計算し、コンソールに出力する方法
- Node.js完全初心者が、ファイルを同期で読み取り、行数をコンソールに出力する方法
- Node.js完全初心者が、ファイルを非同期で読み取り、行数をコンソールに出力する方法
- Node.js完全初心者が、ディレクトリを非同期で読み取り、ファイルをコンソールに出力する方法
LIGはWebサイト制作を支援しています。ご興味のある方は事業ぺージをぜひご覧ください。