第1回 JRubyユーザ会やりましょう

81 views
Skip to first unread message

Kouichi Fujikawa

unread,
Jul 11, 2010, 11:18:25 PM7/11/10
to jruby-u...@googlegroups.com
藤川です。

第0回から少し間があきましたが、第1回のユーザ会を
8月の頭ごろにやりたいと思います。
今のところ、8/6(金)が有力ですが、日付決まり次第追ってATNDで
告知します。(会場の都合とかあるので)

実は、JRubyKaigiのスピーカー(JRubyユーザ会の主要メンバーと
だいたいかぶっている)で、こういうのやりたいと話していて、
今回はJRubyで「Google AppEngine(GAE)」にフォーカスを当てたいと
考えています。

以下のような構成を考えているのですが、他にこういうふうにやりたいとか
ありますか?

前半(1hくらい)
・GAE/JRubyに関するプレゼン・LT
- @urekatさんのJRubyKaigiネタプレビュー? (仮)

後半(残り・1h?)
・GAE/JRubyハンズオン
- @urekat先生によるHello World by GAE/JRuby (仮) ← (基本これ)
- GAE詳しい人はテーマを決めてアプリ作ってみても可
- 他のJRubyアプリも可 (JRuby on Rails 3やってみます、とか)

ご意見ください。前半のプレゼン、LT立候補も歓迎ですので
このMLまたは藤川までお知らせください。
(AppEngineネタじゃないJRubyネタもたぶんOKです。)

藤川

--
藤川 幸一 (FUJIKAWA Koichi)

Blog: http://fujibee.org/ (ja) http://fujibee.org/en (en)
Twitter: http://twitter.com/fujibee
LinkedIn: http://www.linkedin.com/in/koichifujikawa
Working for: http://cirius.co.jp/
Founder of: http://github.com/fujibee/hadoop-papyrus

Julien

unread,
Jul 12, 2010, 4:15:39 AM7/12/10
to 日本JRubyユーザ会
ジュリアンです


面白そうです!

RoR 3 on GAE... チャレンジですね!

スケジュール的に8月頭はみんないそうなんでいいと思います。


宜しくお願いします

ごろ

unread,
Jul 12, 2010, 11:28:49 AM7/12/10
to 日本JRubyユーザ会
原 嘉彦です。

第1回ユーザ会、良いですね。
8月頭頃開催だったら、私も参加したいです。

実は晩秋に、ソウルで開催される某OSS系セミナで、ソウルの大学生さんや
若手エンジニアをターゲットとした勉強会が開かれることとなり、
その席で「クラウド&JRuby on Rails」で何か話さなきゃならなくなりそうな
様子にありまして
「自分のネタがイケてるかどうかを誰かに聞いていただきたい & 他のネタ
探しもしたい」
な状態でして 、、、

と、言うわけで ATND での告知、お待ちしております。

takeru sasaki

unread,
Jul 13, 2010, 11:52:59 AM7/13/10
to jruby-u...@googlegroups.com
佐々木@urekatです。


>> 前半(1hくらい)
>> ・GAE/JRubyに関するプレゼン・LT
>> - @urekatさんのJRubyKaigiネタプレビュー? (仮)

目次は用意しますので、聞きたいことや気になることを考えてきていただけると
良いかもしれません。(あらかじめメールで知らせてくれるとなお良いはずです。)
参加者の興味次第でのぐだぐだ深掘りトークしていくという感じになるかもしれません。
それで良いと思いますが。


>> 後半(残り・1h?)
>> ・GAE/JRubyハンズオン
>> - @urekat先生によるHello World by GAE/JRuby (仮) ← (基本これ)
>> - GAE詳しい人はテーマを決めてアプリ作ってみても可
>> - 他のJRubyアプリも可 (JRuby on Rails 3やってみます、とか)

1時間しかないので「インストール、掲示板、デプロイ手順」で精一杯ですね。
blogのチュートリアル記事
http://d.hatena.ne.jp/urekat/20100422/1271954398
http://d.hatena.ne.jp/urekat/20100220/1266691037
で試せるひとには物足りないでしょう。

よろしくお願いします!

Kouichi Fujikawa

unread,
Jul 18, 2010, 3:35:55 AM7/18/10
to jruby-u...@googlegroups.com
みなさん、

