SlideShare una empresa de Scribd logo
1 de 54
Descargar para leer sin conexión
The World
is Connectedgem 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周年ツアー中
勤続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ヶ月前の心残り
体調を崩して参加できず
お蔵だし
コード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 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
>
実装
https://github.com/koic/acappella
設計
: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:8989
DRbObjectを取得する
: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_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
<<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://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

Más contenido relacionado

La actualidad más candente

La actualidad más candente (20)

INSPIRE FUTURE GENERATIONS
INSPIRE FUTURE GENERATIONSINSPIRE FUTURE GENERATIONS
INSPIRE FUTURE GENERATIONS
 
Spring4-DevLove発表資料
Spring4-DevLove発表資料Spring4-DevLove発表資料
Spring4-DevLove発表資料
 
Spring 12年の歴史
Spring 12年の歴史Spring 12年の歴史
Spring 12年の歴史
 
エンドツーエンドテストを自動化したらチームがすごく良くなった@XPまつり2015LT
エンドツーエンドテストを自動化したらチームがすごく良くなった@XPまつり2015LTエンドツーエンドテストを自動化したらチームがすごく良くなった@XPまつり2015LT
エンドツーエンドテストを自動化したらチームがすごく良くなった@XPまつり2015LT
 
こだわりのkintone
こだわりのkintoneこだわりのkintone
こだわりのkintone
 
開発時の探し物を楽にする習慣作り
開発時の探し物を楽にする習慣作り開発時の探し物を楽にする習慣作り
開発時の探し物を楽にする習慣作り
 
decode17
decode17decode17
decode17
 
Spring starterによるSpring Boot Starter
Spring starterによるSpring Boot StarterSpring starterによるSpring Boot Starter
Spring starterによるSpring Boot Starter
 
[Java Day Tokyo 2018]50分で最新技術学習の基礎を身につける(SOMPO Systems Daisuke Nishino)
[Java Day Tokyo 2018]50分で最新技術学習の基礎を身につける(SOMPO Systems Daisuke Nishino)[Java Day Tokyo 2018]50分で最新技術学習の基礎を身につける(SOMPO Systems Daisuke Nishino)
[Java Day Tokyo 2018]50分で最新技術学習の基礎を身につける(SOMPO Systems Daisuke Nishino)
 
2020年10月29日 プロフェッショナルAI×Roboticsエンジニアへのロードマップ
2020年10月29日 プロフェッショナルAI×Roboticsエンジニアへのロードマップ2020年10月29日 プロフェッショナルAI×Roboticsエンジニアへのロードマップ
2020年10月29日 プロフェッショナルAI×Roboticsエンジニアへのロードマップ
 
さくっと理解するSpring bootの仕組み
さくっと理解するSpring bootの仕組みさくっと理解するSpring bootの仕組み
さくっと理解するSpring bootの仕組み
 
20140131 万葉帰社日発表 チーム積み重ね 公開版
20140131 万葉帰社日発表 チーム積み重ね 公開版20140131 万葉帰社日発表 チーム積み重ね 公開版
20140131 万葉帰社日発表 チーム積み重ね 公開版
 
Turnipによるエンドツーエンドテストことはじめ
TurnipによるエンドツーエンドテストことはじめTurnipによるエンドツーエンドテストことはじめ
Turnipによるエンドツーエンドテストことはじめ
 
mod_perlプログラマーがYAPCで語るレガシー開発論
mod_perlプログラマーがYAPCで語るレガシー開発論mod_perlプログラマーがYAPCで語るレガシー開発論
mod_perlプログラマーがYAPCで語るレガシー開発論
 
Wantedlyのテスト事情
Wantedlyのテスト事情Wantedlyのテスト事情
Wantedlyのテスト事情
 
ご注文はRxですか? -RxSwiftを実際に導入してみた件-
ご注文はRxですか? -RxSwiftを実際に導入してみた件-ご注文はRxですか? -RxSwiftを実際に導入してみた件-
ご注文はRxですか? -RxSwiftを実際に導入してみた件-
 
自社サービスkintoneをふんだんに活用したサイボウズの開発フロー
自社サービスkintoneをふんだんに活用したサイボウズの開発フロー自社サービスkintoneをふんだんに活用したサイボウズの開発フロー
自社サービスkintoneをふんだんに活用したサイボウズの開発フロー
 
