the world is connected
TRANSCRIPT
The Worldis Connected
gem install acappella(株) 永和システムマネジメント
アジャイル事業部 Ruby x Agile グループ
伊藤 浩一 (@koic)
2015.07.27 (Mon)永和システムマネジメント 神田オフィス
第14回 西日暮里.rb
Computer programmer, guitarist. Leader of an Agile software development team
at Eiwa System Management, Inc. Lives in Shinjuku.
@koic photo token by @NaCl
• 2014.09.06(Sat) XP祭り2014
• 2014.11.08(Sat) Yokohama.rb Meetup#50
• 2014.11.29(Sat) TokyuRuby会議08
• 2015.01.16(Fri) ありがたい話 公開版
• 2015.02.25(Wed) Ruby Business Users Conference 2015
• 2015.03.28(Sat) 浜松Ruby会議01
• 2015.04.06(Mon) マイナビTV【永和システムマネジメント】のアジャイルな受託開発
• 2015.05.15(Fri) Ruby合同勉強会@Sansan
• 2015.06.04(Thu) 表参道.rb#1
• 2015.06.29(Mon) 西日暮里.rb 1周年記念会
• 2015.07.11(Sat) 関西Ruby会議06
• 2015.07.22(Wed) pixiv x ESM技術交流会
• 2015.07.27(Mon) 第14回 西日暮里.rb
• 2015.08.29(Sat) TokyuRuby会議09
• 2015.09.12(Sat) XP祭り 2015
勤続10周年ツアー中
• 2014.09.06(Sat) XP祭り2014
• 2014.11.08(Sat) Yokohama.rb Meetup#50
• 2014.11.29(Sat) TokyuRuby会議08
• 2014.12.27(Sat) あきーにょカンファレンス#1
• 2015.01.16(Fri) ありがたい話 公開版
• 2015.02.25(Wed) Ruby Business Users Conference 2015
• 2015.03.28(Sat) 浜松Ruby会議01
• 2015.04.06(Mon) マイナビTV【永和システムマネジメント】のアジャイルな受託開発
• 2015.05.15(Fri) Ruby合同勉強会@Sansan
• 2015.06.04(Thu) 表参道.rb#1
• 2015.06.29(Mon) 西日暮里.rb 1周年記念会
• 2015.07.11(Sat) 関西Ruby会議06
• 2015.07.22(Wed) pixiv x ESM技術交流会
• 2015.07.27(Mon) 第14回 西日暮里.rb
• 2015.08.29(Sat) TokyuRuby会議09
• 2015.09.12(Sat) XP祭り 2015
7ヶ月前の心残り体調を崩して参加できず
$ acappella-server acappella 0.1.0 starting on druby://localhost:8989 Run `acappella-server --help` for more startup options Ctrl-C to shutdown server !
$ acappella-client Connect to druby://localhost:8989 Run `acappella-client --help` for more startup options Ctrl-D to exit >
:Client
:SetList
:Singer
songwriter:Songwriter
songwriter:DRbObject
<<Stub>>request(lyrics)
next_song
:Server
<<LocalObject>>
lyrics:String
sing(song)
Client Side (DRbObject.new_with_uri) DRbServer Side (DRb.start_service)write
method_missing(:write, …)
設計図 druby://localhost:8989
:Client
:SetList
:Singer
songwriter:Songwriter
songwriter:DRbObject
<<Proxy>>request(lyrics)
next_song
:Server
<<RemoteObject>>
lyrics:String
sing(song)
Client Side (DRbObject.new_with_uri) DRbServer Side (DRb.start_service)write
method_missing(:write, …)
druby://localhost:8989
リモートオブジェクト is 誰?
:Client
:SetList
:Singer
songwriter:Songwriter
songwriter:DRbObject
<<Proxy>>request(lyrics)
next_song
:Server
<<RemoteObject>>
lyrics:String
sing(song)
Client Side (DRbObject.new_with_uri) DRbServer Side (DRb.start_service)write
method_missing(:write, …)
druby://localhost:8989
リモートオブジェクトを登録して起動する
:Client
:SetList
:Singer
songwriter:Songwriter
songwriter:DRbObject
<<Proxy>>request(lyrics)
next_song
:Server
<<RemoteObject>>
lyrics:String
sing(song)
Client Side (DRbObject.new_with_uri) DRbServer Side (DRb.start_service)write
method_missing(:write, …)
druby://localhost:8989DRbObjectを取得する
:Client
:SetList
:Singer
songwriter:Songwriter
songwriter:DRbObject
<<Proxy>>request(lyrics)
next_song
:Server
<<RemoteObject>>
lyrics:String
sing(song)
Client Side (DRbObject.new_with_uri) DRbServer Side (DRb.start_service)write
method_missing(:write, …)
リモートメソッドの呼び出しdruby://localhost:8989
:Client
:SetList
:Singer
songwriter:Songwriter
songwriter:DRbObject
<<Proxy>>request(lyrics)
next_song
:Server
<<LocalObject>>
lyrics:String
sing(song)
Client Side (DRbObject.new_with_uri) DRbServer Side (DRb.start_service)write
method_missing(:write, …)
druby://localhost:8989
alternative slide
シリアライズとデシリアライズ
DRbObject#method_missinghttps://github.com/ruby/ruby/blob/v2_2_0_preview2/lib/drb/drb.rb#L1133
:Client
:SetList
:Singer
songwriter:Songwriter
songwriter:DRbObject
<<Proxy>>request(lyrics)
next_song
:Server
<<RemoteObject>>
lyrics:String
sing(song)
Client Side (DRbObject.new_with_uri) DRbServer Side (DRb.start_service)write
method_missing(:write, …)
druby://localhost:8989
作詞家に渡された曲をリクエストする
:Client
:SetList
:Singer
songwriter:Songwriter
songwriter:DRbObject
<<Proxy>>request(lyrics)
next_song
:Server
<<RemoteObject>>
lyrics:String
sing(song)
Client Side (DRbObject.new_with_uri) DRbServer Side (DRb.start_service)write
method_missing(:write, …)
druby://localhost:8989
セットリストから次の曲を取り出す
:Client
:SetList
:Singer
songwriter:Songwriter
songwriter:DRbObject
<<Proxy>>request(lyrics)
next_song
:Server
<<RemoteObject>>
lyrics:String
sing(song)
Client Side (DRbObject.new_with_uri) DRbServer Side (DRb.start_service)write
method_missing(:write, …)
歌う druby://localhost:8989
どちらがサーバでどちらがクライアント?“今後、加味したい点
http://www2a.biglobe.ne.jp/seki/ruby/d205.html
• dRubyではどのスクリプトも簡単にサーバになれます。
• それにどのスクリプトもサーバであったり、クライアントであったりします
• その関係はメソッド呼び出しのレシーバ、センダーの関係と同じです。
http://docs.ruby-lang.org/ja/2.1.0/library/drb.html
http://www.esm.co.jp/agile/business_plan_esm_agile_div_35th.pdf
分散した社会構造
XPE2ndと
上司がついて
きます
https://pbs.twimg.com/media/CIZYfj6W8AAqyAU.jpg