どうも。いつもテンパってる菅沼です。

今回、サンプロの活動報告を任されることになりました。は、初投稿なので、緊張してます。

早速ですが、今回の活動の概要です。

【活動概要】
・日 時:5月31日(土) 13:00~
・場 所:三田研修センター 9F
・参加者:3名
・内 容:本文参照!

【本文】
1.活動内容
今回の参加者はブログ執筆メンバーとしておなじみ佐伯さん、桑野くんと、僕の3名。
僕が到着した時には、すでに他の2名ともやってきていて、マシンのセットアップをしてました。おお、みんなすげーやる気じゃんと思って時計を見たら、僕が遅刻してました。すみません。

で、肝心の活動内容ですが、実は各々が何をしていたかちゃんと把握してません!
僕自身、自作プログラムのバグ取りに熱中して、みんなが何してるのか把握してなかったんです。ここはサンプロらしく、自分のPCのデスクトップ上の操作をリアルタイムでネットワーク上に公開するアプリでも作るべきでしょうか。

僕の隣に座っていた桑野くんは、Ruby on Railsを使ったアプリを作るため奮闘中でした。
「Ruby on Rails」は、乱暴に表現すると「プログラミング言語『Ruby』を使ってWebアプリケーションを超スピードで開発できちゃうフレームワーク」だと思っているのですが何か問題でも?
サンプロの少ない活動時間を克服しようとする桑野くんの戦略が垣間見れる面白いチョイスだと思います。

2.特集…技術発表
サンプロの活動時間は短いです。
集合時間が13時からで、だいたい17時には撤収なので、4時間しかなかったりします。4時間でちょっとしたアプリケーションを作るって、結構厳しい。
この短いサンプロの活動時間を有効に活用するにはどうすべきか?
Ruby on Railsのような生産性の高い言語を使うっていうのも、なるほどいい手だと思いますが、僕は桑野くんとは別のアプローチをとることにしました。

そのアプローチとは、
「サンプロ活動がない時にアプリを作って、活動日に公開する!」

…反則臭い。でもそんな僕でも受け入れてくれるのがサンプロの懐の深さです。

で、作ったアプリケーションがこれ↓
ゲージュツ君
その名も「ゲージュツ君」。
見た目、ただのペイントアプリですが、マウスやタブレットを使わず、「三軸加速度センサ」というデバイスを使って絵を描きます。使用言語はJAVAです。

三軸加速度センサというのは、センサ自体にかかる加速度をX方向、Y方向、Z方向の三方向に分離して検出するツールです。地震計や、Wiiのコントローラ等にこのセンサが使われているとか。
写真を撮り忘れてしまったのでイメージがつかみにくいかもしれませんが、空中でそのデバイスを振り回すことで絵が描ける、というアプリなわけです。

実際に使っている様子は次回紹介するとして、先に技術解説します。

<デバイス>
今回使ったのは、「Design Wave」という雑誌の2008年5月号の付録「ARM Cortex-M3プロセッサ基板」です。
コイツには三軸加速度センサが最初から搭載されているうえ、センサからの情報転送も最初からプロセッサ上に組み込まれているので、PCとセンサを接続すればすぐにセンサからの情報を取得できるという素敵なオモチャです。
ハイパーターミナルでセンサの情報を表示しているところ
上の画像は、Windows付属のハイパーターミナルで実際にデータを出力しているところです。並んでいる4桁の数値は、左からX方向、Y方向、Z方向の加速度です。

<データ転送>
デバイスからPCへのデータの転送はUSBを使って行います。USBなので、PC側の受け口はシリアルポートを使用することになります。
JAVAでシリアル通信を行う、これが、このアプリケーションの肝となる部分なわけです。

<シリアル通信をJAVAで行う方法>
Sun Micro Systems社は、シリアル通信用の拡張APIとして「CommunicationsAPI」を用意しています。
が、最新のバージョンでは、このAPIのWindows版が存在しません。
代わりに「RXTX」という、CommunicationsAPIをベースとしたAPIが無償公開されてます。オープンソースというやつですね。
RXTX : http://www.rxtx.org/
これを使えば、CommunicationsAPIを使用するのとまったく同じ要領でシリアル通信を実現できます。

環境設定方法はEclipseのバージョンなどに依存するので、具体的な使用方法をここに載せるかは検討します。また、JAVAのソースコードを公開して、シリアル通信の実装方法を解説するかもしれません。

次回の活動は6月21日(土)。佐伯部長は仕事で朝から三田にくることになるとか。お疲れ様です。

それでは皆さん、長文にお付き合いいただきありがとうございました!