Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Tochigi Ruby Kaigi 08 Keynote
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
seki at druby.org
June 29, 2019
Programming
580
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Tochigi Ruby Kaigi 08 Keynote
分散オブジェクトとはアレですか?
seki at druby.org
June 29, 2019
More Decks by seki at druby.org
See All by seki at druby.org
Programming with a DJ Controller — not vibe coding
m_seki
3
1.2k
Agile Leadership Summit Keynote 2026
m_seki
1
1.5k
RWC2025 Ninja-testing with smart playlist
m_seki
4
1.7k
XP, Testing and ninja testing ZOZ5
m_seki
3
2.9k
XP, Testing and ninja testing
m_seki
3
1.3k
RWC 2024 DICOM & ISO/IEC 2022
m_seki
0
580
ERB, ancient and future
m_seki
3
1.1k
ERB Hacks
m_seki
1
1.7k
わりこまれるはなし
m_seki
0
1.2k
Other Decks in Programming
See All in Programming
Claude Opus 4.6以後の受託開発エンジニアの変化(Claude Code開発ノウハウ大公開スペシャルbyクラスメソッド)
iidatakuma
1
900
jsmini JavaScript Engine を作ってみた話
yosuke_furukawa
PRO
0
260
今さら聞けない .NET CLI
htkym
0
150
JAWS-UG横浜 #102 AWSサ終供養LT会 成仏できない AWS サービスたち 〜本日、三体供養します〜
maroon1st
0
270
Embedded SREと共に達成した会員管理システムのAWS移行 - SRE NEXT 2026 ランチスポンサーセッション
niftycorp
PRO
1
3.2k
霧の中の代数的エフェクト
funnyycat
1
440
Google Apps Script で Ruby を動かす
kawahara
0
120
これって Effect でできたのでは? / TSKaigi Mashup Kansai #2
susisu
0
100
エンジニアにデザインハーネスを 〜デザインプロセスを規定するためのハーネス〜 / Design harness from an engineer's perspective
rkaga
2
1.8k
Augmenting AI with the Power of Jakarta EE
ivargrimstad
0
310
信頼性について考えてみる(SRE NEXT 2026 miniLT)
hayama17
0
230
What's New in Android 2026
veronikapj
0
240
Featured
See All Featured
The World Runs on Bad Software
bkeepers
PRO
72
12k
Designing for Performance
lara
611
70k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.5k
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
1
360
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
2
610
The Invisible Side of Design
smashingmag
301
52k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
2.1k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
19k
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
1
820
How GitHub (no longer) Works
holman
316
150k
Reality Check: Gamification 10 Years Later
codingconduct
0
2.2k
Done Done
chrislema
186
16k
Transcript
分散オブジェクトとは アレですか? SSID: toruby pass: toruby08 Tochigi RubyKaigi 08 Masatoshi
SEKI / @m_seki
http://www.druby.org/drb20_tork08.pdf ֎ʹग़Εͳ͍࣮श༻ͷωοτϫʔΫ SSID: toruby pass: toruby08 SSID: toruby pass: toruby08
Agenda 頃 Workshop SSID: toruby pass: toruby08
࡞Γͳ͕Βߟ͑Δͷ͕͖ dRuby SSID: toruby pass: toruby08
OOPͷϑΝϯλδʔ SSID: toruby pass: toruby08
ࢄOOPͷϑΝϯλδʔ SSID: toruby pass: toruby08
dRubyͰ࡞ͬͨͷ SSID: toruby pass: toruby08
ઌฦΓ OOP SSID: toruby pass: toruby08
Ͱ͖͔ͯΒߟ͑ͨ͜ͱ SSID: toruby pass: toruby08
ϓϩηεΛ͚Δҙຯ SSID: toruby pass: toruby08
dRuby 20th anniversary hands-on workshop @m_seki /
[email protected]
ॏཁ 2005 ! SSID: toruby pass: toruby08 dRuby ʹΑΔ ؔকढ़ஶ
ࢄ ɾ Web ϓϩάϥϛϯά
The dRuby Book 2012 Out of print SSID: toruby pass:
toruby08
HTML൛ެ։த http://www.druby.org/sidruby/ SSID: toruby pass: toruby08
Rubyͱࢲ 1999 ERB, dRuby, .... 2000 Perl/RubyConference SSID: toruby pass:
toruby08
ERB Ruby SSID: toruby pass: toruby08
dRuby SSID: toruby pass: toruby08
ࠓ dRuby 頃 SSID: toruby pass: toruby08
ࠓ SSID: toruby pass: toruby08
RMI Remote Method Invocation SSID: toruby pass: toruby08
αʔό Web SSID: toruby pass: toruby08
dRuby SSID: toruby pass: toruby08
Ruby෩ Web dRuby Ruby Ruby SSID: toruby pass: toruby08
ԋश1 Hello, World. SSID: toruby pass: toruby08
ԋश1 SSID: toruby pass: toruby08 hello_server.rb hello_client.rb hello() "Hello, World."
hello_server.rb require 'drb/drb' class Hello def hello puts('Hello, World.') end
end DRb.start_service('druby://localhost:54000', Hello.new) while true sleep 1 end
require require 'drb/drb' class Hello def hello puts('Hello, World.') end
end DRb.start_service('druby://localhost:54000', Hello.new) sleep
DRb.start_service require 'drb/drb' class Hello def hello puts('Hello, World.') end
end DRb.start_service('druby://localhost:54000', Hello.new) sleep
URI require 'drb/drb' class Hello def hello puts('Hello, World.') end
end DRb.start_service('druby://localhost:54000', Hello.new) sleep
ऴྃͤ͞ͳ͍ require 'drb/drb' class Hello def hello puts('Hello, World.') end
end DRb.start_service('druby://localhost:54000', Hello.new) sleep
ଋࣄ require 'drb/drb' DRb.start_service URI SSID: toruby pass: toruby08
hello_client.rb require 'drb/drb' DRb.start_service ro = DRbObject.new_with_uri('druby://localhost:54000') ro.hello
hello_client.rb require 'drb/drb' DRb.start_service ro = DRbObject.new_with_uri('druby://localhost:54000') ro.hello
hello_client.rb require 'drb/drb' DRb.start_service ro = DRbObject.new_with_uri('druby://localhost:54000') ro.hello
hello_client.rb require 'drb/drb' DRb.start_service ro = DRbObject.new_with_uri('druby://localhost:54000') ro.hello
ଋࣄ require 'drb/drb' DRb.start_service DRbObject.new_with_uri SSID: toruby pass: toruby08
ݩ͜Ε class Hello def hello puts('Hello, World.') end end ro
= Hello.new ro.hello
require 'drb/drb' DRb.start_service ro = DRbObject.new_with_uri('druby://localhost:54000') ro.hello require 'drb/drb' class
Hello def hello puts('Hello, World.') end end DRb.start_service('druby://localhost:54000', Hello.new) sleep
ԋश1 hello_client.rb hello_server.rb hello_client.rb SSID: toruby pass: toruby08
ԋश2 (Hash) SSID: toruby pass: toruby08
Hash ( ) Array ( ) SSID: toruby pass: toruby08
hash_server.rb require 'drb/drb' require 'pp' front = Hash.new DRb.start_service('druby://localhost:54300', front)
while true sleep 10 pp front end
ԋश2 SSID: toruby pass: toruby08 hash_server.rb irb irb
ԋश2 "String" 2012 Time.now $stdout SSID: toruby pass: toruby08
CGIͷྫ SSID: toruby pass: toruby08 CGI Web App CGI CGI
CGI long lifetime short lifetime
WEBrickʹΑΔΞϓϦ WEBrick HTTP CGI SSID: toruby pass: toruby08
WEBrick::CGI require 'webrick/cgi' class MyCGI < WEBrick::CGI def do_GET(req, res)
res["content-type"] = "text/plain" ret = "hoge\n" res.body = ret end end MyCGI.new.start()
start WEBrick::CGI#start(env = ENV, stdin = $stdin, stdout = $stdout)
startϝιου $stdin, $stdout SSID: toruby pass: toruby08
m_seki's cgi require 'drb/drb' DRb.start_service('druby://localhost:0') ro = DRbObject.new_with_uri('druby://localhost:50830') ro.start(ENV.to_hash, $stdin,
$stdout)
startͷΑ͏͢ SSID: toruby pass: toruby08 CGI Web App $stdin.read $stdout.write
start(env, $stdin, $stdout)
Δͼ·40߸ SSID: toruby pass: toruby08
ԋश6 Shi-ri-to-ri SSID: toruby pass: toruby08
·ͱΊ dRuby SSID: toruby pass: toruby08
;Γ͔͑Γ SSID: toruby pass: toruby08