...

IBM Bluemix ハンズオン・セミナー 1 © 2015 IBM Corporation

by user

on
Category: Documents
20

views

Report

Comments

Transcript

IBM Bluemix ハンズオン・セミナー 1 © 2015 IBM Corporation
IBM Bluemix
ハンズオン・セミナー
1
© 2015 IBM Corporation
ハンズオンの内容
0. 事前準備
1. Bluemixの基本操作
データベース・サービスを使用したアプリケーション実行環境の構築
2. クラウド上でのアプリケーション開発
IBM DevOps Servicesを使用した開発とデプロイ
3. Buildpack を使用した言語環境の拡張
オープン・コミュニティのBuildpackの活用
4. Internet of Thingsアプリケーションを作成する
センサーからのデータをプログラミングレスで利用
5. Node.js アプリケーションからSQL Database を利用する
サンプル・プログラムのデプロイと実行
2
© 2015 IBM Corporation
IBM Bluemix
ハンズオン・セミナー事前準備
1. Bluemix利用登録
2. DevOps Service連携
3. Cloud Foundry CLI 導入
3
© 2015 IBM Corporation
1. IBM Bluemix 利用登録
 http://ibm.biz/BMtrial にアクセスします。
 ガイドに従ってサインアップします。
登録したアドレスに IBM Bluemixよりメールが
届きます。
メール本文内のリンクをクリックすることでア
カウントの有効化が行われます。
必ずこのステップを実施し、Bluemixに ログ
イン できることを事前に確認ください。
4
© 2015 IBM Corporation
2. DevOps Servicesへの登録 (1)
 https://hub.jazz.net にアクセスします。
表示された画面で「Sign up for free」
をクリックします。
 「Log in to start using DevOps
Services.」をクリックします。
5
© 2015 IBM Corporation
2. DevOps Servicesへの登録 (2)
 Bluemixのサインアップ時に使用した
IBM IDとパスワードを入力し、「サイン
イン」をクリックします。
 IBM IDの別名(エイリアス)を作成します。
任意の文字列を入力し、「Finish」を
クリックします。
 「Success!」が表示されれば完了です。
6
© 2015 IBM Corporation
3. Cloud Foundry CLI 導入 (1)
コマンドベースでBluemixを操作するために、Cloud FoundryのCLI
(コマンドライン・インターフェース)を導入します。
 https://github.com/cloudfo
undry/cli
にアクセスします。
 下にスクロールし、「Downloads」セク
ションの「Stable Installers」から、環境
に合ったモジュールをダウンロードし、
導入します。
7
© 2015 IBM Corporation
3. Cloud Foundry CLI 導入 (2)
 cf コマンドが実行可能であることを確認します。
コマンドプロンプトで “cf “と実行するとコマンドのヘルプが表示されます。
cf コマンドが認識されない場合は、導入ディレクトリーにパスが通っているか
どうかを確認してください。
8
© 2015 IBM Corporation
[ハンズオン1]
Bluemixの基本操作
データベース・サービスを
使用したアプリケーション
実行環境の構築
9
© 2015 IBM Corporation
ハンズオン手順
 Bluemix へログイン
 アプリケーション実行環境の構築
 サービスの追加
 アプリケーション実行環境の詳細
10
© 2015 IBM Corporation
Bluemix へログイン
まず初めに、Bluemix にログインします。
Webブラウザを起動し、Bluemix にアクセスします。下記URLを入力します。
http://bluemix.net/
表示された画面右上の「ログイン」 をクリックします。
IBM ID、パスワードを入力して「サインイン」ボタンをクリックします。
ログインが成功すると Bluemix の
Dashboardが表示されます
11
© 2015 IBM Corporation
作業する地域を確認する
Bluemixは、「米国南部」と「英国」の2つの地域で稼動しています。
上部メニューの 「地域」 をクリックすることで、稼動する環境を選択することができます。
 今回は「米国南部」を利用します。地域が「米国南部」になっていることを確認してくだ
さい。
 「英国」になっている場合は、「地域」をクリックして、「米国南部」を選択してください
12
© 2015 IBM Corporation
[補足] 「米国南部」選択時のポップアップへの対応方法
米国南部を選択した際に、スペースを作成するように指示するポップアップ・ウィンドウが表
示された場合は、任意の名前を入力し、作成をクリックしてください。
本資料では
スペース名として
「dev」を使用します
13
© 2015 IBM Corporation
アプリケーション実行環境の構築 (1/3)
1.上部メニューの”カタログ”にて、作成するアプリケーションの実行環境を選択します。
ランタイム カテゴリから、Node.js による JavaScriptの実行環境を選択します。
2.アプリケーション名とホスト名を指定して“作成”ボタンをクリックします。
任意の名前を指定します。
重複しているとエラーに
なるのでユニークな名称を
指定してください
14
© 2015 IBM Corporation
アプリケーション実行環境の構築 (2/3)
3.上部メニューの”ダッシュボード”をクリックし、作成中のアプリケーションを選択します。
30秒ほどでインスタンスの作成および起動が完了します。
画面右端の “アプリの正常性” のステータスが赤色から緑色に変わり、
「アプリは稼動しています。」のメッセージが表示されたことを確認してください。
これだけの手順で Node.js の実行環境が構築できました。
“アプリの正常性” のステータスが変わらない場合は、
Web ブラウザのリロード (F5キー)をお試しください。
15
© 2015 IBM Corporation
アプリケーション実行環境の構築 (3/3)
4.それではサンプルとして用意されたスターター・アプリケーションを実行してみましょう。
アプリケーションの “経路: “のリンクをクリックすると、作成された Node.js 上で
JavaScript のスターター・アプリケーションが動いていることが確認できます。
16
この例では、http://WebApp001.mybluemix.net/にアクセスしています
© 2015 IBM Corporation
サービスの追加 (1/2)
1.上部メニューの “カタログ” をクリックし、カタログからアプリケーションと連携させたい
サービスを選択します。 ここでは、先ほど作成した Node.js の実行環境に
SQL Database(DB2) のサービスを追加してみましょう。
2.サービスを追加するアプリケーションを指定し、”作成”ボタンをクリックします。
(“アプリケーション”の選択” で先ほど作成したアプリ名を指定します。)
SQL Database のサービス名や
プランはデフォルトのままでOKです
17
© 2015 IBM Corporation
サービスの追加 (2/2)
3.アプリケーションの再起動(再ステージ)の確認があります。OKボタンをクリックします。
4.約20秒ほどでサービスの追加が完了します。
アプリケーションの “概要” 画面の下部に、SQL Database サービスが表示される
ことを確認してください。 たったこれだけの手順で、アプリケーションからデータベースが
使用できるようになりました。
“アプリの正常性” のステータスが変わらない場合は、
Web ブラウザのリロード (F5キー)をお試しください。
18
© 2015 IBM Corporation
アプリケーション実行環境の詳細 (1/4)
~リソースの動的追加
アプリケーションの “概要” の画面には、実行環境が使用するリソース情報が
表示されています。
ここで実行環境のリソース変更が可能です。
インスタンス : 3、メモリー : 384MB と指定して「保存」をクリックします。
再起動後、リソースが拡張されていることを確認してください。
19
© 2015 IBM Corporation
アプリケーション実行環境の詳細 (2/4)
~リソースの動的追加
左端のメニューから ”SDK for Node.js” を選択します。
ページ上部で CPU やメモリーの使用率など、インスタンスの詳細情報が確認できます。
先程インスタンスを増やしたので、リストには3行が表示されています。
今度はリソースの縮退を行ってみましょう。
インスタンス : 1、メモリー : 64MB と指定して「保存」をクリックします。
リソースは増やすだけでなく、減らすこともできることを確認してください。
※画面の切り替えがうまくいかない場合は、Web ブラウザのリロード (F5キー)をお試しください。
20
© 2015 IBM Corporation
アプリケーション実行環境の詳細 (3/4)
~ファイル/ログの参照
左端のメニューから ”ファイルとログ” を選択します。
実行環境のファイルシステム上にあるアプリケーション・ファイルやログ・ファイルを
参照したりダウンロードしたりすることができます。
※画面の切り替えがうまくいかない場合は、Web ブラウザのリロード (F5キー)をお試しください。
21
© 2015 IBM Corporation
アプリケーション実行環境の詳細 (4/4)
~環境変数の参照
”SDK for Node.js” ページの下部にて、実行環境に設定されている環境変数の
情報が確認できます。(環境変数を新しく追加することも可能です)
連携に必要となる情報は、自動的に環境変数にセットされるので、アプリケーションは
これらの環境変数の値を取得して、サービスにアクセスします。
SQLDatabase 接続の場合
IPアドレス, ポート番号, DB名,
username, password などが
環境変数としてセットされます。
Bluemix では、Web ブラウザからアプリケーション実行環境の構築やサービスのバインド、
様々な運用管理作業ができることを確認いただきました。 お疲れ様でした!
22
© 2015 IBM Corporation
[ハンズオン2]
DevOps Services を
使ったクラウド上での
アプリケーション開発
23
© 2015 IBM Corporation
IBM Bluemix DevOps Services概要
 IBM Bluemix DevOps Services (以下、IDS )は、パブリック・プロジェクトまたは
プライベート・プロジェクトにおいて、他のメンバーとコラボレーションを取りながらソフト
ウェアの開発が可能なクラウドベースのプラットフォームです。
 IDSには、アプリケーション開発に必要な以下の機能があります。
• アジャイルな計画立案と追跡 (TRACK & PLAN)
• Web IDE (Webブラウザ上でのソースコードの修正と管理)
• Git, Jazz SCM, GitHubを使用したソースコード管理 (SCM)
• Bluemixへの自動デプロイ (BUILD & DEPLOY)
24
© 2015 IBM Corporation
ハンズオンの概要
 このハンズオンでは、WebIDE(*)を使用し、IBM Bluemix DevOps Servicesに
公開されているアプリケーションに独自の編集を加え、Bluemix に push して実行
環境を自動作成する手順を体験していただきます。
公開
プロジェクト
プロジェクトの
取り込み
Node.js 実行環境の
作成 / モジュールの
配置 / URL 生成
プロジェクトの
保管
プロジェクトの
デプロイ
アプリケーション
の実行
アプリケーション
修正
修正
モジュールの
再デプロイ
アプリケーション
の再実行
※ WebIDE以外の機能をご紹介したdW記事について、参考資料1に記載しておりますので、ご参照ください。
25
© 2015 IBM Corporation
ハンズオン手順
 IDSに登録する
 IDS で公開されているプロジェクトを開く
 IBM Bluemix DevOps Services にログインする
 プロジェクトを保管する
 プロジェクトをデプロイする
 ソースコードを編集する
 編集結果を確認する
26
© 2015 IBM Corporation
IDSに登録する (1)
 https://hub.jazz.net にアクセスします。
表示された画面で「Sign up for free」
をクリックします。
 「ログインして DevOps
Services の使用を開始
してください。 」をクリック
します。
27
© 2015 IBM Corporation
IDSに登録する (2)
 Bluemixのサインアップ時に使用した
IBM IDとパスワードを入力し、「サイン
イン」をクリックします。
 IBM IDの別名(エイリアス)を作成します。
任意の文字列を入力し、「Finish」を
クリックします。
 「正常に終了しました。」が表示されれば
完了です。
28
© 2015 IBM Corporation
IDS で公開されているプロジェクトを開く
 IBM Bluemix DevOps Services 上の MemoApp1-Nodejs プロジェクトを開きます。
Webブラウザで http://ibm.biz/MemoApp にアクセスします。
xxxxxxxxxxxxxxxxx
IDS 上のNode.jsアプリケーション(*)のサンプル・プロジェクトが表示されます。
このコードを使って、IDS と Bluemix との連携を体験していただきます。
※ Node.jsについては、補足資料2をご参照ください
29
© 2015 IBM Corporation
IBM Bluemix DevOps Services にログインする
 画面上部の 「LOG IN」 をクリックします。
 IBM ID、パスワードを入力して「Sign in」ボタンをクリックします。
ログイン済み(LOGIN
ボタンが右上に表示さ
れない)場合、このペ
ージはスキップください。
30
© 2015 IBM Corporation
プロジェクトを保管する (1)
 画面右上の「EDIT CODE」をクリックします。
 プロジェクトをコピー(フォーク)します。左上の「FORK」 ボタンをクリックします。
31
© 2015 IBM Corporation
プロジェクトを保管する (2)
 任意のプロジェクト名を指定して「CREATE」ボタンをクリックします。
この例では MemoApp1-Nodejs という
プロジェクト名を指定しています
Make it privateにチェックを入れ、
Add features for Scrum
developmentのチェックを外し、
Make this a Bluemix Projectにチェック
を入れます。
デプロイ先として
-Region が US South、
-Organization に正しい IBM ID、
-Space に 作成したスペース名(dev)
が指定されていることを確認し、
「CREATE」をクリックします。
32
© 2015 IBM Corporation
プロジェクトを保管する (3)
 フォーク処理が完了し、自分のプロジェクトとして保管されました。
33
© 2015 IBM Corporation
プロジェクトをデプロイする (1) manifest.yml作成
 Bluemixにデプロイするために、manifest.ymlファイル(*)が必要となります。
 このプロジェクトには、manifest.ymlファイルが含まれていないため、新規作成しま
す。
 ファイル名は、「manifest.yml」と入力してください。
※ manifest.ymlには、作成するアプリケーション・インスタンスの数、アプリケーションに割り振るメモリー
量とディスク割り当て量、アプリケーションのその他の環境変数などのオプションが指定されます。詳細
は以下をご参照ください。
https://www.ng.bluemix.net/docs/#manageapps/index-gentopic2.html#appmanifest
34
© 2015 IBM Corporation
プロジェクトをデプロイする (2) manifest.yml作成
 manifest.ymlに以下のように記載し、保存します。
applications:
- name: MemoApp1-Nodejs-shimac00
disk_quota: 1024M
memory: 128M
host: MemoApp1-Nodejs-shimac00
domain: mybluemix.net
command: node app.js
path: .
instances: 1
35
host, nameが固有になるよう
“MemoApp1-Nodejs”に、
ご自身のユーザーIDなどを
付加してください
オプション
説明
name
Bluemix 内のアプリケーション名。 この値は Bluemix 環境で固有でなければなりません。
disk_quota
アプリケーションに割り振るディスク割り当て量。 デフォルト値は 1G です。
memory
アプリケーションに割り振るメモリー量。デフォルト値は 1G です。
host
Bluemix 内のアプリケーションのホスト名。 Bluemix 環境で固有でなければなりません。
domain
Bluemix 内のアプリケーションのドメイン・ネーム。
command
アプリケーションのカスタム開始コマンド
path
アプリケーションのロケーション。この値は相対パスまたは絶対パスとすることができます。
instances
アプリケーション用に作成するインスタンスの数。
© 2015 IBM Corporation
プロジェクトをデプロイする (3)
 Bluemixにデプロイしてみましょう。「 」ボタンをクリックします。
 デプロイが完了すると、「実動の実行中」と表示されます。
 アプリケーションを実行してみましょう。「 」ボタンをクリックします。
36
© 2015 IBM Corporation
プロジェクトをデプロイする (3)
 ブラウザにアプリケーションの画面が表示されます。
 次に、ソースコードを編集し、Versionの「1.0.0」という表示を「1.0.1」に変更して
みましょう。
37
© 2015 IBM Corporation
ソースコードを編集する (1)
 Versionは、「package.json」ファイルの「version」の値を表示しています。
• routes > index.js
• package.json
38
© 2015 IBM Corporation
ソースコードを編集する (1)
 「package.json」ファイルの「version」の値を、「1.0.0」から「1.0.1」に修正し、保
存します。(デフォルトでは、自動保存の設定が有効になっています)
• package.json
39
© 2015 IBM Corporation
ソースコードを編集する (2)
 編集済みのソースコードで、アプリケーションをデプロイしてみましょう。「 」ボタンを
クリックします。
 以下のメッセージが表示されます。「OK」ボタンをクリックします。
 しばらくすると、アプリケーションが稼動します。
40
© 2015 IBM Corporation
編集結果を確認する
 アプリケーションを実行してみましょう。「 」ボタンをクリックします。
 以下の通り、Versionが「1.0.1」と表示され、修正したコードが反映されていること
を確認してください。
Bluemix と IBM Bluemix DevOps Services との連携により、
クラウドを活用したクイックなアプリケーション開発/実行ができる
ことを確認しました。
お疲れ様でした!
41
© 2015 IBM Corporation
(参考) IDSのプロジェクトを削除する
1)画面右上の「
」ボタンをクリックします。
今回のハンズオンでは不要です
2)左ペインの 「DELETE」をクリックすると、右ペインが切り替わるので、
“DELETE”と入力し、「CONFIRM」をクリックします。これで完了です。
42
© 2015 IBM Corporation
参考資料1. IBM Bluemix DevOps Services
 以下のdW記事では、ハンズオンで体験いただいたWebIDEのほか、チーム開発で
必要となる作業をステップバイステップでご紹介していますので、ご参照ください。
• ソースコードのGitリポジトリー登録
• BUILD&DEPLOY
• TRACK&PLAN
Bluemix アプリケーションを IBM DevOps Services を利用してチーム開発する
http://www.ibm.com/developerworks/jp/cloud/library/j_cl-teamdev-bluemix-app/
43
© 2015 IBM Corporation
参考資料2. Node.js
 Node.jsは、スタンドアローンおよびサーバー・サイドで動作する JavaScript 言語
の実行環境です。イベント駆動、ノンブロッキング I/O モデルを採用しているという
特徴があり、大規模な同時接続が生じるようなネットワーク・アプリケーションにおい
て、優れたスケーラビリティーを発揮します。
 ハンズオンで使用したアプリケーションの開発方法をdW記事でご紹介しています
• 2 章 「アプリケーションの開発」 が該当します。3 章 「アプリケーションの拡張」
では、データ管理サービスのひとつである Cloudant NoSQL DB サービスを使
用するようにアプリケーションを拡張していますので、ぜひご参照ください
Bluemix 上で稼動する Web アプリケーション開発方法 - Node.js 編
http://www.ibm.com/developerworks/jp/cloud/library/j_cl-bluemix-nodejs-app/
44
© 2015 IBM Corporation
[ハンズオン3]
Buildpack を
使用した
言語環境の拡張
45
© 2015 IBM Corporation
Bluemix で提供されていない言語を使用するには
 現在の Bluemix のカタログには、Java や Node.js、Ruby といった言語の実行
環境が載っています。場合によっては、カタログに載っていない言語を使用する場
面もあるかもしれません。
 BluemixはオープンなPaaSである「Cloud Foundry(クラウド ファウンドリー)」を
ベースとしています。Cloud Foundryでは「ビルドパック」という仕組みで、任意の言
語の実行環境を構築することが可能です。この仕組みを利用し、カタログに載って
いない言語をBluemix上で使用できます。
46
© 2015 IBM Corporation
ビルドパック ~ ランタイム追加の仕組み ~
 任意のランライムに対するフレームワーク(実行基盤)を準備する仕組み
• Herokuで開発されたカスタマイズの仕組みで、Cloud Foundry V2で採用
• 必要なランタイムが不足している場合は、ビルドパックを自身で作成し、追加す
ることも可能
Java,
Node.js, Ruby
buildpackを指定しない場合は
内部でマッチング
cf push [-b buildpack]
アプリ
実行基盤
アプリ開発者
PHP, Python,
Go, etc…
Container
必要なランタイムがCloud Foundry上にな
い場合は、Git URLを指定し、追加
47
Bluemix / Cloud Foundry
GitHub等で公開
© 2015 IBM Corporation
ハンズオン概要
 このハンズオンでは、このような Bluemixでは標準で用意されていない言語を使用
する方法について学びます。単純なHTMLファイルを表示するために、ビルドパック
を使って、軽量なWebサーバーであるnginxをBluemix上で動かしてみます。
 要件に応じて任意の言語を扱えるBluemixの柔軟性を体感してください!
 なお、これまでのハンズオンでは、Webインターフェースを使ってBluemixを操作して
きました。今回のハンズオンでは、コマンドラインインターフェース(CLI)を使用します。
nginx ビルドパック
Cloud Foundry CLI
HTMLファイル
デプロイ指示
48
nginx 環境
+アプリ
HTMLファイル
プロジェクトの
デプロイ
アプリケーション
の実行
© 2015 IBM Corporation
ハンズオン手順
 ビルドパックによる言語環境の拡張を理解する
 コマンドライン・インターフェース (CLI) を導入する
 コマンドラインでBluemixにHTMLファイルをデプロイする
 デプロイしたHTMLファイルを確認する
49
© 2015 IBM Corporation
ビルドパックによる言語環境の拡張を理解する(1)
 Bluemix上にnginxの環境を作るには、 nginxのビルドパックを使います。
 ビルドパックはどこにあるのでしょうか?
Cloud Foundry のコミュニティが作成した、たくさんのビルドパックが GitHub という
サイトで公開されています。 これを利用しましょう。
なお、GitHub とはソフトウェア開発プロジェクトのための共有サービスです。
ソースコードや仕様情報などプロジェクトの様々な成果物が保管され、管理されて
います。 それでは実際にnginxのビルドパックを探してみましょう。
50
© 2015 IBM Corporation
ビルドパックによる言語環境の拡張を理解する(2)
 GitHub の Cloud Foundry コミュニティにアクセスしてみましょう。
Bluemix のカタログのランタイムから、「ビルドパックの持込み」を選択します。
 「ビルドパックの持込み」のダイアログボックスが表示されます。
「既知の Cloud Foundry 互換ビルドパックの表示」のリンクをクリックします。
51
© 2015 IBM Corporation
ビルドパックによる言語環境の拡張を理解する(3)
 GitHub の Cloud Foundry コミュニティにアクセスしました。
GitHubには様々なビルドパックが公開されていることを確認してください。
52
© 2015 IBM Corporation
ビルドパックによる言語環境の拡張を理解する(4)
 GitHubで公開されているnginxのビルドパックを探します。 ブラウザで「staticfile」
を検索し、https://github.com/cloudfoundry-community/staticfile-buildpack
のリンクをクリックします。
• nginxというビルドパックも存在しますが、廃止予定のためstaticfileを使用します
 staticfileのビルドパックのプロジェクトが表示されます。後程この URL を使用する
ので、Web ブラウザはそのままにしておいてください。
53
© 2015 IBM Corporation
コマンドライン・インターフェース (CLI) を導入する (1)
コマンドベースでBluemixを操作するために、Cloud FoundryのCLI
(コマンドライン・インターフェース)を導入します。
 https://github.com/cloudfo
undry/cli
にアクセスします。
 下にスクロールし、「Downloads」セク
ションの「Stable Installers」から、環境
に合ったモジュールをダウンロードし、
導入します。
54
© 2015 IBM Corporation
コマンドライン・インターフェース (CLI) を導入する (2)
 cf コマンドが実行可能であることを確認します。
コマンドプロンプトで “cf “と実行するとコマンドのヘルプが表示されます。
cf コマンドが認識されない場合は、導入ディレクトリーにパスが通っているか
どうかを確認してください。
55
© 2015 IBM Corporation
コマンドラインでHTMLファイルをデプロイする(1)
 Windows のコマンド・プロンプトを起動します。Windows のスタートメニュー、
もしくはデスクトップのショートカットから起動します。
 作業用に新しく空のディレクトリを作成します。(C:¥Bluemix)
 作成したディレクトリに移動し、HTMLのサンプルファイル(index.html)をエディタ
ーで作成します。コマンドプロンプトから、以下のようにコマンドを実行してください。
C:¥Bluemix>notepad index.html
 エディター(メモ帳)が起動します。
“Hello! Bluemix World!!”と表示される
簡単なHTMLファイルです。
作業用ディレクトリには
他のファイルを置かない
ようにします
<h1>Hello Bluemix World!</h1>
これを Bluemix にデプロイしてみます。
56
© 2015 IBM Corporation
コマンドラインでHTMLファイルをデプロイする(2)
 Bluemix を操作するには、cf コマンドを使用します。
 IBM ID とパスワードで Bluemix にログインします。
C:¥Bluemix>cf login –a https://api.ng.bluemix.net –u (IBM ID) –p (パスワード)
 HTMLファイルをデプロイします。
C:¥Bluemix>cf push (アプリケーション名) –b (ビルドパックのURL) –m 64M
• ここで指定するアプリケーション名は、デフォルトではBluemix上に作られる仮想
サーバーのホスト名を兼ねています。 名前が重複するとデプロイに失敗しますの
で、「nginx+任意の文字列」と指定してください。(下記の例参照)
• ビルドパックのURLは、先程Webブラウザで開いたGitHubのstaticfileビルドパッ
クの URL を指定します。 コピー&ペーストしてください。
(例) cf push nginx20150305abc -b https://github.com/cloudfoundry-community/staticfile-buildpack -m 64M
57
© 2015 IBM Corporation
デプロイしたHTMLファイルを確認する(2)
 Bluemix のダッシュボード画面に、今デプロイしたアプリケーション「nginxXXX」が
表示されています。 シグナルが赤から緑に変わればデプロイは完了です。
 「nginxXXX」のURLリンクをクリックして、サンプルのHTMLファイルが表示されるこ
とを確認してください。
58
© 2015 IBM Corporation
参考資料1. ビルドパックを利用したその他のサンプル
 統計処理用の言語であるRを使用して、Twitterのセンチメント分析のサンプルアプ
リケーションに関する記事がdeveloperWorksに公開されています。
 ご興味がありましたら、以下のURLのリンク先をご参照いただき、サンプルアプリケー
ションを動かしてみてください。
• http://www.ibm.com/developerworks/jp/analytics/library/ba-rtwitter-app/
59
© 2015 IBM Corporation
(参考)デプロイしたアプリケーションとサービスを削除する
 不要なアプリケーションとサービスを次の手順ですべて削除します。(質問のためなどで、
とっておきたい場合は削除しなくても構いません。)
 Bluemix のダッシュボード画面に、デプロイしたアプリケーションとサービスが表示されて
います。 緑色の歯車のアイコンをクリックし、”アプリの削除”を選択します。
 アプリケーションと同時に、関連するサービスを削除するか聞かれる場合は、チェックを
入れ、同時に削除します。
ハンズオン5を行われ
る方は、ハンズオン1
の環境を消さないでく
ださい。
60
© 2015 IBM Corporation
[ハンズオン4]
Internet of Things
アプリケーションを
作成する
61
© 2015 IBM Corporation
ハンズオン手順
 ボイラープレートでアプリケーションを作成する
 Node-RED で IoT アプリを作成する
 デプロイされたアプリケーションを確認する
62
© 2015 IBM Corporation
ハンズオンの概要
 Internet of Thingsのボイラープレート(後述)を使用して、クラウド
上のセンサー・シミュレーターのデータを活用します。
 ボイラープレートに含まれるNode-REDというツールを用いて、セン
サー・データ(温度、湿度など)を活用する IoT アプリをノンプログラミ
ングで作成します。
センサー・
シミュレーター
63
© 2015 IBM Corporation
ボイラープレートでアプリケーションを作成する (1)
 Bluemix には予めランタイムやサービスを組み合わせたボイラープレート という
テンプレートが用意されています。
これを利用することで、簡単に Bluemix アプリケーションを開発することができます。
 Bluemix の カタログメニューにボイラープレートを確認してください。
各ボイラープレートをクリックすると、それがどのランタイム、サービスを組み合わせたものか
説明されています。
64
© 2015 IBM Corporation
ボイラープレートでアプリケーションを作成する (2)
 Internet of Things Foundationをクリックします。このボイラー
プレートは、以下のコンポーネントから構成されていることが分かります。
- SDK for Node.js
- Cloudant NoSQL DB
 次のように入力し、 「作成」ボタンをクリックします。
名前: iotsample+末尾に任意の文字列
ホスト: 上記の名前がコピーされる
65
© 2015 IBM Corporation
ボイラープレートでアプリケーションを作成する (3)
 左上の、「ダッシュボードに戻る」をクリックします。
 ダッシュボードに iotsample アプリケーションと Cloudant NoSQL DB のサービスが追
加されることを確認します。
 iotsample アプリケーションの状態が青信号になるのを待ち、右下のリンク・アイコンをクリ
ックします。
66
© 2015 IBM Corporation
Node-RED で IoT アプリを作成する (1)
 Node-RED のページが表示されます。「Go to your Node-RED flow editor」ボタン
をクリックし、Node-RED フロー・エディターを起動します。
 IoT (Internet of Things) は家電、自動車、ウェラブル・デバイスなどあらゆる「モノ」を
インターネットに接続し、お互いに情報をやりとりすることで新しい価値を生み出す概念
です。Node-RED は、IoT のフローを構築するためのビジュアル・ツールで、開発したシ
ステムを簡単に Bluemix にデプロイすることが可能になっています。ここでは、温度セン
サーにより取得したデータによって処理を変えるような IoT システムを作成していきます
。
クリック
67
© 2015 IBM Corporation
Node-RED で IoT アプリを作成する (2)
 ここでは、Node-REDで接続するセンサーの情報を取得します。
 Webブラウザーの新しいタブを開き、 ibm.biz/IoTsensor に接続します。
IoT Sensorは、IoT Cloud に接続するデバイスをエミュレートし、気温、湿度、
物体温度の情報を発信 (publish) することができます。
 右上に当デバイスの MAC アドレスが表示されるので、メモしておきます。
タブは開いたままにして
おいてください。後ほど
使用します。
68
© 2015 IBM Corporation
Node-RED で IoT アプリを作成する (3)
 Node-REDフロー・エディターによって、IoT アプリの処理フローを定義します。
 サンプルのフローが以下のようにあらかじめ定義されているため、それらを削除してからハ
ンズオンをすすめます。フローの削除は、マウスでシフトキーを押しながら全ノードを選択
し、キーボードの Delete ボタンを押します。
69
© 2015 IBM Corporation
Node-RED で IoT アプリを作成する (4)
 先ず、温度データの入力元である IoT Sensor のノードを定義します。左のパレットの
inputs:ibmiot を中央のキャンバスにドラッグドロップし、ダブルクリックします。
 Edit ibmiot in node のダイアログ・ボックスで以下のように入力します。
Authentication: Quickstart
Input Type: Device Event
Device Id: xxxxxxxxxxx
(ここで、xxxxxxxxxxxは IoT Sensor の MAC アドレスを小文字にしてコロンを削除し
た文字列)
Name: IoT Sensor
「Ok」ボタンをクリックします。
70
© 2015 IBM Corporation
Node-RED で IoT アプリを作成する (5)
 次に、IoT Sensor のデータから温度データを取り出す function ノードを定義します。
 パレットの functions:function をキャンバスにドラッグドロップし、ダブルクリックします。
 Edit function node のダイアログ・ボックスで以下のように入力します。
Name: temp
Function: return {payload:msg.payload.d.temp};
「Ok」ボタンをクリックします。
 IoT Sensor と temp をマウスでつないでリンクします。
71
© 2015 IBM Corporation
Node-RED で IoT アプリを作成する (6)
 次に、温度データの条件分岐を指定する switch ノードを定義します。
ここでは、温度40度以下と40度超で分岐するよう設定します。
 パレットの functions:switch を中央のキャンバスに
ドラッグドロップし、ダブルクリックします。
 Edit switch node のダイアログ・ボックスで以下のように入力します。
Name: temp thresh
分岐条件に以下のようになるように追加
( +rule ボタンをクリックして追加):
if msg.payload
<= 40
>
40
「Ok」ボタンをクリックします。
 temp と temp thresh をリンクします。
72
© 2015 IBM Corporation
Node-RED で IoT アプリを作成する (7)
 次に、条件ごとの処理を指定する template ノードを定義します。ここではメッセージ出
力をそれぞれ設定します。
 パレットの functions:template を2つ、キャン
バスにドラッグドロップします。
 1つ目のEdit template node の
ダイアログ・ボックスをダブルクリックし
以下のように入力します。
Name: safe
Template:
Temperature ({{payload}}) within safe
limits
「Ok」ボタンをクリックします。
 2つ目のEdit template node のダイアログ・ボックスには以下のように入力します。
Name: danger
Template: Temperature ({{payload}}) critical
「Ok」ボタンをクリックします。
 右図のようにリンクします。
73
© 2015 IBM Corporation
Node-RED で IoT アプリを作成する (8)
 最後に、処理結果をモニター出力するための debug ノードを定義します。
 パレットの outputs:debug をキャンバスにドラッグドロップし、
ダブルクリックします。
 Edit debug node のダイアログ・ボックスで以下のように入力します。
Output: message property を選択
to: debug tab
Name: cpu status
「Ok」ボタンをクリックします。
 template と cpu status を右図のようにリンクします。
74
© 2015 IBM Corporation
Node-RED で IoT アプリを作成する (9)
 これまでのステップで下図のようなフローができあがります。右上の「Deploy」ボタンをクリッ
クし、アプリケーションをデプロイします。上部に “Successfully deployed” と表示されれ
ば、Bluemix へのデプロイは成功です。
 右側のサイドバーを debug タブに切り替えます。(必要に応じ、右側にウィンドウが表示
されるよう操作します)
75
© 2015 IBM Corporation
デプロイしたアプリケーションを確認する
 別タブで開いておいたIoT Sensor の矢印ボタンをクリックし、温度を変更します。
 IoT Sensor の温度が debug タブに出力され、40度以下のときは、”Temperature
(xx) within safe limits” と出力されることを確認します。
 IoT Sensor の温度を上げて、40度を超えると “Temperature (xx) critical” と出力さ
れることを確認します。
76
Node-RED を使いビジュアルにインターネット上のデバイスをワイヤリングし、Bluemix の
node.js 上にデプロイする手順を確認しました。お疲れ様でした!
© 2015 IBM Corporation
IoTアプリの拡張を考える
ハンズオンではモニター用に画面出力し稼動を確認するまでにとどめていますが、
Node-RED を使用して様々に変更することが可能です。
Input/outputを組み合わせ、特定の条件を満たすデー
タを受け取ったら、担当者に通知するといったものから、コ
ーディングを追加してより高度なものにすることも可能で
す。
詳細は以下のサイトをご覧ください。
http://nodered.org/docs/
チュートリアル
Arduino Uno と IBM IoT Foundation を利用してクラ
ウド対応の温度センサーを作成する(全4回)
http://www.ibm.com/developerworks/jp/cloud/libr
ary/cl-bluemix-arduino-iot1/index.html
77
© 2015 IBM Corporation
[ハンズオン5]
Node.js アプリケーションから
SQL Database を利用する
78
© 2015 IBM Corporation
ハンズオン手順
 ハンズオンの概要
 SQL Databaseサービスを作成する
 サンプルデータをロードする
 IDSのプロジェクトを取り込み、保管する
 設定ファイルを修正する
 プロジェクトをデプロイする
 デプロイしたアプリケーションを確認する
79
© 2015 IBM Corporation
ハンズオンの概要
 本ハンズオンでは、データベースにサンプルデータを投入し、Node.jsアプリケーション
から参照する手順を確認します。
 サンプルアプリケーションをIDSから取得し、Bluemixにデプロイします。
IBM DevOps Services
公開
プロジェクト
プロジェクトの
取り込み
SQL
Database
の作成
サンプルデータの
投入
モジュールの
デプロイ
アプリケーション
の実行
プロジェクトの
保管
設定ファイル
修正
80
© 2015 IBM Corporation
サンプルアプリケーションの紹介
 横浜市金沢区が公開しているAED設置場所データをGoogle Mapに表示
• http://www.city.yokohama.lg.jp/kanazawa/kz-opendata/kz-opendata.html
81
© 2015 IBM Corporation
ハンズオン手順
 ハンズオンの概要
 SQL Databaseサービスを作成する
 サンプルデータをロードする
 IDSのプロジェクトを取り込み、保管する
 設定ファイルを修正する
 プロジェクトをデプロイする
 デプロイしたアプリケーションを確認する
82
© 2015 IBM Corporation
ハンズオン手順
 ハンズオンの概要
 SQL Databaseサービスを作成する
 サンプルデータをロードする
 IDSのプロジェクトを取り込み、保管する
 設定ファイルを修正する
 プロジェクトをデプロイする
 デプロイしたアプリケーションを確認する
83
© 2015 IBM Corporation
サンプルデータをロードする (1/8)
1.サンプルデータをWebから取得します。
Webブラウザを起動し、「金沢区データポータル」にアクセスします。
https://ibm.biz/BdEApk
2.「AED設置場所」をクリックしてCSVファイルを保存します。
SQL Databaseの管理コンソールを利用すると、CSVファイルからテーブルを作成し、データをロードできま
す。そのためには、CSVファイルの文字コードがUTF-8である必要があるため、メモ帳を利用して文字コー
ドを変換します。
3.メモ帳を起動し、ダウンロードしたCSVファイルを開きます
4.メニューから「名前をつけて保存」を選択し、文字コードを「UTF-8」として上書き保存します
84
© 2015 IBM Corporation
サンプルデータをロードする (2/8)
5.Bluemixのダッシュボードより、ハンズオン1で作成したSQL Databaseサービスをクリックします。
6. Launch をクリックしてSQL Database のコンソールを起動します。
85
© 2015 IBM Corporation
サンプルデータをロードする (3/8)
7.Load Dataをクリックします。
86
© 2015 IBM Corporation
サンプルデータをロードする (4/8)
8.”Brows files” をクリックし、” 3-kz-somu.csv” を指定します。
“Does the file have columns that contain dates or times?”をYESにし、
”Load File” をクリックします。
87
© 2015 IBM Corporation
サンプルデータをロードする (5/8)
9.サンプルデータのCSVファイルの内容が表示されていることを確認し、
”Next” をクリックします。
88
© 2015 IBM Corporation
サンプルデータをロードする (6/8)
10.”Create a new table and load” にチェックを入れ、”Next” をクリックします。
89
© 2015 IBM Corporation
サンプルデータをロードする (7/8)
11.”Table name” を 「AEDKANAZAWA」に変更します。
12.Columnを以下のとおり変更し、”Finish” をクリックします。
名称
⇒ NAME
住所
⇒ ADDRESS
緯度
⇒ LATITUDE
経度
⇒ LONGITUDE
AEDの数 ⇒ AED
更新日
⇒ UPDATE
90
© 2015 IBM Corporation
サンプルデータをロードする (8/8)
13.ロードしたテーブルを確認します。左上の「Manage」から「Work with Table」を選
択します。
14.左側に表示されている「AEDKANAZAWA」をクリックすると、右側にテーブルの情報
が表示されます
91
© 2015 IBM Corporation
ハンズオン手順
 ハンズオンの概要
 SQL Databaseサービスを作成する
 サンプルデータをロードする
 IDSのプロジェクトを取り込み、保管する
 設定ファイルを修正する
 プロジェクトをデプロイする
 デプロイしたアプリケーションを確認する
92
© 2015 IBM Corporation
IDSのサンプルプロジェクトを取り込み、保管する (1/4)
ハンズオン1で作成したアプリと経路を削除します。(SQLDBはそのまま使用)
その後、公開プロジェクトからコードを取り込みます。
Bluemixのダッシュボード画面で、ハンズオン1で作成した、
Node.jsアプリのアイコン右上のマークをクリックし、
アプリの削除をクリックします。
??????
?????????
下図のように、サービスのチェックをはずし、経路のチェックを
入れて、削除をクリックします。
???????????????????
????
93
© 2015 IBM Corporation
IDSのサンプルプロジェクトを取り込み、保管する (2/4)
1.IDS上に公開されているサンプルアプリケーションにアクセスします。
YokohamaAEDMap:https://ibm.biz/BdEA8b
2.画面上部の 「SIGN IN」 をクリックします。
3.IBM ID、パスワードを入力して「Sign in」ボタンをクリックします。
4.プロジェクトをフォークします。「FORK PROJECT」をクリックしてください。
94
© 2015 IBM Corporation
IDSのサンプルプロジェクトを取り込み、保管する (3/4)
5.任意のプロジェクト名を指定して「CREATE」ボタンをクリックします。
この例では YokohamaAEDMap という
プロジェクト名を指定しています
デプロイ先として、Region に US South、
Organization に正しい IBM ID が
指定されていることを確認し、「CREATE」
をクリックします。
95
© 2015 IBM Corporation
IDSのサンプルプロジェクトを取り込み、保管する (4/4)
6.フォーク処理が完了し、自分のプロジェクトとして保管されたことを確認します。
96
© 2015 IBM Corporation
ハンズオン手順
 ハンズオンの概要
 SQL Databaseサービスを作成する
 サンプルデータをロードする
 IDSのプロジェクトを取り込み、保管する
 設定ファイルを修正する
 プロジェクトをデプロイする
 デプロイしたアプリケーションを確認する
97
© 2015 IBM Corporation
設定ファイルを修正する (1/2)
1.Bluemixにデプロイする際の情報を記述する設定ファイルである manifest.yml を
編集します。
前のページで取り込んだプロジェクトの”EDIT CODE”をクリックします。
2.manifest.yml クリックします。
98
© 2015 IBM Corporation
設定ファイルを修正する (2/2)
3.以下の箇所を修正します。
■ <Your SQL Database Name>:使用するSQL Databaseの名称です。
ハンズオン1で作成した「SQL Database」サービスの名称を入力してください。
■ <Your Host Name>:アプリケーションのホスト名です。
他のユーザーとも重ならない任意の名前を入力してください。
■ <Your Application Name>:アプリケーションの名称です。
他のアプリケーションと重複しない任意の名前を入力してください。
以下は編集後の manifest.yml の例です。
99
© 2015 IBM Corporation
ハンズオン手順
 ハンズオンの概要
 SQL Databaseサービスを作成する
 サンプルデータをロードする
 IDSのプロジェクトを取り込み、保管する
 設定ファイルを修正する
 プロジェクトをデプロイする
 デプロイしたアプリケーションを確認する
100
© 2015 IBM Corporation
プロジェクトをデプロイする(1/2)
1.「
」 ボタンをクリックします。
2.Bluemix の上部メニューから「ダッシュボード」をクリックします。
101
© 2015 IBM Corporation
プロジェクトをデプロイする(2/2)
3.ダッシュボードにIDSからデプロイしたアプリケーションが表示されます。
デプロイ操作の直後は環境作成中のため、ステータスが赤(実行不可)の
状態ですが、しばらく待って画面を更新するとステータスが緑(実行可能)に
変わります。
それではアプリケーションを実行してみましょう。
シグナルが緑になっているのを確認し、
アプリケーションのリンクをクリックします。
102
© 2015 IBM Corporation
ハンズオン手順
 ハンズオンの概要
 SQL Databaseサービスを作成する
 サンプルデータをロードする
 IDSのプロジェクトを取り込み、保管する
 設定ファイルを修正する
 プロジェクトをデプロイする
 デプロイしたアプリケーションを確認する
103
© 2015 IBM Corporation
デプロイしたアプリケーションを確認する
1.表示された画面の”AED位置情報取得”をクリックします。
地図上にAEDの位置が表示されます。
マーカーをクリックすると、AED設置場所の情報が表示されます。
104
© 2015 IBM Corporation
[補足資料]
サンプルプログラムの
ポイント説明
105
© 2015 IBM Corporation
Node.jsとは
 サーバーサイドJavaScript環境
• Webアプリケーションのプログラム記述を想定
• ファイル操作やデータベース処理など、機能ごとにモジュール化されており、必要なもの
を必要に応じて使用する
 参考リンク
• Node.js:http://nodejs.org/
• Node.js 日本ユーザーグループ:http://nodejs.jp/
• IBM SDK for Node.js:http://www.ibm.com/developerworks/web/nodesdk/
106
© 2015 IBM Corporation
Bluemixにデプロイする各ファイルの説明
 サンプルアプリケーションの構造は以下のとおり
• 実際のファイルをみながら内容を確認しましょう
app.js
Node.jsアプリケーションの本体
public
ここに配置したファイルは、http://URL/ファイル名でアクセスできる
css
CSSファイル配置用ディレクトリ
img
画像ファイル配置用ディレクトリ
js
ブラウザ用JavaScript配置用ディレクトリ
index.html
routes
107
リクエストを処理するプログラム配置用ディレクトリ
index.js
データベースへのアクセス処理を記述
package.json
Node.jsが使用するモジュールを記述
manifest.yml
Bluemixにデプロイするための情報を記述
© 2015 IBM Corporation
クライアントからのリクエストを処理する
 ブラウザからのリクエスト処理は、routes/index.js に記述している
router.get('/api/aed', function(req, res) {
reqにリクエスト内容が格納されている
resにデータを書き込むことでクライアントにレスポンスを返す
GETメソッド URLのパス
・・・
・・・
・・・
// レスポンスのHTTPヘッダーのセット
res.writeHeader(200, {'Content-type': 'application/json; charset=utf-8'});
HTTPステータスコード
レスポンスのHTTPヘッダーの内容
// レスポンスの内容
res.send(data);
res.end(data)とまとめることも可能
// レスポンスの最後
res.end();
});
108
© 2015 IBM Corporation
(参考)HTTPのメソッドとステータスコード
 HTTPはサーバーの操作としていくつかのメソッドを定義している
• GET:情報の取得
⇒ データの取得(SELECT)
• POST:データの送信
⇒ データの新規作成(INSERT)
• PUT: 指定したファイルの置き換え
⇒ データの更新(UPDATE)
• DELETE:指定したファイルの削除
⇒ データの削除(DELETE)
 リクエストに対するWebサーバーの応答としてステータスコードが定義されている
• 100番台:Information
• 200番台:Success
• 300番台:Redirect
• 400番台:Client Error
 401 Unauthorized、403 Forbidden、404 Not Found など
• 500番台:Server Error
 500 Internal Server Error、503 Service Unavailable など
109
© 2015 IBM Corporation
SQL Databaseに接続する(1/2)
 データベースへの接続情報は、VCAP_SERVICESという環境変数に格納されている
• Bluemixのダッシュボードより、アプリケーションを選択し、左側メニューの「環境変数」
をクリックする
今回のサンプルアプリでは、この環境変数を取得してDBに接続するように設定されているため
個別に指定しなくてもアプリからDBが使用できるようになっています(次ページ参照)
110
© 2015 IBM Corporation
SQL Databaseに接続する(2/2)
 Node.jsはibm_dbというモジュールを利用してSQL Databaseに接続できる
• package.jsonにモジュールの使用を記述
• データベースへのアクセス処理は、routes/index.jsに記述している
// 使用するモジュールの読み込み
var ibmdb = require('ibm_db');
// DB2への接続情報の取得
var services = JSON.parse(process.env.VCAP_SERVICES);
var credentials = services['sqldb'][0].credentials;
var dsnString = xxx;
// DB接続開始
ibmdb.open(dsnString, function(err, conn) {
// 実行するSQL文
var sqlStatement = "SELECT NAME, LATITUDE, LONGITUDE, ADDRESS, AED FROM AEDKANAZAWA";
conn.query(sqlStatement, function (err, rows, moreResultSets) {
// DBから取得したデータをJSON配列に格納する
for (var i = 0; i < rows.length; i++) { rows[i].LONGITUDE };
// DB接続終了
conn.close(function(){});
};
});
111
© 2015 IBM Corporation
Fly UP