Software Development and RubyGems

Post on 07-Aug-2015

505 views 0 download

Transcript of Software Development and RubyGems

受託開発と(株) 永和システムマネジメント

アジャイル事業部 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.amazon.co.jp/dp/4274217620

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/

名前重要 推奨重要