ジュリアンさん、原さん、佐々木さんコメントありがとうございます!

西澤さんから、今回も楽天で会場を用意いただけるということが
決まりましたので、ATND作成しました。

http://atnd.org/events/6595

アジェンダは、詳細を追記していきますので、参加される方は
ぜひ参加前にもう一度見てみてください。

懇親会も予定しています!参加される方は、ATNDのアンケートで
お願いします。

今回は、@urekatさんのブログなどで予習していくといいかもしれないですね。
http://d.hatena.ne.jp/urekat/

では、よろしくお願いします。

藤川

2010年7月14日0:52 takeru sasaki <sasaki...@gmail.com>:

--
藤川 幸一 (FUJIKAWA Koichi)

Blog: http://fujibee.org/ (ja) http://fujibee.org/en (en)

takeru sasaki

unread,
Aug 2, 2010, 11:06:50 PM8/2/10
to jruby-u...@googlegroups.com
佐々木です。

資料作成しました。
https://docs.google.com/present/view?id=dnkxbrd_99d6bg3vhn
このへんもっと知りたいとかあれば教えてください。前もってでも当日でもOKです。

質問、ツッコミ等がもりあがらないと1時間もかからないとおもうので他の方の
発表かLTかがある方が良いかもしれません。


2010年7月18日16:35 Kouichi Fujikawa <fuj...@gmail.com>:

Kouichi Fujikawa

unread,
Aug 2, 2010, 11:26:14 PM8/2/10
to jruby-u...@googlegroups.com
藤川です。

佐々木さん資料公開ありがとうございます!

ATNDのほう、まだ定員まで余裕があるようなので、
JRubyとGAEに興味がある方がいたらお知らせしてあげてください。

http://atnd.org/events/6595

もしLTやりたい方がいたら当日でも構いませんので、
お知らせください。
私も、twitter-jrubyというgemを、twitterというCRuby用gemから
github forkして作ったので、簡単にその説明LTやるかもしれません。
#でもしばらく放置していたらGAE上で動かなくなった。。どうしたものか。

では、皆さん当日よろしくお願いします。

藤川

2010年8月3日12:06 takeru sasaki <sasaki...@gmail.com>:

Yoko Harada

unread,
Aug 3, 2010, 2:59:29 PM8/3/10
to jruby-u...@googlegroups.com
こんにちは、原田です。
JRubyユーザ会、楽しそうでうらやましいです。

2010/8/2 takeru sasaki <sasaki...@gmail.com>:


> 資料作成しました。
> https://docs.google.com/present/view?id=dnkxbrd_99d6bg3vhn
> このへんもっと知りたいとかあれば教えてください。前もってでも当日でもOKです。

gemsのところ(10枚目のスライド?)にNokogiriの名前が出ていたので、思わず、出てきてしまいました。
佐々木さんはご存知かとは思うのですが、あの資料だけ見た人の誤解を招くかもしれないので、補足です。

