hirax.net::inside out::2011年04月15日

最新記事(inside out)へ  |   年と月を指定して記事を読む(クリック!)

2011年3月 を読む << 2011年4月 を読む >> 2011年5月 を読む

2011-04-15[n年前へ]

「Ruby+Thinkpad」で作る地震震度クライアント・サーバ・システム 

 「地震の揺れ」は場所ごとにずいぶん違います。「場所」というのは宮城県とか茨城県といった大雑把なものだけでなく、□△町にある○×ビルの△階…といった場所ごとに「地震の揺れ」は違います。震源地の方向や揺れのモードと建物構造…といったものによって、ずいぶんと「揺れ」は違ってくるものです。

 「Ruby+Thinkpad」で作る地震震度計を作ったならば、さまざまな場所で(机の上に置かれたノートPCを用いて)計測した震度をサーバ上に集め、いろいろな場所(条件)下の震度情報を眺めてみたくなります。

 というわけで、今日はThinkpadの加速度センサを用いて震度を刻々計測しつつ・それを情報管理サーバに送るクライアントと、クライアントから送られる震度情報を管理する震度情報管理サーバソフトを、それぞれRubyで書いてみました。クライアントソフトは加速度センサからの情報をもとに刻々の震度情報を計算し、揺れが発生している時にはサーバソフトに自分の場所情報や震度情報を送りつけ、サーバソフトはクライアントから送られた情報を格納しつつ、ブラウザからの閲覧に対応する、という作業を行います。

 ここに置いた3つのソースコードを同じフォルダにでもダウンロードした上で、サーバにするマシン上でclient.rbの5行目にある

SERVER 192.168.0.1
を適当なアドレスに設定してから、
ruby server.rb 8080
とサーバを起動させれば、まずは震度情報管理サーバが立ち上がります。さらに、各クライントPCで
ruby client.rb
という具合に震度計測クライアントソフトを起動させれば、各クライアントPCが震度情報を刻々とサーバに送信するようになります。そして、震度情報管理サーバは格納された震度情報を(8080ポートの'/'から)ブラウザを用いて眺めることができるようにもしたりする、というわけです。

 今日書いてみたサンプルは、簡単なスケルトンです。簡単なスケルトンには、さらなるアイデアをたくさん詰め込むことができるはずです。

 …たとえば、「各クライアントPCが震度情報をサーバに送信すると同時に、サーバは他の場所での震度情報(警告情報)をクライアントに教えてあげる・クライアントはどれと同時にビープ音を発する」「建物の何階にいるかということと震度情報の対応を算出する」「全国の震度情報をGoogle Maps上にリアルタイムレンダリングする」…たくさんのアイデアを量産実装したいものです。

「Ruby+Thinkpad」で作る地震震度クライアント・サーバ・システム