受託開発と
(株) 永和システムマネジメント
アジャイル事業部
Ruby x Agile グループ
伊藤 浩一 (@koic)
Enjoy Programming
RubyGemsgem install active_pstore
エムオーテックス新大阪ビル エムオーテックスホール
2015.07.11 (Sat)
関西Ruby会議06
Computer programmer, guitarist.
Leader of an Agile software development team
at Eiwa System Management, Inc.
Lives in Shinjuku.
@koic photo token by @NaCl
XPE2ndと上司がついてきます
https://pbs.twimg.com/media/CIZYfj6W8AAqyAU.jpg
今日の話
受託開発で色々なシス
テムを作った知見から
ライブラリを作れそう
実践投入され
た実装とされ
ていない構想
構想の
副産物
背景
いち場面
受託開発の
https://ja.wikipedia.org/wiki/正岡子規#/media/File:Masaoka_Shiki.jpg
誰のためのコード
日時予約して1回
だけ実行したい
(あるある)
運用の自動化
at コマンド
permission denied
受託開発にはコント
ロールできることと
できないことがある
立ちはだかる壁
オンプレ
https://ja.wikipedia.org/wiki/%E3%82%B3%E3%83%B3%E3%83%94%E3%83%A5%E3%83%BC%E3%82%BF#/media/File:Dell_PowerEdge_Servers.jpg
申請書
業日
さまざま
な制約
割愛
よろしい、
ならば車輪
の再発明だ
構想三秒
cron
rails rrails c
RDBMS
日時予約
日時予約を永続化
※1
定期実行予約があれば実行する
人生n回目の設計パターン
キモ
cron
rails rrails c
RDBMS
日時予約
日時予約を永続化
※1
定期実行予約があれば実行する
人生n回目の設計パターン
申請書
業日
http://www.amazon.co.jp/dp/4274217620
http://www.slideshare.net/kdmsnr/xpjunkudo-20150626/61
どうやれば
できるかを
考える
Ruby標準添付
ライブラリ
http://docs.ruby-lang.org/ja/2.2.0/class/PStore.html
PStore
キモ
cron
rails rrails c
日時予約
日時予約を永続化
※1
定期実行予約があれば実行する
人生n回目の設計パターン
PStore
欲しかったものの前提
cron
rails rrails c
日時予約
登録のみ
※1
定期実行同一データへの同時更新はない
同一データへの同時更新がない
• 定期実行したら削除するくらいデータのライフサイクルが短い
• 保存するモデルとしてリレーションシップが必要ない
自給自足
弱点多々
THE MAKING OF
A RubyGems
知見
実践投入され
た実装とされ
ていない構想
社会実験
パターン
パターンは発明す
るものではなく発
見されるもの
『パターンハッチング』より
http://capsctrl.que.jp/kdmsnr/wiki/PofEAA/?ActiveRecord
ActiveRecord
っぽい振る舞い
有名な永続化
のインタフェー
スで使える
• Create … save, create...
• Read … find, where...
• Update … save, update...
• Delete … destroy, delete...
先人の知恵による名前
コードレビューが増
えたからこその
より一層の名前重要
書ける速さ、
読める速さ
先人の知恵によ
る名前の作用
よく知られた名前で
読むことができる
名前というイン
タフェースの重
要性について
http://i.loveruby.net/ja/rhg/book/intro.html
『Rubyソースコード完全解説』n ページより抜粋
静的解析とはつまりソースコー
ドの解析だ。そしてソースコー
ドの解析とは名前の調査である。
ファイル名・関数名・変数名・
型名・メンバ名など、プログラ
ムは名前のかたまりだ。
おわりに
• 書くときに名前付けの苦労が減る
• 使い手への学習曲線を低くできる
• 読むときに雰囲気で読める
よく知られた名前の再利用
脳力を抑える
『Lightweight Language MAGAZINE』より
TO
 BE
 CONTINUED
Enjoy
Programming
テストデータ
https://github.com/koic/active_pstore
NG集
ドッグフード
で得た知見
https://ja.wikipedia.org/wiki/%E3%83%96%E3%83%AB%E3%83%89%E3%83%83%E3%82%B0#/media/File:Clyde_The_Bulldog.jpg
あれ?require
しないと使えない…
 ActivePStore!
NameError: uninitialized con!
 require ‘active_pstore’!
true!
 ActivePStore!
ActivePStore
bundler
使ってるのに
require
書きたくない
でござる!!!
絶対に
require
書きたくない
でござる!!!
https://rubygems.org/gems/active-pstore

受託開発とRubyGems