Ruby上に並列言語拡張Lindaを実装してWebSocket/Cometで使えるようにした
の続き。
諸事情あって研究室がSFC内で3箇所に分散している。
しかし分散していても学食に誘ったりとかしたい。
その為には
– 別の部屋にいる気配を感じる手段
– メシに誘う手段
が必要なので、Lindaで作った。
shokai/linda-light-notify · GitHub
デルタ棟の部屋の電灯がon/offされたら、他の部屋のMacが「デルタ棟で電気が点きました」「消えました」と喋ったり、研究室のskype chatやtwitterに投稿したりする。
もちろん他の部屋で電気ついたり消えたりしたらデルタ棟にも通知される。
プログラムはこれ1つを動かしておくだけで、全部屋の装置が連携する。
RocketIO上に実装されたLindaは分散並列処理のための共有メモリであり、そこには各部屋に設置された光センサーのデータを毎秒書き込むプログラムや、
共有メモリを監視して各部屋のMacがしゃべったり、skypeに投稿したり、twitterに投稿したりというプログラムがぶら下がっている。
つまり、光センサーを監視して(共有メモリをreadして)、各通知用プログラムに流す(共有メモリにwriteする)だけでいい。
メシに誘う手段としてはこういうボタンがあるWebページがLinda RocketIOでは作れる。押せば向こうの部屋で音が出る。
先生に言われてなんとなくLinda実装したんだけど、既に10種類以上のプログラムが物理的に別の場所のマシンで動いていてバリバリ連携してて、全然落ちないし落ちても勝手に復活するし、テスト用のダミーデータもWebから投入できるし、ようやくまともなユビキタスコンピューティング実装環境できたなという感想ある。
6月 022013