Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
The World
is Connectedgem install acappella
(株) 永和システムマネジメント
アジャイル事業部
Ruby x Agile グループ
伊藤 浩一 (@koic)
2015.07.27 (Mon)
永和シ...
Computer programmer, guitarist.
Leader of an Agile software development team
at Eiwa System Management, Inc.
Lives in Shin...
• 2014.09.06(Sat) XP祭り2014
• 2014.11.08(Sat) Yokohama.rb Meetup#50
• 2014.11.29(Sat) TokyuRuby会議08
• 2015.01.16(Fri) ありがたい...
勤続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) あきーにょ...
お蔵だし
コードx音楽
コードx音楽Ruby Agile is Rock
主題
?acappella
is 何
Client-Serverモデ
ルの対話型ツールです。
クライアントでタイピ
ングした文字をサーバー
が話します。
『Extreme Programming Embrace Change』より
METAPHOR
本スライドでは隠でなく比になってしまいますが
Client-Serverモデ
ルの対話型ツールです。
クライアントでタイピ
ングした文字をサーバー
が話します。
Client-Serverモデ
ルの対話型ツールです。
様々な作詞家がタイピ
ングした文字をサーバー
が話します。
Client-Serverモデ
ルの対話型ツールです。
様々な作詞家が送付を
してきた文字をサーバー
が話します。
Client-Serverモデ
ルの対話型ツールです。
様々な作詞家が送付を
してきた歌詞をサーバー
が話します。
Client-Serverモデ
ルの対話型ツールです。
様々な作詞家が送付を
してきた歌詞をシンガー
が話します。
Client-Serverモデ
ルの対話型ツールです。
様々な作詞家が送付を
してきた歌詞をシンガー
が歌います。
使い方
DEMO
$ acappella-server
acappella 0.1.0 starting on druby://localhost:8989
Run `acappella-server --help` for more startup optio...
実装
https://github.com/koic/acappella
設計
:Client
:SetList
:Singer
songwriter:
Songwriter
songwriter:
DRbObject
<<Stub>>
request(lyrics)
next_song
:Server
<<LocalOb...
内部の
流れ
:Client
:SetList
:Singer
songwriter:
Songwriter
songwriter:
DRbObject
<<Proxy>>
request(lyrics)
next_song
:Server
<<Remote...
:Client
:SetList
:Singer
songwriter:
Songwriter
songwriter:
DRbObject
<<Proxy>>
request(lyrics)
next_song
:Server
<<Remote...
:Client
:SetList
:Singer
songwriter:
Songwriter
songwriter:
DRbObject
<<Proxy>>
request(lyrics)
next_song
:Server
<<Remote...
:Client
:SetList
:Singer
songwriter:
Songwriter
songwriter:
DRbObject
<<Proxy>>
request(lyrics)
next_song
:Server
<<Remote...
:Client
:SetList
:Singer
songwriter:
Songwriter
songwriter:
DRbObject
<<Proxy>>
request(lyrics)
next_song
:Server
<<LocalO...
DRbObject#method_missing
https://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
<<Remote...
:Client
:SetList
:Singer
songwriter:
Songwriter
songwriter:
DRbObject
<<Proxy>>
request(lyrics)
next_song
:Server
<<Remote...
:Client
:SetList
:Singer
songwriter:
Songwriter
songwriter:
DRbObject
<<Proxy>>
request(lyrics)
next_song
:Server
<<Remote...
どちらがサーバでど
ちらがクライアント?
今後、加味したい点
http://www2a.biglobe.ne.jp/seki/ruby/d205.html
• dRubyではどのスクリプトも簡単にサーバになれま
す。
• それにどのスクリプトも...
http://www.druby.org/drb08.pdf
詳しくは書籍を読もう!
たのしく分散
プログラミング
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
The world is connected
https://pbs.twimg.com/media/CKjqYTWXAAAYEtz.jpg
https://github.com/koic/acappella
The World is Connected
The World is Connected
The World is Connected
The World is Connected
The World is Connected
The World is Connected
Upcoming SlideShare
Loading in …5
×

The World is Connected

817 views

Published on

