Kishima's Hateda log

はてなダイアリー記事の保管庫

TokyuRubyKaigi03でLTしてきた(Rubotoのはなし)

自分の発表

今日開催されたTokyuRubyKaigi03でLTしてきました(スタッフとしてのお手伝いも少々)。案の定、発表時間が足りなくなってしまったので、少し補足を。

今回発表したのはRubotoについてです。
RubotoとはAndroidのDalvikVMの上でJRubyを動かすというプロジェクトです。
RubotoにはIRBアプリとRuboto-coreと呼ばれる、それ単体でAndroidアプリを作成するプロジェクトが含まれています。今回試したのはRuboto-Coreの方です。

AndroidアプリにはJavaで書いたActivity等が必要なので、Ruboto-Coreでは、自動的なコード生成と組み合わせることで、Rubyだけでアプリを書けるようにしています。

使ってみると起動が遅かったり、情報が少なかったり、取っ付きにくい部分はありますが、現在進行形で拡張されているんで、自分で拡張して行くつもりでさわってみるのが、楽しいんではないかと思います。

下のスクリーンショットはRubotoで作ったあみだくじアプリです。…が、フォントが等幅じゃないので、画面が盛大に崩れてしまった…orz
それとRubotoからのandroid.os.Handlerの使い方をまだよく理解してなかったので、たまたま動かしてたセンサイベントをトリガーにして画面更新させました。

加速度センサのイベントを取得する部分はRubyConf2010で発表された方のソースを参考にしました。
https://github.com/jackowayed/accelerate

$activity.handle_create do |bundle|
  setTitle 'Shake to Change Color'

  #加速度センサを使うした準備
  @sensors = getSystemService Context::SENSOR_SERVICE
  accelerometers = @sensors.getSensorList(Sensor::TYPE_ACCELEROMETER)
  unless accelerometers.empty?
    @accelerometer = accelerometers[0]
  end
  @sensor = AccelerometerEventListener.new

  @sensor.handle_sensor_changed do |sensor_event| #ここでイベントキャッチ
    vals = sensor_event.values
    if Math.sqrt(vals[0] ** 2 + vals[1] ** 2 + vals[2] ** 2) > 12 #しきい値チェック
      getWindow.setBackgroundDrawable ColorDrawable.new(Color.rgb(rand(255), rand(255), rand(255)))
    end
  end

  setup_content do
    text_view :text => "shake!"
  end

  handle_pause do
    @sensors.unregisterListener @sensor, @accelerometer if @accelerometer
  end

  handle_resume do 
  #センサの登録
  #(自分の場合、二番目の引数がSensorManager::SENSOR_ACCELEROMETER じゃ無いと
  #エラーになってしまった。
  #最初の"ruboto gen interface ..."のあたりが正しくなかったのだろうか…)
    @sensors.registerListener @sensor, @accelerometer, SensorManager::SENSOR_DELAY_UI if @accelerometer
  end
end

もう少し理解を進めて、とりあえずちゃんとあみだアプリは完成させておきます。それ以外にも色々試したり、JRubyの勉強したりして、何か追加してみるなり、ちょっとでも貢献できればなと思ってます。

取りあえず自分の備忘録と、他の方のきっかけになればと思ってReadme訳してみてます *1
情報は下記で随時更新していく予定です。
http://silentworlds.info/pukiwiki/index.php?Ruboto

イベントのこと

今回で3回目のTokyuRubyKaigiですが、今回はECナビさんの会場をお借りすることが出来て、以前の退廃ムードから一転、あか抜けた感じなったような気がします。
が、しかし、結局は酔っぱらいの集団なので終盤のぐだぐだはいつもの感じでしたw
ここまで酔っぱらってLTやるイベントはそうそうないと思うので、酒の勢いでLTデビューしたい方はぜひ参加してみるのが良いと思います。
参加された皆様、協力された皆様ありがとうございました。
次回開催予定日は10/29(とぅっ|じゅー肉の日)となっています。

当日の雰囲気は、下記のTogetterで少し分かるかも。
http://togetter.com/li/143092