オブジェクト指向な人がRx swiftを試してみた
オブジェクト指向な人がRx swiftを試してみたオブジェクト指向な人がRx swiftを試してみた
オブジェクト指向な人がRx swiftを試してみた
 
今さら聞けない人のためのDevOps超入門
今さら聞けない人のためのDevOps超入門今さら聞けない人のためのDevOps超入門
今さら聞けない人のためのDevOps超入門
 
kintoneの大規模フロントエンド開発とツール
kintoneの大規模フロントエンド開発とツールkintoneの大規模フロントエンド開発とツール
kintoneの大規模フロントエンド開発とツール
 

Similar a The World is Connected

アジャイルUXライブ企画書
アジャイルUXライブ企画書アジャイルUXライブ企画書
アジャイルUXライブ企画書
Tarumoto Tetsuya
 
Introduction of JRuby Kaigi 2010
Introduction of JRuby Kaigi 2010Introduction of JRuby Kaigi 2010
Introduction of JRuby Kaigi 2010
Koichiro Ohba
 
はじめてがアジャイル
はじめてがアジャイルはじめてがアジャイル
はじめてがアジャイル
Kenichi Takahashi
 

Similar a The World is Connected (20)

RubyとRのおいしい関係
RubyとRのおいしい関係RubyとRのおいしい関係
RubyとRのおいしい関係
 
アジャイルUXライブ企画書
アジャイルUXライブ企画書アジャイルUXライブ企画書
アジャイルUXライブ企画書
 
NetOps Coding#1 のお知らせ
NetOps Coding#1 のお知らせNetOps Coding#1 のお知らせ
NetOps Coding#1 のお知らせ
 
Refrection of kawasaki.rb
Refrection of kawasaki.rbRefrection of kawasaki.rb
Refrection of kawasaki.rb
 
リモートチームとふりかえり改善フレームワーク
リモートチームとふりかえり改善フレームワークリモートチームとふりかえり改善フレームワーク
リモートチームとふりかえり改善フレームワーク
 
Ansibleは簡単なIT自動化
Ansibleは簡単なIT自動化Ansibleは簡単なIT自動化
Ansibleは簡単なIT自動化
 
WebAPIのこれまでとこれから
WebAPIのこれまでとこれからWebAPIのこれまでとこれから
WebAPIのこれまでとこれから
 
Introduction of JRuby Kaigi 2010
Introduction of JRuby Kaigi 2010Introduction of JRuby Kaigi 2010
Introduction of JRuby Kaigi 2010
 
第六回コンテナ型仮想化情報交換会_LinuxContainerLivemigrationCRIU
第六回コンテナ型仮想化情報交換会_LinuxContainerLivemigrationCRIU第六回コンテナ型仮想化情報交換会_LinuxContainerLivemigrationCRIU
第六回コンテナ型仮想化情報交換会_LinuxContainerLivemigrationCRIU
 
OpenStack Summit Vancouver Swift 報告
OpenStack Summit Vancouver Swift 報告OpenStack Summit Vancouver Swift 報告
OpenStack Summit Vancouver Swift 報告
 
ポストJenkins時代のCI戦略
ポストJenkins時代のCI戦略ポストJenkins時代のCI戦略
ポストJenkins時代のCI戦略
 
ポストJenkins時代のCI戦略
ポストJenkins時代のCI戦略ポストJenkins時代のCI戦略
ポストJenkins時代のCI戦略
 
20100828 code4 lib_japan_事業説明(全事業)
20100828 code4 lib_japan_事業説明(全事業)20100828 code4 lib_japan_事業説明(全事業)
20100828 code4 lib_japan_事業説明(全事業)
 
マイクロサービスにおける 非同期アーキテクチャ
マイクロサービスにおける非同期アーキテクチャマイクロサービスにおける非同期アーキテクチャ
マイクロサービスにおける 非同期アーキテクチャ
 
Awsjpcasestudies
AwsjpcasestudiesAwsjpcasestudies
Awsjpcasestudies
 
今さら聞けない人のためのDevOps超入門
今さら聞けない人のためのDevOps超入門今さら聞けない人のためのDevOps超入門
今さら聞けない人のためのDevOps超入門
 
