NodeSchoolに入学しよう!

コマンドライン引数

全333コースを10日間無料で

ぜひご覧ください。

無料で視聴する すべての加入プランを見る
または
process.argvプロパティから、コマンドライン引数を受け取って処理する方法について学びます。
講師:
08:21

字幕

このレッスンでは "Node.js" のプログラムで コマンドライン引数を 扱う方法について学びます それではまず "learnyounode" ワークショッパーを 起動しましょう そして今回はこちらの "BABY STEPS" という 2番目の問題を解きます "Enter" を押してください 問題です コマンドライン引数というのは プログラムを実行した時に そのプログラムに対して 与えるパラメーターの事で 例えば "ls" コマンドでしたら この "ls Movies/" と実行すると この様に "Movies" ディレクトリの 中身が表示されますが この "Movies" の事を コマンドライン引数といいます "node" では自分自身に与えられた コマンドライン引数を見る為に こちらの "process.argv" というパラメーター プロパティですね こちらに配列が入っていて その配列の中に与えられた コマンドライン引数が全て入っています そのコマンドラインの "argv" について 1つ注意点があります その "argv" プロパティの1番目は 必ず "node" という 文字列が入っています これは自分自身を実行したプログラム つまり "node" という プログラムですね この名前を示しています そして2番目のパラメーターは 自分自身のスクリプトファイルのパス 絶対パスを示しています そして3番目以降のパラメーターに 実際に与えられた コマンドライン引数の値が入っています 実際にではこれを簡単なプログラムを書いて どういう事なのか確認してみましょう "program.js" そして "process" の "process" という変数は もう初期状態で "node" の環境ならば 使用する事が出来ます "argv" というプロパティでしたね これを "console.log()" で そのまま出力してみましょう この様に "console.log()" で 変数の中身を出力する事によって そのプログラムやAPIの挙動を 理解するのに凄く役に立つ事がありますので "console.log()" は 活用してみてください そしてファイルを保存して終了 そして "node" に対して 今自分が書いたプログラムの 変数名を与えて実行します するとこの様に 今何もコマンドライン引数を 与えないでプログラムを実行すると この様に1番目は "node" そして2番目の要素が 自分のスクリプトファイルの 絶対パスが記述されています そして今ここに表示されている様に コマンドラインパラメーターとして 与えられた値は 全て文字列として入って来ますので 足し算をする為にはこれを数値型に データを変更する必要があります データを変更する為には 例えばこの "1" という数字の文字列 これを変更したい場合には 整数型に変更した場合には "parsetInt()" メソッドを 使う事によって この様に スペルミスでしたね "parseInt" これで文字列を示す引用符が取れて 数値型に変更された事が分かります それから整数ではなくて浮動小数点数 少数として解釈したい場合には 例えば "1.12" などの文字列を与えると ちなみに "parseFloat" の場合は この2番目の奇数を示す パラメーターは不要です これで実行すると "1.12" という 数値型の変数に変更されました ちなみに変数の実際のデータ型が何なのか という事を具体的に確認したければ "typeof" という演算子を使います "typeof" 演算子に例えば 文字列 "aaaa" というものを 与えてあげると これは "string" 型である という事が文字列として帰って来ます これに "typeof" に例えば "1.12" などの数値を与えると この様に "number" 型である事が分かります 又 "typeof" に オブジェクトを与えてやれば この様に "object" と帰って来ますし 配列を与えれば 配列もまあ "object" の一種なので この様に "object" として帰って来ます さてでは先程の "parseFloat" をした結果は 何であるかを見てみると この様にちゃんと "number" 型に 文字列が変換されている事が分かります 又 "number" 型に変換する為の 別の書き方として "parseFloat" を 使用してもいいのですが この様に "Number" 型の コンストラクター関数を利用する事によって "1.12" という文字が 数値に変換されました こちらを使ってもいいです それでは皆さん このコマンドラインパラメーターで 与えられた数字を全て 足し合わせるプログラムを書いてみてください プログラムが書けたら答え合わせをする時には "learnyounode" と書いて "verify" と書いて 自分が書いたプログラムの ソースコードのファイル名を この様に与えて実行すればOKでした さて皆さん正解出来ましたでしょうか? それでは私の方で正解のプログラムコードを これから書いていきたいと思います "program.js" というファイルに 書いていきます それではまず合計値を出す為に ループをする必要がありますので ループの為の変数 "i" それから合計値を保存しておく為の変数 "total" という変数を作りましょう そしてループを回して ループは "process.argv" という要素の 2番目の要素から本当の値が入っている という事だったので 最初は "2" にしておきます それから "process.argv.length" パラメーター幾つ 与えられるか分かりませんので その数はループの回数を 固定で書く事は出来ません この" argv.length" を見て ループの回数を決めます それから "i++" で "i" を序所に増やしていき そして "total" には 合計値を入れるのですが 最初は "0" で初期化しておきます そしてその "total" 最初は "0" で初期化された値に対して "+=" で値をどんどん足していくんですが その時に "argv" この中には文字列で数字が入っていますので それを足し合わせる為に 数字型に変更してやる必要があります その為には "Number" コンストラクターを使って "process.argv[i]" を取得して それを足し合わせていく そしてその最終結果は "console.log()" に 出力するという問題でした では実行をしてみましょう "learnyounode" の "verify" の "program.js" 正解出来るでしょうか? この様に正解でしたので "PASS" と表示されました そして正解するとこの様に 参考の正解のコードがここに書かれます 偶然ですが 私が書いたコードと殆ど同じでしたね 難しい問題になってくると コードの書き方は多様になるので 正解と必ずしも 全く同じコードの書き方になるとは限りません このレッスンでは "Node.js" のプログラムから コマンドラインパラメーターを 利用する方法について学びました

NodeSchoolに入学しよう!

NodeSchoolワークショッパーとは、オープンソースで開発されているNode.jsやJava Scriptについて学ぶためのクイズ形式のアプリケーションです。このコースでは、learnyounodeとexpressworksという2つのワークショッパーを通じてNode.jsとExpress.jsの基本的な使い方を学びます。

3時間13分 (24 ビデオ)
現在、カスタマーレビューはありません…
 
ソフトウェア・トピック
Node.js Node.js 0.10.24
価格: 3,990
発売日:2015年04月07日

このコースは、「オンデマンド」でご利用可能であり、ダウンロードすることもオンラインで見ることもできます。

ダウンロードすると、オフラインでコースを使用し、豊富なインターフェースをフルに活用できます。複数のデバイスを使用したり、 一度に全コースをダウンロードしたくない場合は、アカントにログインして、ストリーミング・ビデオとしてコースのレッスンを視聴してください。

ビデオトレーニングをお楽しみいただけますように! お問い合わせは、cs-jp@lynda.com宛までご連絡ください。