RubeusPresen on Rails

6 views
Skip to first unread message

Eihiro Saishu

unread,
Aug 19, 2008, 10:49:27 PM8/19/08
to rub...@googlegroups.com
最首です。

6月のJRuby勉強会で、秋間くんがプログラミングを見せながら資料を見せて。
という様子を見ていて、ライブコーディング用のプレゼンソフトがあったらいい
なぁ。と思い、Rubeusの勉強がてら作ってみました。開発時間は3時間くらいか
な。ホントにRubeusは、よくできてると思いました。

添付してありますが、Railsプロジェクトです。

Rubeusクライアントは、clientフォルダにあります。複数ファイルにわかれてい
るので、起動コマンドは、startというファイルの中味を参考にしてください。

構造としては、サーバー側をscaffoldで作成。ここに高橋メソッド用のプレゼン
メッセージを入れて行きます。
サーバーはこれだけ。

そしたらサーバーを起動してください。jruby script/serverです。

クライアントは、起動後サーバーにアクセスします。今は、localhost:3000を見
に行きます。

アクセス後、データベースの内容をxmlで受け取り、配列に展開しているだけです。

右矢印もしくはクリックで次のスライドに移ります。
左矢印で戻ります。

Macで動作確認したので、Windowsとかだと違うキーコードかもしれませんが。。

Windowは、アクティブになっていてマウスオーバーすれば、大きくなり、マウス
がウインドウから離れれば、小さくなってプログラミングしているウィンドウが
見やすい。という仕掛けです。

scaffoldでDBの内容を変更したら、キーボード「l」(エル:つまりloadのつも
り)を押すと再読み込みします。
また、キーボード「s」を押すと小さくなります。大きくするなら、マウスオー
バー。

なんか思いつきで、ドンドン書いてしまったので、うまくないところがあると思
います。
秋間くん。暇なときに中味を見て、リファクタしてくれると嬉しいなぁ。

学んだ事:interfaceのimplementが、クラスでincludeだということ。
    :Javaの定数とイベントリスナーのメソッド関係は、JavaとJRubyで大
文字小文字が色々だということ。
例えば:Java: Color.BLACK JRuby: Color.black
:Java: KeyPressed JRuby: keyPressed
つまり基本小文字。頭小文字。2ワード以上の場合、2ワード以降の冒頭大文
字。これ知ってれば、あと一時間早くできたかもかも。

RubeusPresen.zip

taka_2

unread,
Aug 20, 2008, 1:34:39 AM8/20/08
to rubeus
重元です。

RubeusPresen on Rails動かしてみました。
環境は以下の通り。

サーバ側: Linux, 素のRuby on Rails
1) rake db:migrate
2) ruby script/server

クライアント側: Windows, Linux
1) Windows版は接続先を修正(localhost → 実際のサーバのアドレス)
2) clientフォルダに移動して、jruby Presen.rb

> 右矢印もしくはクリックで次のスライドに移ります。
> 左矢印で戻ります。
>
> Macで動作確認したので、Windowsとかだと違うキーコードかもしれませんが。。

Windows、Linux共に問題ありませんでしたよ。
37などの数字の代わりに、
java.awt.event.KeyEvent::VK_LEFT
とか書いてあげれば、環境非依存になると思います。
(rubeusで対応すれば、もう少し簡潔に書けるのかも?)

> Windowは、アクティブになっていてマウスオーバーすれば、大きくなり、マウス
> がウインドウから離れれば、小さくなってプログラミングしているウィンドウが
> 見やすい。という仕掛けです。

素晴らしいですね。
先の勉強会でも、大きくしたり小さくしたりするのに手間取るシーンがあったので、
これは非常に便利だと思います。
> RubeusPresen.zip
> 162K表示ダウンロード

Eihiro Saishu

unread,
Aug 20, 2008, 6:32:52 AM8/20/08
to rub...@googlegroups.com
重元さん

ありがとうございます。
VK_LEFTでしたね。なんだっけなー。と思っていました。
時間がない中作ったので、めんどくさいからkey codeそのまま入れましたが、キーコードは全て直しました。

今日、客先へ移動する時間を利用して、さらに改造しました。
プレゼンのページ毎に、メッセージとプログラムを組み込めるようにしました。

プログラムは、データベースに登録します。