関西Itコミュニティ集まれ!デブサミ名物コミュニティlt大会(発表版)
関西Itコミュニティ集まれ!デブサミ名物コミュニティlt大会(発表版)関西Itコミュニティ集まれ!デブサミ名物コミュニティlt大会(発表版)
関西Itコミュニティ集まれ!デブサミ名物コミュニティlt大会(発表版)
 
PFDの概説&ディスカッション
PFDの概説&ディスカッションPFDの概説&ディスカッション
PFDの概説&ディスカッション
 
はじめてがアジャイル
はじめてがアジャイルはじめてがアジャイル
はじめてがアジャイル
 
20150307 fukuoka meetup community jaws-ug
20150307 fukuoka meetup community jaws-ug20150307 fukuoka meetup community jaws-ug
20150307 fukuoka meetup community jaws-ug
 

Más de Koichi ITO

Agile Software Development with Edge Ruby
Agile Software Development with Edge RubyAgile Software Development with Edge Ruby
Agile Software Development with Edge Ruby
Koichi ITO
 

Más de Koichi ITO (20)

Bundler 2 の胎動
Bundler 2 の胎動Bundler 2 の胎動
Bundler 2 の胎動
 
アプリがパッチにまみれたら
アプリがパッチにまみれたらアプリがパッチにまみれたら
アプリがパッチにまみれたら
 
Stairway to The Pragmatic Rails Programmer
Stairway to The Pragmatic Rails ProgrammerStairway to The Pragmatic Rails Programmer
Stairway to The Pragmatic Rails Programmer
 
最軽の開発手法 dX 改
最軽の開発手法 dX 改最軽の開発手法 dX 改
最軽の開発手法 dX 改
 
Railsアプリケーションプロジェクトでの読み書きそろばんの1周目、2周目とそれから
Railsアプリケーションプロジェクトでの読み書きそろばんの1周目、2周目とそれからRailsアプリケーションプロジェクトでの読み書きそろばんの1周目、2周目とそれから
Railsアプリケーションプロジェクトでの読み書きそろばんの1周目、2周目とそれから
 
Ruby 2.4 / Rails 5.0に上げた際のパッチ5選
Ruby 2.4 / Rails 5.0に上げた際のパッチ5選Ruby 2.4 / Rails 5.0に上げた際のパッチ5選
Ruby 2.4 / Rails 5.0に上げた際のパッチ5選
 
10年生きる Ruby / Rails アプリケーションプログラマーのエコシステム
10年生きる Ruby / Rails アプリケーションプログラマーのエコシステム10年生きる Ruby / Rails アプリケーションプログラマーのエコシステム
10年生きる Ruby / Rails アプリケーションプログラマーのエコシステム
 
俺の開発日誌
俺の開発日誌俺の開発日誌
俺の開発日誌
 
ghq gem-src and more
ghq  gem-src and moreghq  gem-src and more
ghq gem-src and more
 
RuboCopとXPコーディング規約
RuboCopとXPコーディング規約RuboCopとXPコーディング規約
RuboCopとXPコーディング規約
 
俺たちの新人教育!!
俺たちの新人教育!!俺たちの新人教育!!
俺たちの新人教育!!
 
スローテスト刑事 (デカ)
スローテスト刑事 (デカ)スローテスト刑事 (デカ)
スローテスト刑事 (デカ)
 
Gate of Agile Web Development
Gate of Agile Web DevelopmentGate of Agile Web Development
Gate of Agile Web Development
 
RubyKaigi 2015 の Drinkup を支える技術
RubyKaigi 2015 の Drinkup を支える技術RubyKaigi 2015 の Drinkup を支える技術
RubyKaigi 2015 の Drinkup を支える技術
 
Motivationware
MotivationwareMotivationware
Motivationware
 
達人プログラマーへの道
達人プログラマーへの道達人プログラマーへの道
達人プログラマーへの道
 
Let's get ready for next Ruby
Let's get ready for next RubyLet's get ready for next Ruby
Let's get ready for next Ruby
 
職と人
職と人職と人
職と人
 
Agile Software Development with Edge Ruby
Agile Software Development with Edge RubyAgile Software Development with Edge Ruby
Agile Software Development with Edge Ruby
 
Safe navigation operator in Ruby
Safe navigation operator in RubySafe navigation operator in Ruby
Safe navigation operator in Ruby
 

The World is Connected