SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Windows Azure新機能チュートリアル

Windows AzureでNode.jsを実行しよう

Windows Azure 新機能チュートリアル(12)


プロジェクト構成確認

 Webロールを追加したところで、NodeSampleプロジェクト全体のフォルダ構成を確認してみましょう(リスト3)。

リスト3 プロジェクト構成物の一覧
C:\NODE\NODESAMPLE                     アプリケーションルート
│  deploymentSettings.json            配置設定ファイル 
│  ServiceConfiguration.Cloud.cscfg   (1)
│  ServiceConfiguration.Local.cscfg   (1)
│  ServiceDefinition.csdef            (2)
│
└─WebRole1                           Webロールフォルダ
    │  server.js                      (3)
    │  Web.cloud.config
    │  Web.config
    │
    └─bin                            (4)
            iisnode.msi
            node.exe
            setup_web.cmd
            vcredist_x64.exe

 (1)はサービス構成ファイル、(2)はサービス定義ファイルと呼ばれるWindows Azureの環境設定に必要なファイルです。例えば、インスタンス数など設定を行うことができます。

 (3)は、既定で実行されるNode.jsのスクリプトです(リスト4)。

 (4)のbinフォルダ配下には、IIS上でNode.jsを実行するために必要なファイルが格納されています。現在同梱されているnode.exeのバージョンは、v0.6.10となっています。

 リスト4は、自動生成されたserver.jsのコードです。簡易HTTPサーバーを起動しています。

リスト4 server.js
var http = require('http');
var port = process.env.port || 1337;
http.createServer(function (req, res) {
    res.writeHead(200, { 'Content-Type': 'text/plain' });
    res.end('Hello World\n');
}).listen(port);

 1行目のrequire('http')で標準のHTTPモジュールを取り込んでいます。2行目は、環境変数からHTTPサーバーを起動するポート番号を取得します。3行目以降は、createServerメソッドでHTTPサーバーを作成し、listenメソッドでHTTPサーバーを起動します。

 createServerメソッドに指定された関数は、リクエストがあった場合に呼ばれるコールバック関数です。常に、「Hello World」を返却する実装になっています。

補足:Node.jsでのWorkerロール

 Workerロールの作成は、Add-AzureNodeWorkerRoleコマンドレットで行います。SDK for Node.jsでのWebロールとWorkerロールの違いは、前者はIIS環境下でNode.jsが実行されますが、後者はNode.jsが直接実行されます。

 IIS環境下で実行されると、リソース管理などでいくつかのメリットを享受できます。ただし、WebSocketは利用できないため、Workerロールによる直接実行が必要になります。IISによるWebSocketのサポートは、IIS 8が予定されています。

Windows Azureエミュレーターでの実行

 Windows Azure エミュレーター(以降、エミュレーター)は、開発環境上でWindows Azureの疑似実行環境を提供するものです。

 エミュレーターには、コンピュートエミュレーターと、ストレージエミュレーターがありますが、今回はコンピュートエミュレーターのみ使用します。

[1]エミュレーターを起動する

 Start-AzureEmulatorコマンドレットを実行し、Nodeアプリケーションをエミュレーター上で実行します(リスト5)。-Launch引数を指定すると、エミュレーター起動後に自動でブラウザが開きます。

リスト5 エミュレーターの起動
PS C:\node\NodeSample> Start-AzureEmulator -Launch

 エミュレーターが起動すると、図6のようにタスクトレイに表示されます。ここでは説明を省略しますが、タスクトレイアイコンのメニューからエミュレーターコンソールを表示させ操作できます。

図6 エミュレーターの起動
図6 エミュレーターの起動

 ブラウザが起動し、図7の画面が表示されればエミュレーター上で実行は成功です。

図7 エミュレーター上での実行結果
図7 エミュレーター上での実行結果

[2]エミュレーターを停止する

 エミュレーターを停止するには、Stop-Emulatorコマンドレットを実行します(リスト6)。

リスト6 エミュレーターの停止
PS C:\node\NodeSample> Stop-Emulator

 エミュレーターの起動と停止の様子は図8のとおりです。

図8 エミュレーターの起動、停止
図8 エミュレーターの起動、停止
補足:エミュレーターでの不具合

 2回目以降にエミュレーターを起動した場合、エラーダイアログが表示される場合があります。そのような場合は、エミュレーターを停止させ、リスト7のコマンドを入力し、「WebRole1\server.js.logs」フォルダを削除してから再実行してください。

リスト7 ログファイルの削除
PS C:\node\NodeSample> del -Recurse .\WebRole1\server.js.logs

次のページ
まとめ

修正履歴

この記事は参考になりましたか?

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

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/6440 2012/03/14 16:43

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー