SHOEISHA iD

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

連載記事

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

CodeZine BOOKS(コードジン・ブックス)は、CodeZineの連載からカットアップした、開発現場の課題解決に役立つ書籍シリーズです。

書籍に関する記事を見る

'); googletag.cmd.push(function() { googletag.pubads().addEventListener('slotRenderEnded', function(e) { var ad_id = e.slot.getSlotElementId(); if (ad_id == 'div-gpt-ad-1659428980688-0') { var ad = $('#'+ad_id).find('iframe'); if ($(ad).width() == 728) { var ww = $(window).width(); ww = ww*0.90; var style = document.createElement("style"); document.head.appendChild( style ); var sheet = style.sheet; sheet.insertRule( "#div-gpt-ad-1659428980688-0 iframe {-moz-transform: scale("+ww/728+","+ww/728+");-moz-transform-origin: 0 0;-webkit-transform: scale("+ww/728+","+ww/728+");-webkit-transform-origin: 0 0;-o-transform: scale("+ww/728+","+ww/728+");-o-transform-origin: 0 0;-ms-transform: scale("+ww/728+","+ww/728+");-ms-transform-origin: 0 0;}", 0 ); sheet.insertRule( "#div-gpt-ad-1659428980688-0 div{ height:"+(90*ww/728)+"px;width:"+728+"px;}", 0 ); } else { if ($(window).width() < 340) { var ww = $(window).width(); ww = ww*0.875; var style = document.createElement("style"); document.head.appendChild( style ); var sheet = style.sheet; sheet.insertRule( "#div-gpt-ad-1659428980688-0 iframe {-moz-transform: scale("+ww/320+","+ww/320+");-moz-transform-origin: 0 0;-webkit-transform: scale("+ww/320+","+ww/320+");-webkit-transform-origin: 0 0;-o-transform: scale("+ww/320+","+ww/320+");-o-transform-origin: 0 0;-ms-transform: scale("+ww/320+","+ww/320+");-ms-transform-origin: 0 0;}", 0 ); sheet.insertRule( "#div-gpt-ad-1659428980688-0 div{ height:"+(180*ww/320)+"px;width:"+320+"px;}", 0 ); } } } }); }); } else { document.write('
'); document.write('
'); }
IoTをかじってみよう

IoTをかじってみよう(6)
~Node-RED for Bluemixによる開発とIoTアプリケーション開発の留意点

  • X ポスト
  • このエントリーをはてなブックマークに追加

 前回はオフラインIDEを使ったmbedアプリケーションのデバッグ方法について解説しました。今回は2部構成です。第1部はNode-RED for Bluemixによる簡単なアプリケーション開発を実践し、第2部ではIoTアプリケーション開発の留意点について解説します。

  • X ポスト
  • このエントリーをはてなブックマークに追加

第1部 Node-REDを使用してIoTアプリを簡単に作ってみる

Node-REDとは

 Node-REDは、IBM英国Hursley研究所が開発したソフトウェアで、IoTデバイス、API、オンラインサービスを連携させるための開発用ツールです。ブラウザUIベースでビジュアルにモデルを作成でき、作成したモデルをすぐに動かしてみることができます。Node-REDはオープンソースとして提供されており、GitHubからソースを取得することができます。

 Node-REDはNode.jsが動作する環境で利用できますが、この連載ではセットアップが簡単なNode-RED for Bluemixを用います。

 なお、Node-REDは現在のところアイデアを手軽に試してみるようなケース(プロトタイピング)を想定しており、そのまま本番環境で利用するようなケースは想定していません。Bluemix上でもベータの扱いになっていて、突然使用できなくなる可能性がありますので注意してください。

開発・テスト手順解説の前提事項

 これから説明する手順は、以下を前提としています。

  • 今回の開発には、Macを使用しています
  • IBM ID取得済み、Bluemixにサインアップ済みの前提とします
  • mbedにアプリケーション・ボードを装着済みとします
  • mbedのクライアントサイドアプリは第2回でインストールしたものを使います
  • mbedがBluemixに接続するためのネットワーク環境(ルーター、LANケーブル)が必要です

今回のアプリケーション概要

 第2回では、IBM Internet of Things Foundationの認証不要なQuickstartサービスを用いて、mbedからMQTTで送信されたセンサーデータをQuickstartで表示できることを確認しました。今回はセンサーデータをBluemixへ送信し、Bluemix上のサービスやアプリケーションで処理を行えるようにします。

 また手順の解説ではBluemixの古い方のWeb画面を使用します。もしもTry the new Bluemixのリンクをクリックしてしまい、新しいWeb画面になってしまった方は、画面上部にある「クラシック・エクスペリエンスに進む」をクリックすると元の古いWeb画面に戻すことができます。

BluemixのNode-REDでアプリケーションを作成する

 BluemixにIBM IDでログインします。

 ログイン後のダッシュボードで右上の人型アイコンをクリックし、「地域」を「米国南部」に設定してください(図1)。

図1 地域
図1 地域

 スペースが未作成の場合は、任意の名前でスペースを作成しましょう(この手順では「dev」とします)。

 アプリケーションを作成します。「カタログ」から「Internet of Things Platform Starter(モノのインターネット・スターター・ボイラープレート)(図2)」を選択すると、IoTアプリの開発環境が作成されます。

図2 ボイラープレートの選択
図2 ボイラープレートの選択

 アプリケーションに任意の名前を付けましょう(手順では「iotmytestapp」とします)。

 アプリケーションが稼働中になったら「経路」の右横に表示されたURLがクリック可能となりますので、クリックしてみましょう(図3)。

図3 経路
図3 経路

 Node-REDのスタートアップがブラウザに表示されます。赤色の「Go to your Node-RED flow editor」をクリックしてください(図4)。

図4 Node-REDの開始
図4 Node-REDの開始

 フロー・エディターのワークスペースには、あらかじめサンプルのフローが作られた状態となっています(図5)。

図5 サンプルフロー
図5 サンプルフロー

 試しにワークスペースの一番左に配置された「IBM IoT APP In」ノードをダブルクリックしてみてください。プロパティの確認や変更が可能な構成ダイアログが表示されます。「IBM IoT APP In」ノードは、連載第2回でもご紹介したIBM Internet of Things Foundationの「Quickstart」サービスから、デバイスのイベントデータをフローへ入力する責務を持ちます。

 そのほかのノードのプロパティも確認してみましょう。サンプルフローの各ノードの責務は表1のとおりです。

表1 サンプルフローの各ノードの責務
ノード名 責務
IBM IoT APP In IBM IoT Foundationからデバイスのイベントデータをサブスクライブする
device data フロー・エディターのdebugタブにデバッグメッセージとしてデバイスデータを出力する
temp メッセージペイロードのJSONデータからtemp(温度)属性のみを取り出して返す
temp thresh メッセージペイロードが40度以下なら1番目のフローに進み、40度より上なら2番目のフローに進む
safe Temperature(温度)が安全な閾値の範囲内にあるというメッセージを出力する
danger Temperature(温度)が危険な閾値の範囲内にある(安全な閾値の範囲外)というメッセージを出力する
cpu status CPUの温度の状態をデバッグメッセージとして出力する(このサンプルでは、CPUの温度がイベントとして上がってきていると想定しています)

 各ノードの責務およびデータフロー(ノードの繋がり)を確認することにより、このサンプルフローは、デバイスから送信される温度のデータをもとに、CPUの状態が安全か危険かを判定して通知するIoTサービスを実現しようとしていることが分かります。

 このように、Node-REDでは、ブラウザUIベースのワークスペース上でさまざまなノード(カプセル化された小さな機能)を繋げることによってアプリケーションを構築します。要件によっては、ほぼノンコーディングで作成することができますし、JavaScriptで自作した機能や他者が提供するAPIやサービスと連係させてカスタマイズできます。

 作成したデータ・フローのモデルは、デプロイすれば動作を確認することができるので、Node-RED for Bluemixは、IoTアプリケーションのプロトタイプ構築に最適なソリューションの一つと言えるでしょう。

 次に、IoTのサンプルフローに少し定義を加えて、実際に動作を確認してみましょう。

 「IBM IoT App In」ノードに「Quickstart」サービスからデータ入力できるようにします。IoT Sensorシミュレーターをブラウザの新たなタブに表示させてください。シミュレーターに表示された右上の英数字がデバイスIDです。この値をコピーするか控えておいてください(図6)。

図6 シミュレーターのデバイスID
図6 シミュレーターのデバイスID

 Node-REDのフロー・エディターに戻り、「IBM IoT App In」ノードの「Device Id」に控えておいた値を入力して「Ok」をクリックします(図7)。

図7 Device Idの入力
図7 Device Idの入力

 変更が加わったので、画面右上にある「Deploy」が赤色になりました。「Deploy」をクリックしてみましょう(図8)。

図8 デプロイ
図8 デプロイ

 「Successfully Deployed」という通知が表示されたらデプロイ完了です。フローエディタの右にあるデバッグコンソールに、図9のようなメッセージが出力されましたか?

図9 デバッグメッセージの確認
図9 デバッグメッセージの確認

 2秒おきにシミュレーターのイベントが実行され、Bluemixのアプリケーションがシミュレーターのセンサーデータを入力処理します。「temp thresh」ノードでは温度の閾値判定が行われ、その判定結果がデバッグメッセージとして出力されます。

 デバッグコンソールには、シミュレーターからの入力データもデバッグ用途で出力されていることが分かります。

 シミュレーターの下部に表示された矢印をクリックすると温度を上下できるので、40度以下の温度、また41度以上の温度に変更してみましょう。デバッグコンソールに表示される判定結果の内容が変わりましたか?

図10 メッセージの変化の確認
図10 メッセージの変化の確認

 サンプルフローの動作確認が終わったら、「IBM IoT App In」ノードの「Device Id」の値を削除して再びデプロイしましょう。これでシミュレーターのイベントデータのサブスクライブを止めることができます。デバッグコンソールに「Device Id is not set for Quickstart flow」というメッセージが出力された後は、何も出力されないことを確認してください。

会員登録無料すると、続きをお読みいただけます

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

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

メールバックナンバー

次のページ
mbedのセンサーデータを入力データにする

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

  • X ポスト
  • このエントリーをはてなブックマークに追加
IoTをかじってみよう連載記事一覧

もっと読む

この記事の著者

谷口 督(日本アイ・ビー・エム株式会社)(タニグチ ススム)

2000年問題対応の時期にIT業界に入り、それ以来UNIX系のインフラ構築を担当。最近の関心事は、そろそろ出てきそうな画期的なテクノロジー探しや世の中が良くなるためのもの作りです。

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

山崎 まゆみ(日本アイ・ビー・エム株式会社)(ヤマザキ マユミ)

人・技術・本が好きなITエンジニア。公共・金融機関のアプリケーション開発/インフラ構築経験を持つ。プロジェクト現場で日々奮闘中。

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

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

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/9396 2016/05/12 14:00
" ); }

おすすめ

アクセスランキング

  1. 1
    アジャイル開発の推進において、必ずしも"すごい人"は必要ない──現場のエンジニアがDevOps推進で実現する組織改革
  2. 2
    Google、社内AIエージェント「Google Agentspace」発表
  3. 3
    Linuxディストリビューション「Serpent OS」、アルファ版がリリース NEW
  4. 4
    AWS、ノーコードで生成AIアプリを作れる「PartyRock」の新機能を紹介、2025年以降は無料で誰でも利用できるように NEW
  5. 5
    より使いやすくなったPHP 8.4の新機能──クラス定義や言語仕様とデータベース関連の強化ポイント
  1. 6
    マイクロソフト、VS Code用のOfficeアドイン開発キットのGA版を提供開始 NEW
  2. 7
    デスクトップアプリ開発に必要な「Rust」の文法を理解しよう
  3. 8
    JavaScriptのWebフレームワーク、「Astro 5.1」リリース NEW
  4. 9
    中小企業の約6割、外部委託エンジニアの獲得に意欲的も、65.1%が「円滑な業務契約に向けた対策」の必要性を実感 NEW
  5. 10
    いいエンジニアになるための2つのポイント ──元Google技術者・石原氏が説く「シリコンバレー流ソフトウェア開発術」

アクセスランキング

  1. 1
    アジャイル開発の推進において、必ずしも"すごい人"は必要ない──現場のエンジニアがDevOps推進で実現する組織改革
  2. 2
    Google、社内AIエージェント「Google Agentspace」発表
  3. 3
    Linuxディストリビューション「Serpent OS」、アルファ版がリリース NEW
  4. 4
    AWS、ノーコードで生成AIアプリを作れる「PartyRock」の新機能を紹介、2025年以降は無料で誰でも利用できるように NEW
  5. 5
    より使いやすくなったPHP 8.4の新機能──クラス定義や言語仕様とデータベース関連の強化ポイント
  6. 6
    マイクロソフト、VS Code用のOfficeアドイン開発キットのGA版を提供開始 NEW
  7. 7
    デスクトップアプリ開発に必要な「Rust」の文法を理解しよう
  8. 8
    JavaScriptのWebフレームワーク、「Astro 5.1」リリース NEW
  9. 9
    中小企業の約6割、外部委託エンジニアの獲得に意欲的も、65.1%が「円滑な業務契約に向けた対策」の必要性を実感 NEW
  10. 10
    いいエンジニアになるための2つのポイント ──元Google技術者・石原氏が説く「シリコンバレー流ソフトウェア開発術」
  1. 1
    いいエンジニアになるための2つのポイント ──元Google技術者・石原氏が説く「シリコンバレー流ソフトウェア開発術」
  2. 2
    「CUDA」 ~マンガでプログラミング用語解説
  3. 3
    ITエンジニア本大賞2025、投票締切直前! みんなで選んだ歴代の大賞本を振り返って一挙紹介
  4. 4
    デスクトップアプリを開発しよう! 「Rust」と「Tauri 2.0」の基本情報と環境整備の仕方を解説
  5. 5
    アジャイル開発の推進において、必ずしも"すごい人"は必要ない──現場のエンジニアがDevOps推進で実現する組織改革
  6. 6
    2024年12月に開催される注目のITエンジニア向けカンファレンス5選
  7. 7
    日本在住の英語を話すソフトウェア開発者、年収の中央値は950万円に
  8. 8
    デスクトップアプリ開発に必要な「Rust」の文法を理解しよう
  9. 9
    管理職の24.1%、今後管理職を「続けたくない」と回答。理由は「責任やストレス」が最多に
  10. 10
    テストは増え続ける、でもボトルネックにはできない──テスト効率化の2つのカギを朱峰 錦司氏が解説!

