RubyとArduino(Gainer)ではじめるフィジカルコンピューティング(名古屋Ruby会議01)

10月 13th, 2009 admin

名古屋Ruby会議で「RubyとArduinoで始めるフィジカルコンピューティング」というテーマでLTを行いました。ここでは発表のデモのうち、「はてなスターがついたらパトライト点灯」のリベンジと、解説を行いたいと思います。なお、Arduinoが故障した都合で、このデモはGainerで行いました。

2009/10/13 限定ライブデモ中
僕のブクマにスターをつけるとパトランプつきますよ。(連続、同一箇所だとWebHookが飛びません。連続で遊びたいときは別の場所にスターをつけて下さい。)
本日18:00ごろまで開催延長中
http://www.ustream.tv/channel/toyosystem
10/14 デモ終了しました

概要

screenshot26
上記の図がすべてです
(1)誰かが僕のはてなブックマークにスターをつける
(2)はてなWebHookというはてなの機能で、指定URLにPOSTリクエストが送られる
(3)webrick+sinatraのスクリプトがデータを受け取り、dRubyサーバにキューを送る
(4)Gainerを操るRubyはdRubyで待機(take)しているので、データを受け取りパト点灯
という流れになっています。以下順を追って説明します。

(1)(2)はてスタが付、WebHook起動

はてなブックマークの設定のデータ管理というところで行えます。

(3)webrick+sinatraのスクリプトがデータを受け取り、rinda(dRuby)にキューを送る

初めてsinatraを使ったのですが、簡潔さに驚いた。なんと必要なコードは以下だけ

RUBY:
  1. require 'rubygems'
  2. require 'sinatra'
  3. require 'drb/drb'
  4.  
  5. post '/' do
  6.   DRb.start_service
  7.   $ts = DRbObject.new_with_uri('druby://:12345')
  8.   $ts.write(['data',params[:username].to_s.untaint])
  9. end

dRubyサーバ

こっちも簡単すぎて泣けるっていうか、irb上で動いていました

RUBY:
  1. irb>require 'drb/drb'
  2. irb>require 'rinda/tuplespace'
  3. irb>$ts = Rinda::TupleSpace.new
  4. irb>DRb.start_service('druby://:12345', $ts)
  5. rb>DRb.thread.join

(4)データを受け取りパト点灯

RUBY:
  1. require 'drb/drb'
  2. require 'funnel'
  3. include Funnel
  4.  
  5. DRb.start_service
  6. $ts = DRbObject.new_with_uri('druby://:12345')
  7. gio = Gainer.new()
  8. loop {
  9.     p $ts.take(["data", nil])
  10.  
  11.     gio.aout(0).value = 1
  12.     sleep(5)
  13.     gio.aout(0).value = 0
  14. }

まとめ

・dRuby+sinatra+Gainerは強力
・入門にはRuby+Arduinoは敷居が高いので、素直にArduino IDEを使うかGainerをオススメしたい
(導入でつまづくのってもったいないですからね)
・デモでスター付けてくれた人有難う!

発表資料

Arduino+Rubyについて名古屋Ruby会議01で発表します

10月 8th, 2009 admin

実行委員もやっている名古屋Ruby会議01のLTにて発表しますのでお知らせです。

内容は「RubyとArduinoで始めるフィジカルコンピューティング」です。
新しい言語を覚えなくてもRubyとArduinoというI/Oモジュールを使ってフィジカルコンピューティングをしちゃおうというものです。

フィジカルコンピューティングといえば、以前サーバ監視パトランプを作ったり、Twitterと連携したりしましたが、そのときはGainerというモジュールを使っていました。
ソフトウェアだけじゃない話なので息抜きにちょうどいいと思いますよ。お楽しみに!

名古屋Ruby会議01
http://regional.rubykaigi.org/nagoya01

名古屋Ruby会議01まであと1週間

10月 2nd, 2009 admin

pamph

名古屋Ruby会議01まであと1週間。
豪華プログラムも決まりました。空席はあと30名分です。

上の画像のPDFはこちら(PDF)からダウンロードできます。ぜひ会社や学校などでの紹介にご利用下さい。

みなさんと会場で会えるのを楽しみにしています。

名古屋Ruby会議のロゴができました。

9月 15th, 2009 admin

nagoya

僕も実行委員として参加している「名古屋Ruby会議01」というイベントのロゴファイルをのりおさんという方に作って頂きました。

イベントは10月10日(バイナリの日)に開催です。すでにいろいろ準備はしていますが、こういったグッズができるとグッと実感が増してきます。
まだスピーカーの発表は一部しかしていませんが、参加者の募集は行っておりますので公式ページに是非きてください。参加は無料ですよ!

また詳しい情報などは随時、公式ページ及び、ここで発表させて頂きます。