例えばエフェクトをなんかするとか、サーバーにアクセスした結果を表示するとか。プレゼンしながら、だんだんプログラムが変化していく感じです。
Javaでやろうとすると、ちょっと面倒なことかもしれないですが、さすがスクリプト言語。簡単でした。

taka_2 さんは書きました:

RubeusPresen.zip

Eihiro Saishu

unread,
Aug 20, 2008, 7:58:10 AM8/20/08
to rub...@googlegroups.com

調子に乗って、サーバー側でExtentionを登録する時に、Rubyプログラムとして
文法上の問題が無いか確認する機能を付けたのですが、クライアントに組み込ん
ではじめて機能するようにするためには、クライアント内部のメソッドとか使え
なきゃね。ってことで、サーバー側での静的文法チェック機能は、コメントアウ
トしました。

コメントアウトしたのは、Modelに実装。validateとして実装したので、データ
を登録する直前に文法チェックをして、間違えていたらメッセージを表示してDB
への登録を中止するというものです。

しょーがないので、クライアントに実装しました。
サーバーから送られて来たRubyコードに誤りがあると、起動側の画面に
・エラーがあるスライド番号
・エラーの内容
・プログラム
を表示します。

taka_2 さんは書きました:

RubeusPresen.zip

秋間武志

unread,
Aug 20, 2008, 12:06:21 PM8/20/08
to rub...@googlegroups.com
最首さん

サンプルありがとうございます。秋間です。
なんだかすごいことになってきましたね。

で、RubeusPresen on Railsをリポジトリのどこにしまうのかなんですが、
examplesに入れれるとgemがいまより数十倍の大きさになってしまうので、
リポジトリにtrunk、tags、branchesと並んで、applicationsというディレクトリ
を作って、そちらにrubeus_presenをコミットしました。

ちなみに、log/*.* と config/database.yml はコミットできないように
なっていますので、チェックアウトしたら config/database.example.yml を
コピーするなどして、config/database.yml を作成してください。

https://rubeus.googlecode.com/svn/applications/rubeus_presen
あるいは
http://rubeus.googlecode.com/svn/applications/rubeus_presen
です。
最首さんをはじめコミット権限のあるメンバーは、前者で行けますので、
変更修正を行うなら前者でチェックアウト作業してください。


で、リファクタしてみました。

どんな変更をしたのかは、Subversionのコメントをご覧ください。
http://code.google.com/p/rubeus/source/list?start=173

各リビジョンの画面で、expand allをクリックすると、一気に差分が
見えて便利です。Google Code Hostingやっぱり便利っすね。

何かおかしな点などありましたらご指摘ください。

2008/08/20 20:58 Eihiro Saishu <e.sa...@gmail.com>:

秋間武志

unread,
Aug 20, 2008, 12:23:49 PM8/20/08
to rub...@googlegroups.com
秋間です。度々すいません。

ちょっとまだ修正した方がいいところがあったので、
ちょびっと修正しました。
http://code.google.com/p/rubeus/source/list?start=175

リビジョン172辺りでコミットに失敗してますが、
最新版は大丈夫だと思いますので、大目に見てやってください~。

2008/08/21 1:06 秋間武志 <akm...@gmail.com>:

Eihiro Saishu

unread,
Aug 20, 2008, 5:34:20 PM8/20/08
to rub...@googlegroups.com
秋間くん

ありがとう。
テキトーに書き始めたのに、奇麗にリファクタしてもらっちゃって感謝です。
早速、明日のプレゼンで利用します。

秋間武志 さんは書きました:

Eihiro Saishu

unread,
Aug 21, 2008, 8:41:50 AM8/21/08
to rub...@googlegroups.com
最首です。

RubeusPresenいい感じになってきました。
今度は、scaffoldを変更しました。

今までは一覧表示はおなじみのscaffoldでしたが、Ajaxを使って移動したいレ
コードをドラッグ・ドロップすれば、レコード位置を修正してしまうようにしま
した。

To:秋間くん
さっき聞いた話。なんとか解決しました。


ソースは、先ほどコミットしましたので、みなさん是非お使いください。


秋間武志 さんは書きました:

Eihiro Saishu

unread,
Aug 21, 2008, 10:35:58 AM8/21/08
to rub...@googlegroups.com
ちなみに、Ruby以外のコードを一切書く事無く実現しました。


秋間武志 さんは書きました:

Reply all
Reply to author
Forward
0 new messages