ダウンロード サンプルファイル (2.4 KB)
ファイル名を指定しての実行
次にスクリプトをファイルに保存して実行してみます(図2)。通常は、このような形で利用することのほうが多いでしょう。
実行したスクリプトはリスト2です。日本語を含む場合は、文字コードをUTF-8にして保存してください。Shift JISなどはサポートされていません。
// (1)フォーマット 指定することも可能
console.log('こんにちは世界');
var j = { name : 'foo' , age : 29 };
console.log('%s %d %j', j.name, j.age, j);
// (2)スクリプトのファイル名、フォルダ
console.log(__dirname);
console.log(__filename);
// (3)コマンドライン引数
process.argv.forEach(function(val, index, array) {
console.log(val);
});
(1)のように、C言語のprintfのようなフォーマットを指定して出力することも可能です。以下のフォーマットが利用可能です。
- %s - 文字列
- %d - 数値(整数、浮動小数点)
- %j - JSON形式
(2)のようにconsole以外にも、__dirname/__filenameといったグローバルオブジェクトが登録されており、これらを利用することもできます。
(3)のprocessも同じくグローバルオブジェクトです。配列argvには、起動時に渡された引数が格納されています。この例では、配列が持つforEach関数によってすべての内容を表示しています。
下表にconsoleオブジェクトに定義された代表的な関数名を示します。
| 関数名 | 概要 |
| log(object, [arg], [...]) | 改行付きで標準出力へ出力します。 |
| info(object, [arg], [...]) | logの別名です。 |
| warn(object, [arg], [...]) | 改行付きで標準エラー出力へ出力します。 |
| error(object, [arg], [...]) | warnの別名です。 |
| dir(object) | オブジェクトを文字列化し、標準エラー出力へ出力します。 |
| trace() | 現在のスタックトレースを標準エラー出力へ出力します。 |
| assert(value, [message]) | アサートです。式がfalseならば現在のスタックトレースを出力します。 |
非同期処理の確認
Node.jsは元々スケーラブルなネットワークアプリケーションを開発するために構築されました。スケーラビリティを実現するためにはいくつかの方法がありますが、Node.jsはシングルスレッド、非同期処理というアプローチを採用しています。ここでは、その非同期処理について簡単に説明します。
前述の例では、Node.jsの特徴である非同期処理の例が見て取れませんが、以下のリスト3のサンプルを実行するとその一端が垣間見えます。
// コールバック関数
function callback(i) {
console.log('callback = %d', i);
}
// 100回 コールバック関数を呼び出すようにスケジュールする
for(var i = 1; i < 100; i++) {
setTimeout(callback, 0, i);
}
setTimeout関数は、第2引数で与えたられた時間(ミリ秒)が経過したあとに、第1引数のコールバック関数が1度だけ呼ばれるようにスケジュールします。第3引数以降は、コールバック関数に渡す引数となります。
リスト4の例では、callback関数を0ミリ秒後(すなわち直ち)に、変数iを引数に呼び出すように指示しています。
この実行結果を確認してみましょう(図3)。
実行する環境によってばらつきはあると思いますが、1から順に出力されないことが確認できます。Node.jsはコールバック関数が呼び出されるタイミングや順序を保証していないためこのようになります。順序性を保証したい場合は、コールバック関数の中で次の処理を実行する必要があります。次節ではファイルの操作を行いながら、この点について確認していきます。
この記事は参考になりましたか?
- Windows Azure新機能チュートリアル連載記事一覧
- この記事の著者
-
山田 祥寛(ヤマダ ヨシヒロ)
静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるLaravel実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数。
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
-
WINGSプロジェクト statemachine(statemachine)
<WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。 2026年時点での登録メンバは約50名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書、記事多数。 RSS X: @WingsPro_info(公式)、@WingsPro_info/wings(メンバーリスト) Facebook
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
この記事は参考になりましたか?
この記事をシェア