NokogiriはGAEで動くのですが、pure
Java版じゃないと動きません。現在、1.5.0.beta.2というバーションがそれになりますので、Gemfileにはこのバージョン番号をお忘れなく。加えて、このバージョンそのままでは動かなくて、(^^;;
ちょっとした修正が必要でした(スミマセン。確認していなくて。)。http://wiki.github.com/tenderlove/nokogiri/pure-java-nokogiri-for-jrubyをご覧くださいませ。

JRubyKaigiでみなさまにお会いできるのを楽しみにしています。

原田

Yoko Harada

unread,
Aug 3, 2010, 3:04:10 PM8/3/10
to jruby-u...@googlegroups.com
2010/8/2 Kouichi Fujikawa <fuj...@gmail.com>:

> お知らせください。
> 私も、twitter-jrubyというgemを、twitterというCRuby用gemから
> github forkして作ったので、簡単にその説明LTやるかもしれません。
> #でもしばらく放置していたらGAE上で動かなくなった。。どうしたものか。

もしかすると、require 'java'
を入れると動いたりしませんか?スタートアップの時間を短縮するために、起動時にJavaライブラリをロードしなくなったんですよ。確か
1.5.0からだったかと。今のgoogle-appengine gem
は1.5.1が入っているので、それが原因かも。単なるguessなので、違っていたらごめんなさい。

原田

NAKAMURA, Hiroshi

unread,
Aug 3, 2010, 9:09:41 PM8/3/10
to jruby-u...@googlegroups.com
2010/8/3 Kouichi Fujikawa <fuj...@gmail.com>:

> ATNDのほう、まだ定員まで余裕があるようなので、
> JRubyとGAEに興味がある方がいたらお知らせしてあげてください。
>
> http://atnd.org/events/6595

だいぶ増えてきましたね!(実は最初ハラハラしてました)

> もしLTやりたい方がいたら当日でも構いませんので、
> お知らせください。
> 私も、twitter-jrubyというgemを、twitterというCRuby用gemから
> github forkして作ったので、簡単にその説明LTやるかもしれません。
> #でもしばらく放置していたらGAE上で動かなくなった。。どうしたものか。

[この節PR] 橋本さんからポストもありましたが、明日池袋でJRuby関連のイベントがあります。
http://bit.ly/JRubyKaigi2010pre
基本はJRuby on Rails本の著者訳者さんらがメインなのですが、
そこに私も参加させていただくことになり、あまりにJRuby on Rails方面に無知なのも困るので、
いろいろ調べました。(ここまで前置き)

で、せっかく調べたものの、明日私がしゃべる時間はあまりないと思うので、
もしあさってのJRubyユーザ会で時間があれば、明日しゃべらなかったネタでLTしたいです。

1. JRubyOnRails本2冊の内容比較
2. JRubyOnRailsの、対CRubyOnRails、対Javaウェブフレームワークの得失整理
3. JRubyKaigiセッション紹介
4. JRubyのJITコンパイラ in a nutshell

たぶ4を明日のイベントでしゃべることはないはずなので、どれかはやれます。
技術者系多数なら4がいいかな?

takeru sasaki

unread,
Aug 3, 2010, 9:43:41 PM8/3/10
to jruby-u...@googlegroups.com
佐々木です。

原田さん
ありがとうございます。
本番前に動作チェックして動くバージョンを埋める予定です。
#結構面倒な作業。すんなりいけばいいけど。

なひさん


> 4. JRubyのJITコンパイラ in a nutshell

JRubyの「JVMバイトコード、JITコンパイラ、動作速度、効率」の現状、未来、限界あたりをしりたいです。
要はMirahはほんとうに必要なのか?ってことです。

muga_nishizawa

unread,
Aug 3, 2010, 10:00:04 PM8/3/10
to 日本JRubyユーザ会
こんにちは、西澤無我です。

> なひさん
>
> > 4. JRubyのJITコンパイラ in a nutshell
>
> JRubyの「JVMバイトコード、JITコンパイラ、動作速度、効率」の現状、
> 未来、限界あたりをしりたいです。 要はMirahはほんとうに必要なのか?
> ってことです。

佐々木さんと同じく、私もそこの部分にとても興味があります。知りたいです。
可能でしたら、お聞かせください。

NAKAMURA, Hiroshi

unread,
Aug 4, 2010, 3:20:15 AM8/4/10
to jruby-u...@googlegroups.com
2010/8/4 muga_nishizawa <muga.ni...@gmail.com>:

>> > 4. JRubyのJITコンパイラ in a nutshell
>>
>> JRubyの「JVMバイトコード、JITコンパイラ、動作速度、効率」の現状、
>> 未来、限界あたりをしりたいです。 要はMirahはほんとうに必要なのか?
>> ってことです。
>
> 佐々木さんと同じく、私もそこの部分にとても興味があります。知りたいです。
> 可能でしたら、お聞かせください。

JRubyKaigiまでにさらにまとめる予定ですが、わかる範囲で答えます。
では、時間が余ったらLTで、なければ懇親会等で。

Kouichi Fujikawa

unread,
Aug 4, 2010, 3:36:23 AM8/4/10
to jruby-u...@googlegroups.com
原田さん、NaHiさん、佐々木さん、西澤さん、

コメントありがとうございます!
ぜひ、LTというか、枠を取りましょう。
@urekatさんの前半のプレゼンのあとくらいですね。
ATNDも更新しておきます。

私も4を聞きたいので、勝手に4の内容書いておきます。
変えたい場合はお知らせください。

藤川

2010年8月4日16:20 NAKAMURA, Hiroshi <naka...@gmail.com>:

--

Kouichi Fujikawa

unread,
Aug 4, 2010, 3:44:04 AM8/4/10
to jruby-u...@googlegroups.com
原田さん、

コメントありがとうございます。
JRubyKaigiでお会いできること、楽しみにしています!

GAEの方で動かなくなったのは、どうもGAE自体のAPI制限のせいのようで、
@urekatさんに聞こうと思ってました。

こんな感じで。。
java.security.AccessControlException: access denied
(java.net.SocketPermission api.twitter.com resolve)

前は出なかったんですけどね。。

さらに、ローカルでtwitter-jruby動かしたら、openssl-jrubyがこんなエラーだしてたので、
こっちはNaHiさんに聞こうと思ってました。

ruby-1.8.7-p174 > require 'openssl'
LoadError: no such file to load -- jopenssl
from /Users/fujikawa/.rvm/rubies/ruby-1.8.7-p174/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:36:in
`gem_original_require'
from /Users/fujikawa/.rvm/rubies/ruby-1.8.7-p174/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:36:in
`require'
from /Users/fujikawa/.rvm/gems/ruby-1.8.7-p174@gaej-20100730/gems/jruby-openssl-0.7/lib/openssl.rb:61

#簡単にスペシャリストに質問できるJRubyユーザ会って素敵ですね :)

藤川

2010年8月4日4:04 Yoko Harada <yok...@gmail.com>:

--

Kouichi Fujikawa

unread,
Aug 4, 2010, 3:53:38 AM8/4/10
to jruby-u...@googlegroups.com
藤川です。
もうひとつ、ユーザ会に参加される方にお知らせ。

前回、TypeWithMeを使って参加者のコミュニケーションに使いましたが、
今回はこのユーザ会でも一部で流行っているGoogle Waveを使ってみたいと
思います!

https://wave.google.com/wave/waveref/googlewave.com/w+VU03wk0pA

で、すでに始めていますので、参加予定の方はアクセスしてみてください!
オンラインのみで参加されたい方も、ぜひ。

#waveの招待とか必要なのかな?もしうまくいかない人がいたら教えてください。

藤川

2010年8月4日16:36 Kouichi Fujikawa <fuj...@gmail.com>:

takeru sasaki

unread,
Aug 4, 2010, 4:17:44 AM8/4/10
to jruby-u...@googlegroups.com
佐々木です。
 
GAEの方で動かなくなったのは、どうもGAE自体のAPI制限のせいのようで、
@urekatさんに聞こうと思ってました。

こんな感じで。。
java.security.AccessControlException: access denied
(java.net.SocketPermission api.twitter.com resolve)

前は出なかったんですけどね。。

resolveってDNSを引こうとしているんですかね?
そんな操作初めから許されていなかったはず・・・


waveはこないだのGoogleIO以降招待不要になったはずです。

半谷充生

unread,
Aug 4, 2010, 4:18:11 AM8/4/10
to jruby-u...@googlegroups.com
こんにちは、半谷(はんがい)です。

> https://wave.google.com/wave/waveref/googlewave.com/w+VU03wk0pA
>
> で、すでに始めていますので、参加予定の方はアクセスしてみてください!
> オンラインのみで参加されたい方も、ぜひ。
>
> #waveの招待とか必要なのかな?もしうまくいかない人がいたら教えてください。

さっそくアクセスしてみましたが、
You are not a participant in this wave.
と言われ、アクセス出来ませんでした。

佐々木さんのブログの「■[gae]AppEngineのテクニック集」
https://wave.google.com/wave/waveref/googlewave.com/w+7rElg8s7A
にはアクセスできるのですが・・・。

宜しくお願い致します。

半谷

2010年8月4日16:53 Kouichi Fujikawa <fuj...@gmail.com>:

takeru sasaki

unread,
Aug 4, 2010, 4:20:46 AM8/4/10
to jruby-u...@googlegroups.com
public設定にしました。
もういちど試してみてください。


pub...@a.gwave.com」をメンバーに追加するとpublicになります>藤川さん




2010年8月4日17:18 半谷充生 <mitsuo...@gmail.com>:

Mitsuo...@gmail.com

unread,
Aug 4, 2010, 4:36:04 AM8/4/10
to jruby-u...@googlegroups.com
佐々木さん、無事行けました!
ありがとうございました。



2010/08/04 17:20 takeru sasaki <sasaki...@gmail.com>:

NAKAMURA, Hiroshi

unread,
Aug 4, 2010, 9:32:38 AM8/4/10
to jruby-u...@googlegroups.com
2010/8/4 Kouichi Fujikawa <fuj...@gmail.com>:

> GAEの方で動かなくなったのは、どうもGAE自体のAPI制限のせいのようで、
> @urekatさんに聞こうと思ってました。
>
> こんな感じで。。
> java.security.AccessControlException: access denied
> (java.net.SocketPermission api.twitter.com resolve)
>
> 前は出なかったんですけどね。。

もう少し長い(できれば全部の)スタックとレースはありませんか。
モジュール更新かなにかで、名前解決に行くようになったのかもしれません。

> さらに、ローカルでtwitter-jruby動かしたら、openssl-jrubyがこんなエラーだしてたので、
> こっちはNaHiさんに聞こうと思ってました。
>
> ruby-1.8.7-p174 > require 'openssl'
> LoadError: no such file to load -- jopenssl
> from /Users/fujikawa/.rvm/rubies/ruby-1.8.7-p174/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:36:in
> `gem_original_require'
> from /Users/fujikawa/.rvm/rubies/ruby-1.8.7-p174/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:36:in
> `require'
> from /Users/fujikawa/.rvm/gems/ruby-1.8.7-p174@gaej-20100730/gems/jruby-openssl-0.7/lib/openssl.rb:61

MRIからjruby-opensslを読みに行ってますね。どこかでjruby-openssl gemを明示的に読んでませんか。

MRIでjruby-openssl gemを読み込んだら、空気読んでopensslにfallbackしたほうがいいのかなあ。

Kouichi Fujikawa

unread,
Aug 4, 2010, 9:26:11 PM8/4/10
to jruby-u...@googlegroups.com
佐々木さん、

> resolveってDNSを引こうとしているんですかね?
> そんな操作初めから許されていなかったはず・・・

なるほど、twitter gemのほうをpullしてきたのがまずかったのかも
しれません。差分見てみます。

waveのほうのpublic設定ありがとうございます!
でも、waveは開発中止なんですね。。残念。
http://journal.mycom.co.jp/news/2010/08/05/008/

藤川

2010年8月4日17:17 takeru sasaki <sasaki...@gmail.com>:

--

Kouichi Fujikawa

unread,
Aug 4, 2010, 9:31:13 PM8/4/10
to jruby-u...@googlegroups.com
NaHiさん、

> MRIからjruby-opensslを読みに行ってますね。どこかでjruby-openssl gemを明示的に読んでませんか。

なるほど、そういえばそうです。失礼しました。
appengine gemを使うとCRuby上でJRubyなので、わけわからなくなりますね。。

> MRIでjruby-openssl gemを読み込んだら、空気読んでopensslにfallbackしたほうがいいのかなあ。

無理やりplatform指定してCRuby gemにjruby-opensslを入れてしまっただけなので、
あまりこんなことになる人は少ないかも。。
「CRubyではjruby-opensslは使えません」的なメッセージのほうがいいかも。

#ユーザ会用に久しぶりにGAE/JRubyやってるので混乱してました。

藤川

2010年8月4日22:32 NAKAMURA, Hiroshi <naka...@gmail.com>:

--

NAKAMURA, Hiroshi

unread,
Aug 4, 2010, 10:57:51 PM8/4/10
to jruby-u...@googlegroups.com
2010/8/5 Kouichi Fujikawa <fuj...@gmail.com>:
> 「CRubyではjruby-opensslは使えません」的なメッセージのほうがいいかも。

確かに。そのうちやります。 http://bugs.jruby.org/4992

Kouichi Fujikawa

unread,
Aug 9, 2010, 2:18:51 AM8/9/10
to jruby-u...@googlegroups.com
藤川です。

先週末のユーザ会に参加された方、お疲れさまでした。
Google Groupにページを作成しました。

http://groups.google.co.jp/group/jruby-users-jp/web/jruby-2

ブログとか書かれた方がいたら、追加します。
(勝手に追加してもらってもいいです)

次回はJRubyKaigiに合わせて、豪華ゲスト(CharlesとTomと原田さん)を
迎えてプチユーザ会をつくばor東京で開きたいと考えています。
なにかいいアイデアがあれば教えてください!

藤川

Koichiro Ohba

unread,
Aug 9, 2010, 4:11:31 AM8/9/10
to jruby-u...@googlegroups.com
大場です。

On 2010/08/09, at 15:18, Kouichi Fujikawa <fuj...@gmail.com> wrote:

> 次回はJRubyKaigiに合わせて、豪華ゲスト(CharlesとTomと原田さん)を
> 迎えてプチユーザ会をつくばor東京で開きたいと考えています。
> なにかいいアイデアがあれば教えてください!

金曜の夜にコミュニティ主体の食べ物を持ち寄ったビアバッシュのようなイベントがあります。

http://rubykaigi.tdiary.net/20100803.html#p03

この中で開催してはどうでしょうか。

Kouichi Fujikawa

unread,
Aug 9, 2010, 4:18:47 AM8/9/10
to jruby-u...@googlegroups.com
おー、それいいですね!
招待組にも伝えておいてください。
第2回として、ATNDとかも作るかな。(あまり必要ではないですが・・)

藤川

2010年8月9日17:11 Koichiro Ohba <koic...@meadowy.org>:

--

Koichiro Ohba

unread,
Aug 9, 2010, 6:34:32 AM8/9/10
to jruby-u...@googlegroups.com
藤川さん

大場です。
今はMP不足で対応できません。よろしくお願いします!

コミュニティナイトの具体的な参加方法の案内は、日本Rubyの会MLに流れるようなので、そちらを参照して対応お願いします。

#たぶん近日中に案内があると思います

--
Koichiro Ohba / koic...@meadowy.org

NAKAMURA, Hiroshi

unread,
Aug 11, 2010, 9:33:13 PM8/11/10
to jruby-u...@googlegroups.com
2010/8/4 NAKAMURA, Hiroshi <naka...@gmail.com>:

>>> > 4. JRubyのJITコンパイラ in a nutshell
>>>
>>> JRubyの「JVMバイトコード、JITコンパイラ、動作速度、効率」の現状、
>>> 未来、限界あたりをしりたいです。 要はMirahはほんとうに必要なのか?
>>> ってことです。
>>
>> 佐々木さんと同じく、私もそこの部分にとても興味があります。知りたいです。
>> 可能でしたら、お聞かせください。
>
> JRubyKaigiまでにさらにまとめる予定ですが、わかる範囲で答えます。
> では、時間が余ったらLTで、なければ懇親会等で。

@fujibeeさんが作ってくださったまとめにもありますが、この時のプレゼン資料です:

http://bit.ly/JRubyJITCompilerInANutshell

残念ながら、「動作速度、効率(の具体的数値)」や「限界」辺りは資料になく、
また私もデータとして持っていないのですが、懇親会でみなさんと、わかる範囲で
議論させていただきました。大変勉強になりました。ありがとうございました。

また、JRubyKaigi向けに整理している内容の続編として、以下の資料を作りました。

http://bit.ly/JRubySrcReadingGuide

JRubyのソースコードの解説です。作ってから思いましたが、あまりPrezi向きの
内容ではありませんでした。とはいえ、これからJRubyのソースコードを読もう、
という方には多少は役に立つと思います。ご笑覧ください。

muga_nishizawa

unread,
Aug 12, 2010, 2:03:57 AM8/12/10
to 日本JRubyユーザ会
中村さん

お世話になってます。西澤無我です。
第1会ユーザ会のLTの資料拝見させていただきました。

興味深い資料ですね!とても勉強になります。

懇親会のときもここらへんの内容について、激しく質問させていただきましたが、
さらに質問させてください。

JRuby runtime の JIT compiler は hot spot を探して、そこに対して(メソッド単位?)で
Java bytecode に落とし込むというお話でした。さらに JVM の JIT にかかり native に
落ちてより速くなる。一方、jrubyc の場合には、すべての ruby クラスを Java bytecode に
落とし込み、その bytecode がダラダラと長くなってしまうので JVM が hotspot を
探し切れない。結果 native に落ちづらいとお聞きしたと記憶しています。
(酔っていたので記憶があいまいかもしれません、勘違いだったらごめんなさい。)

そこで質問なのですが、どの程度の行数(?サイズ?)の ruby ソースであれば、
jruby の runtime で動作させた場合と、jrubyc で bytecode に落としてから動作させた
場合とで、速度に差が出てくると思われますか?
簡単な 20 行程度のループプログラムを ruby で書いて、両者を実行すると、
ほとんど差がありませんでした。

もしそのあたりの知見もお持ちでしたら、どうぞ教えてください。
どうぞよろしくお願いいたします。

西澤無我

On Aug 12, 10:33 am, "NAKAMURA, Hiroshi" <nakah...@gmail.com> wrote:
> 2010/8/4 NAKAMURA, Hiroshi <nakah...@gmail.com>:

Hiroshi Nakamura

unread,
Aug 22, 2010, 3:04:01 AM8/22/10
to jruby-u...@googlegroups.com
ちゃんと調べてから。。。とか言ってると先になりそうなので、
今わかる範囲で書きます。

2010/8/12 muga_nishizawa <muga.ni...@gmail.com>:


> 懇親会のときもここらへんの内容について、激しく質問させていただきましたが、
> さらに質問させてください。
>
> JRuby runtime の JIT compiler は hot spot を探して、そこに対して(メソッド単位?)で
> Java bytecode に落とし込むというお話でした。さらに JVM の JIT にかかり native に
> 落ちてより速くなる。一方、jrubyc の場合には、すべての ruby クラスを Java bytecode に
> 落とし込み、その bytecode がダラダラと長くなってしまうので JVM が hotspot を
> 探し切れない。結果 native に落ちづらいとお聞きしたと記憶しています。
> (酔っていたので記憶があいまいかもしれません、勘違いだったらごめんなさい。)
>
> そこで質問なのですが、どの程度の行数(?サイズ?)の ruby ソースであれば、
> jruby の runtime で動作させた場合と、jrubyc で bytecode に落としてから動作させた
> 場合とで、速度に差が出てくると思われますか?
> 簡単な 20 行程度のループプログラムを ruby で書いて、両者を実行すると、
> ほとんど差がありませんでした。

jrubycでは、ASTコンパイラ(ASTをbytecodeに変換する)を利用します。jrubyc
では、1 Rubyファイル全体を1 Javaクラスとしてbytecode生成します。そのJava
クラスの中に、そのRubyファイルで定義されているRubyメソッドが1つ1つ
bytecodeコンパイルされて、staticメソッドとして打ち込まれます。

JITコンパイラは、必要に応じてASTコンパイラを呼び出し、hotspotとなってい
る1 Rubyメソッドを、1 Javaクラス、1 staticメソッドとしてbytecodeコンパイ
ルします。

両者で使っているASTコンパイラは基本同じです。ただしJIT動作する場合、
別ファイルのASTも見えているので、多少賢くインライン化することが期待でき
なくはありません。が、直感としては、あまり効果はないと思ってます。ASTレ
ベルだとそんなに高度なことはできないので。

また1.5系のコンパイラは、ランタイム情報を使わずに、静的情報のみでコンパ
イルします。

以上の結果として、hotspotが1つのRubyメソッドであれば、正直どちらの方法を
とっても差は出ないはずです。運がよければJITのほうが速くなるでしょう。
逆に、Rubyで書いたロジックが複雑で(つまり、IO待ちやメモリ出入りが問題で
はなく)、全体をほどよくまんべんなく(?)実行する場合には、インタープリ
タ動作するよりbytecode実行することの速度メリットがあるかもしれません。
が、「どのレベルであれば」というような知見は、残念ながら持っていません。

> もしそのあたりの知見もお持ちでしたら、どうぞ教えてください。
> どうぞよろしくお願いいたします。

JITコンパイルの詳細な話は、いずれ機会があれば、今より詳細にまとめたいと
思います。正直なところ、まだ私もつかんでないところがあり、また1.6もしく
はその先でのIR化(詳しくは http://bit.ly/JRubySrcReadingGuide を)でまた
変わるところだ、というのもあります。

現行JITコンパイラについて、すぐにその詳細な仕組み(定量評価、チューニン
グネタではありません)が知りたい向きには、以下のブログも参考になるかもし
れません。
http://www.realjenius.com/2009/10/06/distilling-jruby-the-jit-compiler/
ただしあまりに細かすぎて、これをちゃんと読める人はおそらくソースコード読
めるんじゃないか、という話はあります。 :-) いやソースコード読みながら
見ると、大変参考になるんですけどね。

メソッドサイズなどのパフォーマンスチューニングネタですが、第一義的には

用途によるため、このレベルのチューニングは、JRubyコア開発者がバランス
を考えながら、一番よさそうなところに設定している。そのため最善解のため
の鉄則というものがクリアでなく、また、次のリリースで無駄になる可能性が
高い。そのため、数値を元にしたチューニングは避けたほうがよい。

となります。が、それでも仕組みを知っていれば効果が得られないわけではない
ので、もう少しヒントを出したいのですが、残念ながら私も数値は持ってません。
JRubyKaigiでは仕組みの説明ができると思うので、その次どこかで、定量的
な話もできればいいかなとは思ってます。

定性的な話としては、ご存知かもしれませんが
http://kenai.com/projects/jruby/pages/PerformanceTuning
http://kenai.com/projects/jruby/pages/JRubyCompiler
あたりがよいです。jrubycは、後者のAOTというところに書いてあります。が、
若干内容が古く、できればWikiを直してからと思っていて、なかなか返信ができ
なかったのでした。JRubyKaigi後かな。。。

Hiroshi Nakamura

unread,
Aug 22, 2010, 3:25:43 AM8/22/10
to jruby-u...@googlegroups.com
しまった。ひとつ書き忘れた。

2010/8/22 Hiroshi Nakamura <naka...@gmail.com>:


> 以上の結果として、hotspotが1つのRubyメソッドであれば、正直どちらの方法を
> とっても差は出ないはずです。運がよければJITのほうが速くなるでしょう。

これだと、#jruup 第一回のときに西澤さんから聞かれた、西澤さんの例では
「jrubycのほうが遅い」に対しての回答と整合性が取れてません。決して運がよ
かったから、ではないはずです。

私の推測では、jrubycのほうが遅くなるのは、JVMレベルでのJITによる最適化が
起こるか起こらないか、の違いだと思っています。jrubycでコンパイルする
場合、1 Rubyメソッド内の全てのコードを、1 Javaメソッドとしてbytecodeコン
パイルします。めったに呼ばれないrescueノード内の処理や、&&ノードの右辺式
など全て、大きさに関わらずbytecodeになります。JVM、というか私が知ってる
のはSunのHotspotのみですが、は、メソッドのサイズを見てJIT化を制御するの
で、何も考えずにbytecodeにしてメソッドを肥大化させると、JVMのJITコンパイ
ラが効率的に動けなくなる、という話です。

まあでも、私も、おそらくJRubyコアチームも、定量的に話ができるほど数字は
持ってません。この辺は、最新のJVMの動向、仕様策定に首を突っ込んでいる
Charlesに任せておいて、具体的に問題になってから焦点を絞って調査、という
のがよいと思います。つまり、西澤さん、具体的な問題を教えてください。:-)

muga_nishizawa

unread,
Aug 22, 2010, 7:51:31 AM8/22/10
to 日本JRubyユーザ会
NaHi さん

長文で説明いただきありがとうございます。本当に興味深いです。

> つまり、西澤さん、具体的な問題を教えてください。:-)

そうですよね^^;
第 0 回のときには、ROMA のソース全体を jrubyc で Java bytecode にして
動かしましたが、もう少しコンポーネントごとに確認していこうと思います。
そのときにはまだご助力くださいmm

どうぞ宜しくお願いいたします。

西澤無我

On Aug 22, 4:25 pm, Hiroshi Nakamura <nakah...@gmail.com> wrote:
> しまった。ひとつ書き忘れた。
>
> 2010/8/22 Hiroshi Nakamura <nakah...@gmail.com>:
Reply all
Reply to author
Forward
0 new messages