Upload
koichi-ito
View
505
Download
0
Embed Size (px)
Citation preview
受託開発と(株) 永和システムマネジメント
アジャイル事業部 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
今日の話
“GUIが使えない場合はシェルを使う。
受託開発で色々なシステムを作った知見からライブラリを作れそう
実践投入された実装とされていない構想
構想の副産物
背景
いち場面
受託開発の
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回目の設計パターン
申請書
営業日
GUIが使えない場合はシェルを使う。
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 RubyGem
s
知見
実践投入された実装とされていない構想
社会実験
パターン
“パターンは発明するものではなく発見されるもの
『パターンハッチング』より
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
http://guides.rubygems.org/name-your-gem/
名前重要 推奨重要