Introduce dRuby
by
shigeru. nakajima
×
Copy
Open
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Slide 1
Slide 1 text
dRubyの紹介 19年目のdRuby 中島 滋(@ledsun) 株式会社ラグザイア 2024/09/25 第三回 町田SE-meetup
Slide 2
Slide 2 text
dRubyとは 今日はdRubyについて紹介したいと思い ます。dRubyはRubyのライブラリーの1つ です。 dRubyのdはdistributedのdです。 分散の意味です。
Slide 3
Slide 3 text
分散 ここでの分散は、複数のプロセスに分散す るという意味です。
Slide 4
Slide 4 text
たとえるなら リモートプロシジャコールの仲間です。 CORBAやJavaのJava Message Service、SOAPを使ったWebサービスな どをイメージしてもらうえるとわかりやすい と思います。 例えが古いんですけど、dRubyも1999年 生まれ。20世紀のテクノロジーです。
Slide 5
Slide 5 text
irbで試してみる Rubyにはirbという対話型のシェルがあり ます。これを使ってdRubyを試してみま しょう。 irb -r drb
Slide 6
Slide 6 text
試してみましょう サーバー class Foo def greeting = puts 'Hello, World.' end DRb.start_service 'druby://localhost:54320', Foo.new
Slide 7
Slide 7 text
試してみましょう (続き) クライアント foo = DRbObject.new_with_uri 'druby://localhost:54320' foo.greeting どうなるでしょうか?
Slide 8
Slide 8 text
試してみましょう (まとめ) Remote Method Invocationできるこ とがわかりました。
Slide 9
Slide 9 text
最初の面白い点 RubyではdRubyがRubyに標準添付さ れています。 JavaのJMSの場合は、J2SEには入ってい なくて、J2EEに入っていました。
Slide 10
Slide 10 text
データの共有 サーバーでハッシュ公開します。 DRb.start_service 'druby://localhost:54321', Hash.new
Slide 11
Slide 11 text
データの共有 (続き) クライアントで数値を設定します。 kvs = DRbObject.new_with_uri 'druby://localhost:54321' kvs[:number] = 1
Slide 12
Slide 12 text
データの共有 (続き) クライアントをもう1つひらいて、値を確認 kvs = DRbObject.new_with_uri 'druby://localhost:54321' kvs[:number] さらに、値を設定 kvs[:number] = 2
Slide 13
Slide 13 text
データの共有 (続き) クライアント1に戻って kvs[:number] どうなるでしょうか?
Slide 14
Slide 14 text
データの共有 (まとめ) 値を共有できていることがわかります。 こんな感じで、dRubyを使うと簡単にサー バーを経由して値を共有できます。 この仕組みをつかってテストを並列分散実 行する仕組みを作っている人達もいるみた いです。
Slide 15
Slide 15 text
変な物を共有する Rubyには$stdoutというグローバル変数 があります。 文字通り標準出力を表してます。 $stdout.puts 'hi' hi が表示されます。 puts ‘hi’ と同じ動きです。
Slide 16
Slide 16 text
変な物を共有する (続き) クライアント1で DRb.start_service kvs[:stdout] = $stdout
Slide 17
Slide 17 text
変な物を共有する (続き) クライアント2で kvs[:stdout].puts 'Hello' どうなるでしょうか?
Slide 18
Slide 18 text
変な物を共有する (続き) エラーになる 1. クライアント1で’Hello’が表示される 2. クライアント2で’Hello’が表示される 3.
Slide 19
Slide 19 text
変な物を共有する (続き) クライアント1に’Hello’表示されます。 この動き、ぶっとんでいると思いません か?
Slide 20
Slide 20 text
変な物を共有する (まとめ) クライアント1の DRb.start_service がミ ソ。クライアントだけどサーバーにもなって います。
Slide 21
Slide 21 text
リモート呼び出しとのちがい 最初CORBAやJMSに似てるって言った。 けど、すこしちがう。CORBAやJMSは、ク ライアントからサーバーを呼び出す仕組み をつくって、あとは使う人がよしなにって感 じ。 dRubyには、クライアントから共有したオブ ジェクトを別のクライアントから呼び出す呼 び出す仕組みも入っている。クライアント2 はクライアント1のURLを知らなくても呼び 出せる。
Slide 22
Slide 22 text
分散 全てのノードがクライアントにもサーバーに もなりやすい仕組み。クライアント-サーバー を作るための仕組みじゃなくて、分散コン ピューティングするための仕組み。 dRubyのdはdistributedのdです。 分散の意味です。
Slide 23
Slide 23 text
まとめ だからなんなの?って思うじゃないです か?僕もよくわかっていません。 dRubyの存在を2005年に知って、そのと き試してわからなかった。19年経っても全 然わっかんねーわ
Slide 24
Slide 24 text
参考文献 関 将俊 “n月刊ラムダノート Vol.2, No. 1(2020)” 関 将俊 “dRubyによる分散・Webプログ ラミング” @makicamel “dRuby 入門者によるあ なたの身近にあるdRuby 入門”
Slide 25
Slide 25 text
提供