ruby遺産とレガシーコード修理技術

80
柴田 博志 SHIBATA Hiroshi 永和システムマネジメント asakusa.rb Eiwa System Management, Inc. The art of “Legacy” Ruby Code Maintainance RubyKaigi2011 練馬文化会館大ホール 2011-07-18(Mon) Ruby遺産と レガシーコード 修理技術

Upload: hiroshi-shibata

Post on 01-Jul-2015

1.704 views

Category:

Technology


3 download

TRANSCRIPT

Page 1: Ruby遺産とレガシーコード修理技術

柴田 博志SHIBATA Hiroshi

永和システムマネジメントasakusa.rb

Eiwa System Management, Inc.

The art of “Legacy” Ruby Code Maintainance

RubyKaigi2011 練馬文化会館大ホール 2011-07-18(Mon)

Ruby遺産とレガシーコード修理技術

Page 2: Ruby遺産とレガシーコード修理技術

自己紹介

Page 3: Ruby遺産とレガシーコード修理技術

SHIBATA Hiroshi

Page 5: Ruby遺産とレガシーコード修理技術

asakusa.rb

Page 6: Ruby遺産とレガシーコード修理技術

地域コミュニティ

Page 7: Ruby遺産とレガシーコード修理技術
Page 8: Ruby遺産とレガシーコード修理技術

ESMhiringRubyists! http://bit.ly/esm-hiring-rubyists

Page 9: Ruby遺産とレガシーコード修理技術

私とRuby会議

Page 10: Ruby遺産とレガシーコード修理技術

SapporoRubyKaigi

Page 11: Ruby遺産とレガシーコード修理技術

RubyKaigi2009

Page 12: Ruby遺産とレガシーコード修理技術

RubyKaigi2010

Page 13: Ruby遺産とレガシーコード修理技術

最後のRuby会議

Page 14: Ruby遺産とレガシーコード修理技術

この場所この時間話したい

Page 15: Ruby遺産とレガシーコード修理技術

今日は25年使われる予定のソフトをメンテナンスする方法について話します

Page 16: Ruby遺産とレガシーコード修理技術

・ 自己紹介

・ 今日話すこと・ RubyKaigiと私

Page 17: Ruby遺産とレガシーコード修理技術

tDiary

Page 18: Ruby遺産とレガシーコード修理技術
Page 19: Ruby遺産とレガシーコード修理技術
Page 20: Ruby遺産とレガシーコード修理技術

なぜ25年使い続けるのか?

Page 21: Ruby遺産とレガシーコード修理技術

5文字のテキストらしいですよ?大丈夫か?

Page 22: Ruby遺産とレガシーコード修理技術

ブログブームに乗って数多くのサービスが立ち上がったが、すでにサービスを停止している企業もある。 それも、満足にデータのエクスポートすらできないことも少なくない。 こんな状況で、安心して日記を書けるだろうか。

Page 23: Ruby遺産とレガシーコード修理技術

10年日記という(紙の)日記帳がある。これを買えば、少なくとも10年間、同じフォーマットで日記が書けることを保障するものだ。同じことがWeb日記でも言えたら嬉しいと思う。

Page 24: Ruby遺産とレガシーコード修理技術

10年25年

Page 25: Ruby遺産とレガシーコード修理技術

作り替えないの?

Page 26: Ruby遺産とレガシーコード修理技術

脱tDiary

Page 27: Ruby遺産とレガシーコード修理技術

画像の解説だよ

Page 28: Ruby遺産とレガシーコード修理技術

tDiaryを使っている人が好き

Page 29: Ruby遺産とレガシーコード修理技術

・ tDiary

・ 作り替えない理由・ 25年開発する理由

Page 30: Ruby遺産とレガシーコード修理技術

ソフトウェアを使い捨てにしないためには?

Page 31: Ruby遺産とレガシーコード修理技術

Ruby遺産

Page 32: Ruby遺産とレガシーコード修理技術

歴史的経緯により複雑な内部構造を持ち作者しかわからないコードが多数残っている。

Page 33: Ruby遺産とレガシーコード修理技術

tDiaryがやってること

Page 34: Ruby遺産とレガシーコード修理技術