イベント

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

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

メールバックナンバー

アクセスランキング

  1. 1
    アジャイル開発の推進において、必ずしも"すごい人"は必要ない──現場のエンジニアがDevOps推進で実現する組織改革
  2. 2
    Google、社内AIエージェント「Google Agentspace」発表
  3. 3
    Linuxディストリビューション「Serpent OS」、アルファ版がリリース NEW
  4. 4
    AWS、ノーコードで生成AIアプリを作れる「PartyRock」の新機能を紹介、2025年以降は無料で誰でも利用できるように NEW
  5. 5
    より使いやすくなったPHP 8.4の新機能──クラス定義や言語仕様とデータベース関連の強化ポイント
  1. 6
    マイクロソフト、VS Code用のOfficeアドイン開発キットのGA版を提供開始 NEW
  2. 7
    デスクトップアプリ開発に必要な「Rust」の文法を理解しよう
  3. 8
    JavaScriptのWebフレームワーク、「Astro 5.1」リリース NEW
  4. 9
    中小企業の約6割、外部委託エンジニアの獲得に意欲的も、65.1%が「円滑な業務契約に向けた対策」の必要性を実感 NEW
  5. 10
    いいエンジニアになるための2つのポイント ──元Google技術者・石原氏が説く「シリコンバレー流ソフトウェア開発術」

アクセスランキング

  1. 1
    アジャイル開発の推進において、必ずしも"すごい人"は必要ない──現場のエンジニアがDevOps推進で実現する組織改革
  2. 2
    Google、社内AIエージェント「Google Agentspace」発表
  3. 3
    Linuxディストリビューション「Serpent OS」、アルファ版がリリース NEW
  4. 4
    AWS、ノーコードで生成AIアプリを作れる「PartyRock」の新機能を紹介、2025年以降は無料で誰でも利用できるように NEW
  5. 5
    より使いやすくなったPHP 8.4の新機能──クラス定義や言語仕様とデータベース関連の強化ポイント
  6. 6
    マイクロソフト、VS Code用のOfficeアドイン開発キットのGA版を提供開始 NEW
  7. 7
    デスクトップアプリ開発に必要な「Rust」の文法を理解しよう
  8. 8
    JavaScriptのWebフレームワーク、「Astro 5.1」リリース NEW
  9. 9
    中小企業の約6割、外部委託エンジニアの獲得に意欲的も、65.1%が「円滑な業務契約に向けた対策」の必要性を実感 NEW
  10. 10
    いいエンジニアになるための2つのポイント ──元Google技術者・石原氏が説く「シリコンバレー流ソフトウェア開発術」
  1. 1
    いいエンジニアになるための2つのポイント ──元Google技術者・石原氏が説く「シリコンバレー流ソフトウェア開発術」
  2. 2
    「CUDA」 ~マンガでプログラミング用語解説
  3. 3
    ITエンジニア本大賞2025、投票締切直前! みんなで選んだ歴代の大賞本を振り返って一挙紹介
  4. 4
    デスクトップアプリを開発しよう! 「Rust」と「Tauri 2.0」の基本情報と環境整備の仕方を解説
  5. 5
    アジャイル開発の推進において、必ずしも"すごい人"は必要ない──現場のエンジニアがDevOps推進で実現する組織改革
  6. 6
    2024年12月に開催される注目のITエンジニア向けカンファレンス5選
  7. 7
    日本在住の英語を話すソフトウェア開発者、年収の中央値は950万円に
  8. 8
    デスクトップアプリ開発に必要な「Rust」の文法を理解しよう
  9. 9
    管理職の24.1%、今後管理職を「続けたくない」と回答。理由は「責任やストレス」が最多に
  10. 10
    テストは増え続ける、でもボトルネックにはできない──テスト効率化の2つのカギを朱峰 錦司氏が解説!