概要
Ruby の Observable module で、マイクロマネジメントをするマネージャーを表現してみます
仕様
- Newcomer クラスが新人
- Micromanager クラスがマイクロマネジメントをするマネージャー
- 初期化時にマネージャーが監視をはじめる
- Newcomer#action で行動
- Newcomer#action をすると、マネージャーがしゃしゃりでて一言もの申す
- 監視されるとモチベが下がる
- 限界が来ると辞める
プログラム
require 'observer'
class Newcomer
include Observable
attr_reader :name, :motivation
def initialize(name, manager)
@name = name
@motivation = 100
add_observer(manager)
end
def action(description)
before = "(´・ω・) #{@name}"
puts "#{before}: #{description} しているよ"
changed
notify_observers(name, description)
@motivation -= 10
puts "(♯・ω・) #{@name}: ピキピキ"
puts "辞めます" if (@motivation < 1)
end
end
class Micromanager
attr_reader :name
RAMDOM_MESSAGES = %w(それは間違っている! 本当にできるのか? 勝手なことをするな! どうせ君は間違っているだろう 俺様が教えてしんぜよう)
def initialize(name)
@name = name
end
def update(subordinate, description)
by = "(`・ω・) #{@name}"
puts "#{by}: '#{description}' している?"
puts "#{by}: #{subordinate} くん、 #{RAMDOM_MESSAGES.sample}"
end
end
newcomer = Newcomer.new('優秀新人', Micromanager.new('マイクロ先輩'))
actions = %w(
プログラムを実装
業務を改善
共通処理を作成
自動化
スニペットを作成
Gitを導入
ペアプロ
便利ツールを作成
ナレッジを共有
社内政治を排除
)
actions.each do |action|
newcomer.action(action)
puts "#{newcomer.name} くんのモチべ: #{newcomer.motivation}"
end
実行
% ruby observable.rb
(´・ω・) 優秀新人: プログラムを実装 しているよ
(`・ω・) マイクロ先輩: 'プログラムを実装' している?
(`・ω・) マイクロ先輩: 優秀新人 くん、 どうせ君は間違っているだろう
(♯・ω・) 優秀新人: ピキピキ
優秀新人 くんのモチべ: 90
(´・ω・) 優秀新人: 業務を改善 しているよ
(`・ω・) マイクロ先輩: '業務を改善' している?
(`・ω・) マイクロ先輩: 優秀新人 くん、 それは間違っている!
(♯・ω・) 優秀新人: ピキピキ
優秀新人 くんのモチべ: 80
(´・ω・) 優秀新人: 共通処理を作成 しているよ
(`・ω・) マイクロ先輩: '共通処理を作成' している?
(`・ω・) マイクロ先輩: 優秀新人 くん、 本当にできるのか?
(♯・ω・) 優秀新人: ピキピキ
優秀新人 くんのモチべ: 70
(´・ω・) 優秀新人: 自動化 しているよ
(`・ω・) マイクロ先輩: '自動化' している?
(`・ω・) マイクロ先輩: 優秀新人 くん、 勝手なことをするな!
(♯・ω・) 優秀新人: ピキピキ
優秀新人 くんのモチべ: 60
(´・ω・) 優秀新人: スニペットを作成 しているよ
(`・ω・) マイクロ先輩: 'スニペットを作成' している?
(`・ω・) マイクロ先輩: 優秀新人 くん、 本当にできるのか?
(♯・ω・) 優秀新人: ピキピキ
優秀新人 くんのモチべ: 50
(´・ω・) 優秀新人: Gitを導入 しているよ
(`・ω・) マイクロ先輩: 'Gitを導入' している?
(`・ω・) マイクロ先輩: 優秀新人 くん、 本当にできるのか?
(♯・ω・) 優秀新人: ピキピキ
優秀新人 くんのモチべ: 40
(´・ω・) 優秀新人: ペアプロ しているよ
(`・ω・) マイクロ先輩: 'ペアプロ' している?
(`・ω・) マイクロ先輩: 優秀新人 くん、 勝手なことをするな!
(♯・ω・) 優秀新人: ピキピキ
優秀新人 くんのモチべ: 30
(´・ω・) 優秀新人: 便利ツールを作成 しているよ
(`・ω・) マイクロ先輩: '便利ツールを作成' している?
(`・ω・) マイクロ先輩: 優秀新人 くん、 勝手なことをするな!
(♯・ω・) 優秀新人: ピキピキ
優秀新人 くんのモチべ: 20
(´・ω・) 優秀新人: ナレッジを共有 しているよ
(`・ω・) マイクロ先輩: 'ナレッジを共有' している?
(`・ω・) マイクロ先輩: 優秀新人 くん、 俺様が教えてしんぜよう
(♯・ω・) 優秀新人: ピキピキ
優秀新人 くんのモチべ: 10
(´・ω・) 優秀新人: 社内政治を排除 しているよ
(`・ω・) マイクロ先輩: '社内政治を排除' している?
(`・ω・) マイクロ先輩: 優秀新人 くん、 どうせ君は間違っているだろう
(♯・ω・) 優秀新人: ピキピキ
辞めます
優秀新人 くんのモチべ: 0