第14回 西日暮里.rb (https://nishinipporirb.doorkeeper.jp/events/28527)
あきーにょカンファレンス#1に参加できず、お蔵入りになっていたスライドのお蔵出し。

Published in: Engineering
  • Be the first to comment

  • Be the first to like this

The World is Connected

  1. 1. The World is Connectedgem install acappella (株) 永和システムマネジメント アジャイル事業部 Ruby x Agile グループ 伊藤 浩一 (@koic) 2015.07.27 (Mon) 永和システムマネジメント 神田オフィス 第14回 西日暮里.rb
  2. 2. Computer programmer, guitarist. Leader of an Agile software development team at Eiwa System Management, Inc. Lives in Shinjuku. @koic photo token by @NaCl
  3. 3. • 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周年ツアー中
  4. 4. 勤続10周年記念講演 最終章
  5. 5. 今日の話
  6. 6. • 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ヶ月前の心残り 体調を崩して参加できず
  7. 7. お蔵だし
  8. 8. コードx音楽
  9. 9. コードx音楽Ruby Agile is Rock
  10. 10. 主題
  11. 11. ?acappella is 何
  12. 12. Client-Serverモデ ルの対話型ツールです。 クライアントでタイピ ングした文字をサーバー が話します。
  13. 13. 『Extreme Programming Embrace Change』より
  14. 14. METAPHOR 本スライドでは隠でなく比になってしまいますが
  15. 15. Client-Serverモデ ルの対話型ツールです。 クライアントでタイピ ングした文字をサーバー が話します。
  16. 16. Client-Serverモデ ルの対話型ツールです。 様々な作詞家がタイピ ングした文字をサーバー が話します。
  17. 17. Client-Serverモデ ルの対話型ツールです。 様々な作詞家が送付を してきた文字をサーバー が話します。
  18. 18. Client-Serverモデ ルの対話型ツールです。 様々な作詞家が送付を してきた歌詞をサーバー が話します。
  19. 19. Client-Serverモデ ルの対話型ツールです。 様々な作詞家が送付を してきた歌詞をシンガー が話します。
  20. 20. Client-Serverモデ ルの対話型ツールです。 様々な作詞家が送付を してきた歌詞をシンガー が歌います。
  21. 21. 使い方
  22. 22. DEMO
  23. 23. $ 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 >
  24. 24. 実装
  25. 25. https://github.com/koic/acappella
  26. 26. 設計
  27. 27. :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
  28. 28. 内部の 流れ
  29. 29. :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 誰?
  30. 30. :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 リモートオブジェクトを登録して起動する
  31. 31. :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 DRbObjectを取得する
  32. 32. :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
  33. 33. :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 シリアライズとデシリアライズ
  34. 34. DRbObject#method_missing https://github.com/ruby/ruby/blob/v2_2_0_preview2/lib/drb/drb.rb#L1133
  35. 35. :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 作詞家に渡された曲をリクエストする
  36. 36. :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 セットリストから次の曲を取り出す
  37. 37. :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
  38. 38. どちらがサーバでど ちらがクライアント? 今後、加味したい点 http://www2a.biglobe.ne.jp/seki/ruby/d205.html • dRubyではどのスクリプトも簡単にサーバになれま す。 • それにどのスクリプトもサーバであったり、クライア ントであったりします • その関係はメソッド呼び出しのレシーバ、センダーの 関係と同じです。
  39. 39. http://www.druby.org/drb08.pdf 詳しくは書籍を読もう!
  40. 40. たのしく分散 プログラミング
  41. 41. http://docs.ruby-lang.org/ja/2.1.0/library/drb.html
  42. 42. さいごに
  43. 43. 分散と人
  44. 44. http://www.esm.co.jp/agile/business_plan_esm_agile_div_35th.pdf 分散した 社会構造
  45. 45. XPE2ndと上司がついてきます https://pbs.twimg.com/media/CIZYfj6W8AAqyAU.jpg
  46. 46. The world is connected
  47. 47. https://pbs.twimg.com/media/CKjqYTWXAAAYEtz.jpg
  48. 48. https://github.com/koic/acappella

×