プログラマーですが何か?まだプログラマーですが何か?プログラマーネタとアスリートネタ中心。内で指定されていればその値が、されていなければ動的に生成されるようにしました。ランタイムを作ると動作を確認しやすく、またそのためカスタマイズの勘所が分かりやすいと思っています。以下、この環境での動作確認方法を紹介します。インストールされたマシンが必要です。インストール可能なマシンで導入を済ませていると仮定して以下を続けます。値(メッセージデータを送信する時間間隔(ミリ秒)。デフォルトは空文字列なので、後で自動生成された値になります)くらいです。値は変えなくても動きます。ような簡単な単語ではなく)他の人が使わないようなユニークな値になるよう指定してください。生成するので、この値は実行ごとに変わることに留意してください。5d7436e992d0)。指定した場合はその値が、指定しなかった場合は自動生成された値が表示されます。強制終了してください。指定した値の間隔でメッセージデータを送信し続けている状態になりました。内容をデバッグタブに表示する、というシンプルなフローです。画面右のデバッグタブに(デフォルトであれば)1秒おきにメッセージが追加されていく様子が確認できるはずです:メッセージの1つを選んで展開してみると、元のアプリケーションから送信されたカウント値(count)、タイムスタンプ値(timestamp)、CPU稼働率(cpu)、サイン値(sin)、コサイン値(cos)、そして乱数値(random)が確認できます。入れる)ということになります。こちらはシンプルなのでなんとなく理解できるんじゃないかな・・・と期待しています。組み合わせることで、ここで取得した値を簡単にチャート化することもできます。データを送信するサンプルとして使ってくださいませ。仕組みの中で使われることの多いプロトコルですが、以前からそれだけに使うのは勿体ないなあと思っていました。仕組みとしても使われているとの情報もあります。使ったチャットアプリの開発に挑戦してみました。エディションを使ってチャットを作ってみることに挑戦しました。チャットアプリを作ります、といっても実はかなりシンプルです。1つ1つノードを配置してもいいのですが、まずはインポートして中身を確認し、必要に応じて説明を加えることにします。選択します:「フローの読み込み」画面になったら、ここの内容をそっくりそのままコピー&ペーストして「読み込み」ボタンをクリックし、フロー定義を作成します:正しく読み込みが完了すると以下のような3本のデータフローが再現されるはずです。経由でチャット参加メンバーのメッセージを取り出す処理を定義しています。入力する項目があり、いずれも初期状態では空になっているはずです。ユニークな値を指定する必要があります。同じ値を指定します)。ノードの中身を確認します。変換している部分です。これも非常にシンプルな処理内容が記述されていることが確認できます:改めて3つそれぞれのフローの中でどのような処理が定義されているのかを確認してみましょう。定義そのものは「チャット画面」というテンプレートノードの中で定義されています(後述します):2つ目のフローはチャット画面の中で利用者が自分のメッセージをチャットに流した時に実行される処理です。処理でいうと「パブリッシュ」)しています。指定していることで、同じテンプレートを使っても異なるアプリケーションであるとみなし、他の人が作ったチャットと混線しないようにしています。されたメッセージの内容をこの画面内からも確認できるようにしているだけで、実際の処理には無関係です(無くても動きます):そして3つ目のフローは上記2つ目のフローで処理されたメッセージを取り出すフローになります。送信されるよう記述されています。監視しており、ここにメッセージが送られてきた場合の処理が記述されています:この状態でデプロイ(画面右上のボタン)をクリックすることで実際にチャットアプリケーションを使うことができるようになります。アクセスしてみてください。接続します):入室すると画面が切り替わり、自分の名前とメッセージ入力フィールドが画面下に表示されます。画面の大半はチャット履歴が表示される画面ですが、まだ何もメッセージがないので何も表示されていません:では試しに何かメッセージを入力してみます。キーを、スマホであれば「開く」などでメッセージを確定させてください:入力したメッセージがチャット履歴に表示されます。アクセスして、別の名前で入室してメッセージを送信してみます。このユーザーから見ると入室前のメッセージは見れないので、自分のメッセージが一番最初に表示されます:が、元のユーザーからは別のユーザーが入室してきてメッセージを送信したことになります。見たことありますよね。作ってます(笑)):同様にして別のユーザーが入室してくると、そのユーザーのメッセージも白背景で左に吹き出しが付く形で表示されていく、というものです。なっているのかを説明します。データとして送信されます。データとして送信していました。データが送られるということになります。チャット履歴に追加する、という部分の処理が上記になります。これだけでチャットが実現できているということは、(気付いている人もいるかもしれませんが)少なくともここまでの処理に関してはデータベースを一切使わずに実現できていることを意味しています。確かにリアルタイムデータ処理なのでデータを保存する必要はないのですが、実際に保存せずに実現できるというのはなかなか興味深いのではないかと思っています。dotnsf※(注)最初にお断りしておきます。マジメぶって書いてますが馬鹿エントリです。全てのきっかけは最近たまにみかけるこういった記事でした:機械・人工知能・AIが奪う、なくなる職業・仕事のランキンググーグルCEO「20年後、あなたが望もうが、望むまいが現在の仕事のほとんどが機械によって代行される。人工知能やコグニティブエンジンと呼ばれる技術の発達により、これまで人間の脳でないと判断できなかったようなことをコンピュータができるようになり、人間の仕事がより低コストな人工知能やそれらを搭載したロボットによって奪われてしまう時代がくる、という啓発記事です。個人的にはそこまでそんな時代が身近に迫ってきているとは思っていません。その一方で企業間の競争が働いたこともあり、ここ数年における人工知能分野の発展はすさまじいものがあります。公開している背景も手伝って、人工知能に触れる機会がより身近な世界になりつつあるのも事実だと思っています。以下は個人的見解ですが、クリエイティブな仕事(例えば小説を書く、など)を学習させるのはまだ難しいにせよ、脳を使わない単純作業や、ルーチン化された業務などは意外と早い段階で人間の効率を追い抜く日がやってくるかもしれない(そうなると作業コストで勝てるわけがないので、本当に仕事を失う日がやってくるかもしれない)、と思っています。お客様とお話ししていて、ただ頷いて聞いているだけ。いわゆる「音センサー」です。画像左上にある大きな丸い部分がマイクになっていて、ここで音を拾って、その情報を電気回路を通じて外部に知らせることができる、というものです。いう拡張モジュールを取り付けて簡単に使う方法がネットなどで紹介されていました。いうわけで、よく調べずにとりあえず買ってしまいました。自分は「ラズベリーパイならメジャーだからまあ繋がるだろう、その方法もネットで見つかるだろう」とタカを括っていたのですが、これが意外と苦戦しました。繋げる方法)を見つけることができませんでした。えーマジで!?自分で調べるしかないの??電子回路は苦手なんだよなあ。以下、やってみたことのおさらいの意味で書いてます。当方こっち方面はド素人なので、間違いを見つけたり、こうするともっといいよ、という方法があればウェルカム、というか教えてください。・・・改めてパーツを眺めてみました。接続端子はこの↓画面上部の白い四角の中に生えた4つの突起部分です:これを裏返すとこんな感じ(上図とは左右が逆になった状態):拡大するとこんな感じ。電圧、これは(他の部品とほぼ共通なので)分かる。電圧ピンにジャンパケーブルを繋いであればいいかな。「どことも繋がない」という端子らしい。感知した音を取り込む仕組みが動くはずです。ライブラリを導入済みです。ブローカー(iot.eclipse.org)に投げる、というものです。整数値でパブリッシュする、というものです。指定していますが、皆さんがもしこのソースを使う場合は少し変えていただけると嬉しいです。環境を使って、このパブリッシュされたメッセージを取り出す仕組みを用意します。マイクから拾った音の頻度が渡されてくる、という仕組みとなります。アプリケーションを用意してあげればマイクで拾った音の頻度をリアルタイムに可視化するようなアプリケーションを作ることができる、ということになります。環境にデプロイしてアプリケーション(hoho.html)を開くと、このような画面になります:ひたすら「頷いている」画面になっています。何もデータが送られていないとただ頷いているだけですが、一応この画面が出ればデプロイには成功していることになります。ラズベリーパイ側のアプリも起動します。ラズベリーパイに接続されたマイクが音を拾っている間は頷き、音が途切れたと判断した時に「ほほー」と相槌を売ってくれるようになります!この「音を拾っているか」「音が途切れたか」の判断がまだ少し甘いところがあるかもしれませんが、一応それっぽく動いていることが確認できました。これで忙しい営業さんに変わってお客様のお話しを上手に引き出してくれるロボットができました(笑)。環境を使って集めたデータをリレーショナルデータベース(dashDB)に格納する、という手順を紹介します。準備段階として、「何の」データを集めるか、という問題があります。パブリッシュが可能なアプリケーションやデバイスであれば何でもいいのですが、後のデータ解析のことを考え、シミュレーターではなく実機のデータを集めることにします。ブローカー)に送られるようになります。今回はそのデータを集めてみます。パブリッシュする仕様になっています。ボタンをクリックすると、このノードアプリケーションが動き出します。一意のメッセージID}上記の赤字で書かれたデータは個々のメッセージ毎に変わるデータなので、このデータを集めることにします。データの変換を行うよう指定します。4つの値だけをフラットに取り出すことができるようになりました。サービスを追加します:実際にデータを追加(insert)するには、その前にテーブルを定義しておく必要があります。ダイアログボックスが表示されます。テーブルが追加されています。テーブルの設計要素が表示されます。格納する、という処理が実現できました。サービスを使うために、同サービスにデバイスを登録する方法を上記で紹介しました。集めるための方法を紹介します。値を確認しておきます。横にある鉛筆マークをクリックしてノードの属性を確認します。ノードを足して&繋いで、送られてきたデータが参照できるようにしておきます。フローに送られたデータが表示されることを確認してみましょう。{"d":{"a":"x","b":"y","c":"z"}}(任意のJSONテキスト)実際に動くデバイスがあれば、この内容でパブリッシュするようなコードを記述することでメッセージを送信することができます。使って同じ動きをエミュレートして、動作を確認してみることにします。表示されるはずです:期待通りに動きました。サーバーを使う方法が分かりました。ブローカー利用が可能になりますね。ブログ検索」ブログパーツは、サービスを終了しました。