レガシーコード修理技術

Page 35: Ruby遺産とレガシーコード修理技術

・ 使用してないコードの削除

・ コンパイラ任せ

・ 仕様化テスト

Page 36: Ruby遺産とレガシーコード修理技術

16章変更できるほど十分に私はコードを理解していません

Page 37: Ruby遺産とレガシーコード修理技術

機能の追加は慎重に削除は大胆に

Page 38: Ruby遺産とレガシーコード修理技術

Noと言える技術

Page 39: Ruby遺産とレガシーコード修理技術

ユーザーに求められていてもNoと言えることが重要

Page 40: Ruby遺産とレガシーコード修理技術

元祖モヒカン

Page 41: Ruby遺産とレガシーコード修理技術

仕様の却下業

Page 42: Ruby遺産とレガシーコード修理技術

時代に求められなくなった機能

Page 43: Ruby遺産とレガシーコード修理技術

2. Pingback

1. Trackback

Page 44: Ruby遺産とレガシーコード修理技術

13章変更する必要がありますが、どんなテストを書けばよいのかわかりません

Page 45: Ruby遺産とレガシーコード修理技術

仕様化テスト

Page 46: Ruby遺産とレガシーコード修理技術

テストで壊してはいけない骨格を作る

Page 47: Ruby遺産とレガシーコード修理技術
Page 48: Ruby遺産とレガシーコード修理技術
Page 49: Ruby遺産とレガシーコード修理技術
Page 50: Ruby遺産とレガシーコード修理技術

Railsがもたらした物

Page 51: Ruby遺産とレガシーコード修理技術
Page 52: Ruby遺産とレガシーコード修理技術

Capybara

Page 53: Ruby遺産とレガシーコード修理技術

23章どうすれば何も壊していないことを確認できるでしょうか

Page 54: Ruby遺産とレガシーコード修理技術

10年も続けていればサポートもそれは大変

Page 55: Ruby遺産とレガシーコード修理技術

4. 1.9.3? 2.0.0?3. 1.9.22. 1.8.71. 1.8.6

Page 56: Ruby遺産とレガシーコード修理技術

コンパイラ任せ

Page 57: Ruby遺産とレガシーコード修理技術

I♥ CI

魔法執事じぇんきんす☆マギカ

Page 58: Ruby遺産とレガシーコード修理技術

Jenkins

Page 59: Ruby遺産とレガシーコード修理技術

travis-ci

Page 60: Ruby遺産とレガシーコード修理技術

・ 使用してないコードの削除

・ コンパイラ任せ

・ 仕様化テスト

Page 61: Ruby遺産とレガシーコード修理技術

私に出来ること

Page 62: Ruby遺産とレガシーコード修理技術

開発者の負担を減らす

Page 63: Ruby遺産とレガシーコード修理技術

Testing Framework

Page 64: Ruby遺産とレガシーコード修理技術

新しい仲間を集める種

Page 65: Ruby遺産とレガシーコード修理技術

25年続けるためには必要

Page 66: Ruby遺産とレガシーコード修理技術

ユーザーが

開発者

Page 67: Ruby遺産とレガシーコード修理技術

開発を楽しむ

Page 68: Ruby遺産とレガシーコード修理技術

燃料の投下

Page 69: Ruby遺産とレガシーコード修理技術

Ruby

Page 70: Ruby遺産とレガシーコード修理技術
Page 71: Ruby遺産とレガシーコード修理技術

開発を楽しむ

Page 72: Ruby遺産とレガシーコード修理技術

まとめ

Page 73: Ruby遺産とレガシーコード修理技術

レガシーコード修理技術

Page 74: Ruby遺産とレガシーコード修理技術

新しい仲間を集める種

Page 75: Ruby遺産とレガシーコード修理技術

燃料の投下

Page 76: Ruby遺産とレガシーコード修理技術

Thanks

Page 77: Ruby遺産とレガシーコード修理技術

コミュニティの形成

Page 78: Ruby遺産とレガシーコード修理技術

生活の充実

Page 79: Ruby遺産とレガシーコード修理技術

マスターセンセイ達

Page 80: Ruby遺産とレガシーコード修理技術

Good Ruby Life