IBM Bluemix 上の Node.js ランタイムアプリを効率的にデバッグしたり、コンソール画面にアクセスする方法を紹介します。

まずは Bluemix 上にデバッグ&コンソールアクセスの対象とする Node.js のランタイムアプリケーションを作成します:
2016042401


ここではアプリ名を dotnsf-nodejs-debug と設定したと仮定して以下を続けます。実際の名前に置き換えて読み替えてください:
2016042402


Bluemix 上のランタイムアプリをデバッグおよびコンソールアクセスするには、このランタイムの環境変数を設定します。ユーザー定義環境変数を1つ追加します:
2016042403


環境変数名は BLUEMIX_APP_MGMT_ENABLE 、その値に devconsole+shell+inspector を指定して保存します。ちなみに devconsole を追加することで(この後にアクセスする)管理用ポータル画面が有効になります。そこから呼ぶためのシェル(shell)とデバッガ(inspector)の両方を有効に指定しています。シェルだけが必要であれば inspector は指定しなくても構いません:
2016042404


そしてランタイムを再ステージングすると、管理ポータルが有効になります:
2016042405

管理ポータルにアクセスする前に一度アプリケーションの挙動を確認しておきます。ランタイムが稼働中であることを確認し、また少し多めにメモリを割り振っておきます(図では 512MB)。そしてランタイムの URL にアクセスします:
2016042507


Node.js の標準ランタイムでは "Hi there" というメッセージが単純に表示されます。これが初期状態の画面ということを確認しておきましょう(後で直接書きなおして変更します):
2016042407



再ステージング完了後、ブラウザで以下の URL にアクセスします:
(元のランタイムの URL)/bluemix-debug/manage/


Basic 認証のダイアログが表示されるので、自分の Bluemix ID とパスワードを指定します:
2016042501


正しく認証が行われると、管理ポータルの画面が表示されます。ここからシェルやデバッガーにアクセスできます。では最初にシェルにアクセスしてみましょう。"Open Shell" と書かれたボタンをクリックします:
2016042502


すると新しいタブが開き、bash が起動したシェルが動いているはずです(動いていない場合は "+NEW WINDOW" と書かれたボタンをクリックして開きます):
2016042503


この画面は bash のシェル画面なので普通に標準コマンドが動きます。例えば "ls" 入力すると、カレントディレクトリのファイル一覧が表示されます:
2016042504


では試しにこの場でファイルを編集してみましょう。コマンドラインで以下のように指定して、vi で public/index.html ファイルを開きます:
$ vi public/index.html


vi 内で適当にファイルを編集して保存します。以下の例では "Hi there" と書かれていた部分を "Hello there" に書き換えています:
2016042505


こうして改めてランタイムにアクセスすると、画面内の表示が書き換わっていることが分かります。再デプロイや再ステージングなしにファイルを書き換えることができました:
2016042506


もう1つのデバッガの方も試してみましょう(こちらは FireFox ではなく Chrome 限定で使える機能です)。Chrome ブラウザで管理ポータルを開き、"Open Debugger" と書かれたボタン部分をクリックします:
2016042501

するとデバッガっぽい画面が表示されます。ここで JavaScript にブレークポイントを指定したり、変数の値を確認したりすることができるようになります:
2016042502


ブレークポイント設定は JavaScript コードの一部をマウスでクリックします。これでブレークポイントが設定できました:
2016042503


開発ポータルの画面で、該当アプリをサスペンドします:
2016042505


サスペンド後にデバッグ画面を見るとデバッグモードになっています。下図赤枠の部分をクリックして、デバッグモードで起動します:
2016042506


すると指定したブレークポイントまで実行されてコードが止まります。画面右ペインを見ると、この時点での変数とその値が一覧で表示されているはずです。この例では appEnv 変数を取得する行にブレークポイントを設置しているので、止まったこの時点ではまだ appEnv 変数は undefined と表示されています。下図赤枠部分(さっきの隣のボタン)をクリックして、一行だけ実行してみましょう:
2016042507


一行先に進み、appEnv 変数が設定され、その中身を確認することができるようになりました:
2016042508



以上、簡単にですが、Bluemix 上の Node.js ランタイムでシェルコンソールを使ったり、デバッガを使ったりする方法を紹介しました。詳しくはこちらのドキュメントも参照ください:
https://console.ng.bluemix.net/docs/manageapps/app_mng.html#app_management