SlideShare a Scribd company logo
1 of 71
Download to read offline
1
赤松 祐希 @ukstuido
RailsDevCon2010
Rails プロジェクトを成功させるために
現場ができること
2
自己紹介
3
名前: 赤松 祐希
a.k.a ukstudio
仕事: Rails プログラマ(フリー
→y.akamatsu@ukstudio.jp
Rails は 1.2.6 ぐらいの頃から
4
WEB+DB Vol.56
コーディングの基礎知識
http://gihyo.jp/magazine/wdpress/archive/2010/vol56
5
成功とはなんぞや
6
お客さんが満足
と仮定
7
お客さんが満足する
ためには提供した
ソフトウェアが価値を
もたらさなければ
ならない
8
要望
コード(ソフトウェア )
価値
9
要望
コード(ソフトウェア )
価値
どれだけ迅速かつ
高品質に行えるか
10
迅速
かつ
高品質
11
動くだけじゃダメ
12
技術的負債
TechnicalDebt
13
小さな負債は代価を得て
即座に書き直す機会を
得るまでの開発を加速する。
危険なのは借金が返済され
なかった場合である。品質の
良くないコードを使い続ける
ことは借金の利息としてとら
えることができる。
14
増える利子と負債
http://www.flickr.com/photos/tracy_olson/61056391/
15
なぜ増えるのか ?
16
” 開発を加速する”
17
迫る納期
増える要求
変わる仕様
18
コードの臭い
19
技術的負債を
持ちこまないために
20
21
みなさんテスト
書いてますか ?
22
テストを書かない
誘惑
23
その裏では負債が
貯まっている
24
テストがないコード
= 変更時に困る
= 負債
25
無駄のない
設計手法
26
必要最小限の
機能を
ストレスなく
提供する
27
技術的負債の大きな
要因の「依存性」を
排除できるのは
大きい
28
29
コードを後から
改善できる唯一の
方法
30
息を吸うように
リファクタリング
31
返せる負債は
すぐ返す
32
後で返そうと思っても
その時は大抵
別のタスクに
追われている
33
すぐに返せない負債
34
開発プロセスに
組込む
例 : 未解決の負債の解決に
週の 20% をあてる
35
バージョン管理
36
変更を恐れない為に
37
日付管理自体が
負債
38
TDD もやってる
バージョン管理も
導入した
39
現実はそう甘くない
40
既存テストコードが
リファクタリングを
妨げる
41
あるコードを修正した
らテストコードが
落ちまくったでござる
42
テストの資産価値
43
上位のテストで
動作を保証し
下位の自由度を
高める
44
リファクタリングを
支えるテスト
45
極論を言うと
Cucumber のテスト
が通っていれば
Rspec/UnitTest は
全部捨てられる
TDD のテンポを考えれば現実的ではないけど
46
TDD では書きたい
ことしか書けない
47
設計手法
48
設計能力に
依存する部分は
どうしてもある
49
Ruby on Rails
RailsDevCon ですし
50
Skinny Controller,
Fat Model
http://weblog.jamisbuck.org/2006/10/18/skinny-controller-fat-model
51
まだまだ Controller に
数百〜数千行レベルの
ロジックが書かれてるの
をみかける
52
とてもじゃないが
テストが書けない
53
とは言え、モデルに
引きずられすぎ感も
なくはない
54
責務で考える
55
Rails らしさ
56
Rails の機能を
どれだけうまく
使えるか
57
•(named_)scope
•plugin
•migration
•routes
•etc...
58
Rails らしさを共有で
きていれば開発メン
バーでの無駄が減る
コーディング規約にも似たような効果が
59
とりあえず
RailsGuides は
読もう
60
そろそろまとめ
61
技術的負債は開発の
足を遅めるので
貯めこむべきでは
ない
62
逆に負債を抱えて
足を早めるのもあり
納期が存在するので
63
負債はコードだけ
ではない
64
使われない機能
65
使われない機能にも
維持コストはかかる
66
営業ベースで
考えたとき、
機能数を
増やしがち
67
お客さんの要求を理
解していないため
可能性のある限りの
機能を増やしてしまう
68
今のプロジェクトで
どれだけの負債があ
るか考えてみよう
69
技術的負債を 0 に
しても成功するとは
限らない
70
技術的負債を
減らすと見えてくる
課題もある
71
ご静聴ありがとう
ございました

More Related Content

Similar to Railsプロジェクトを成功させるために現場ができること -Railsdevcon2010

静的解析、しましょうか。
静的解析、しましょうか。静的解析、しましょうか。
静的解析、しましょうか。Daichi Hiroki
 
【入門】3時間でアプリ公開!ゼロからのプログラミングRails講座
【入門】3時間でアプリ公開!ゼロからのプログラミングRails講座【入門】3時間でアプリ公開!ゼロからのプログラミングRails講座
【入門】3時間でアプリ公開!ゼロからのプログラミングRails講座DIVE INTO CODE Corp.
 
QCon2009 Tokyo - Ruby on Railsで変わるエンタープライズ開発の現場
QCon2009 Tokyo - Ruby on Railsで変わるエンタープライズ開発の現場QCon2009 Tokyo - Ruby on Railsで変わるエンタープライズ開発の現場
QCon2009 Tokyo - Ruby on Railsで変わるエンタープライズ開発の現場Yasuko Ohba
 
Ruby on Rails を用いたWEBアプリケーションの開発
Ruby on Rails を用いたWEBアプリケーションの開発Ruby on Rails を用いたWEBアプリケーションの開発
Ruby on Rails を用いたWEBアプリケーションの開発Koichi Shimozono
 
今なぜサーバーレスなのか
今なぜサーバーレスなのか今なぜサーバーレスなのか
今なぜサーバーレスなのか真吾 吉田
 
Realm platform2019
Realm platform2019Realm platform2019
Realm platform2019昌桓 李
 
サーバーレスのアーキテクチャパターンとそれぞれの実装・テストの勘所
サーバーレスのアーキテクチャパターンとそれぞれの実装・テストの勘所サーバーレスのアーキテクチャパターンとそれぞれの実装・テストの勘所
サーバーレスのアーキテクチャパターンとそれぞれの実装・テストの勘所真吾 吉田
 
サーバーレスの話
サーバーレスの話サーバーレスの話
サーバーレスの話真吾 吉田
 
アイデアを形にする ③3時間でアプリ公開!ゼロからのプログラミング講座
アイデアを形にする  ③3時間でアプリ公開!ゼロからのプログラミング講座アイデアを形にする  ③3時間でアプリ公開!ゼロからのプログラミング講座
アイデアを形にする ③3時間でアプリ公開!ゼロからのプログラミング講座DIVE INTO CODE Corp.
 
CODT2020 ビジネスプラットフォームを支えるCI/CDパイプライン ~エンタープライズのDevOpsを加速させる運用改善Tips~
CODT2020 ビジネスプラットフォームを支えるCI/CDパイプライン ~エンタープライズのDevOpsを加速させる運用改善Tips~CODT2020 ビジネスプラットフォームを支えるCI/CDパイプライン ~エンタープライズのDevOpsを加速させる運用改善Tips~
CODT2020 ビジネスプラットフォームを支えるCI/CDパイプライン ~エンタープライズのDevOpsを加速させる運用改善Tips~Yuki Ando
 
おすすめインフラ! for スタートアップ
おすすめインフラ! for スタートアップおすすめインフラ! for スタートアップ
おすすめインフラ! for スタートアップKoichiro Sumi
 
「新しい」を生み出すためのWebアプリ開発とその周辺
「新しい」を生み出すためのWebアプリ開発とその周辺「新しい」を生み出すためのWebアプリ開発とその周辺
「新しい」を生み出すためのWebアプリ開発とその周辺Yusuke Wada
 
スマートフォン開発の事例 Html5開発の導入ポイント
スマートフォン開発の事例 Html5開発の導入ポイントスマートフォン開発の事例 Html5開発の導入ポイント
スマートフォン開発の事例 Html5開発の導入ポイントMasakazu Muraoka
 
SIビジネスを変えよう。~ Ruby+Ruby on RailsによるエンタープライズCloudアプリケーション事業とは~
SIビジネスを変えよう。~ Ruby+Ruby on RailsによるエンタープライズCloudアプリケーション事業とは~SIビジネスを変えよう。~ Ruby+Ruby on RailsによるエンタープライズCloudアプリケーション事業とは~
SIビジネスを変えよう。~ Ruby+Ruby on RailsによるエンタープライズCloudアプリケーション事業とは~Kachi Creo
 
ゼロからのプログラミングRails講座 Codeanywhere版
ゼロからのプログラミングRails講座 Codeanywhere版ゼロからのプログラミングRails講座 Codeanywhere版
ゼロからのプログラミングRails講座 Codeanywhere版DIVE INTO CODE Corp.
 
Railsで新規サービスを開発する際にやったこと
Railsで新規サービスを開発する際にやったことRailsで新規サービスを開発する際にやったこと
Railsで新規サービスを開発する際にやったことJyunichi Kuriyama
 
20141003 webマーケティングエンジニアリング
20141003 webマーケティングエンジニアリング20141003 webマーケティングエンジニアリング
20141003 webマーケティングエンジニアリングInnova Inc.
 
第3回企業Webシステム開発セミナー「業務システムにHTML5を上手に取り入れるためには?」
第3回企業Webシステム開発セミナー「業務システムにHTML5を上手に取り入れるためには?」第3回企業Webシステム開発セミナー「業務システムにHTML5を上手に取り入れるためには?」
第3回企業Webシステム開発セミナー「業務システムにHTML5を上手に取り入れるためには?」Osamu Shimoda
 
Sinatra軽量Web開発 - LOUPE Study #1
Sinatra軽量Web開発 - LOUPE Study #1Sinatra軽量Web開発 - LOUPE Study #1
Sinatra軽量Web開発 - LOUPE Study #1Takuya Mukohira
 

Similar to Railsプロジェクトを成功させるために現場ができること -Railsdevcon2010 (20)

静的解析、しましょうか。
静的解析、しましょうか。静的解析、しましょうか。
静的解析、しましょうか。
 
【入門】3時間でアプリ公開!ゼロからのプログラミングRails講座
【入門】3時間でアプリ公開!ゼロからのプログラミングRails講座【入門】3時間でアプリ公開!ゼロからのプログラミングRails講座
【入門】3時間でアプリ公開!ゼロからのプログラミングRails講座
 
QCon2009 Tokyo - Ruby on Railsで変わるエンタープライズ開発の現場
QCon2009 Tokyo - Ruby on Railsで変わるエンタープライズ開発の現場QCon2009 Tokyo - Ruby on Railsで変わるエンタープライズ開発の現場
QCon2009 Tokyo - Ruby on Railsで変わるエンタープライズ開発の現場
 
Ruby on Rails を用いたWEBアプリケーションの開発
Ruby on Rails を用いたWEBアプリケーションの開発Ruby on Rails を用いたWEBアプリケーションの開発
Ruby on Rails を用いたWEBアプリケーションの開発
 
今なぜサーバーレスなのか
今なぜサーバーレスなのか今なぜサーバーレスなのか
今なぜサーバーレスなのか
 
Realm platform2019
Realm platform2019Realm platform2019
Realm platform2019
 
サーバーレスのアーキテクチャパターンとそれぞれの実装・テストの勘所
サーバーレスのアーキテクチャパターンとそれぞれの実装・テストの勘所サーバーレスのアーキテクチャパターンとそれぞれの実装・テストの勘所
サーバーレスのアーキテクチャパターンとそれぞれの実装・テストの勘所
 
サーバーレスの話
サーバーレスの話サーバーレスの話
サーバーレスの話
 
アイデアを形にする ③3時間でアプリ公開!ゼロからのプログラミング講座
アイデアを形にする  ③3時間でアプリ公開!ゼロからのプログラミング講座アイデアを形にする  ③3時間でアプリ公開!ゼロからのプログラミング講座
アイデアを形にする ③3時間でアプリ公開!ゼロからのプログラミング講座
 
CODT2020 ビジネスプラットフォームを支えるCI/CDパイプライン ~エンタープライズのDevOpsを加速させる運用改善Tips~
CODT2020 ビジネスプラットフォームを支えるCI/CDパイプライン ~エンタープライズのDevOpsを加速させる運用改善Tips~CODT2020 ビジネスプラットフォームを支えるCI/CDパイプライン ~エンタープライズのDevOpsを加速させる運用改善Tips~
CODT2020 ビジネスプラットフォームを支えるCI/CDパイプライン ~エンタープライズのDevOpsを加速させる運用改善Tips~
 
おすすめインフラ! for スタートアップ
おすすめインフラ! for スタートアップおすすめインフラ! for スタートアップ
おすすめインフラ! for スタートアップ
 
「新しい」を生み出すためのWebアプリ開発とその周辺
「新しい」を生み出すためのWebアプリ開発とその周辺「新しい」を生み出すためのWebアプリ開発とその周辺
「新しい」を生み出すためのWebアプリ開発とその周辺
 
スマートフォン開発の事例 Html5開発の導入ポイント
スマートフォン開発の事例 Html5開発の導入ポイントスマートフォン開発の事例 Html5開発の導入ポイント
スマートフォン開発の事例 Html5開発の導入ポイント
 
SIビジネスを変えよう。~ Ruby+Ruby on RailsによるエンタープライズCloudアプリケーション事業とは~
SIビジネスを変えよう。~ Ruby+Ruby on RailsによるエンタープライズCloudアプリケーション事業とは~SIビジネスを変えよう。~ Ruby+Ruby on RailsによるエンタープライズCloudアプリケーション事業とは~
SIビジネスを変えよう。~ Ruby+Ruby on RailsによるエンタープライズCloudアプリケーション事業とは~
 
ゼロからのプログラミングRails講座 Codeanywhere版
ゼロからのプログラミングRails講座 Codeanywhere版ゼロからのプログラミングRails講座 Codeanywhere版
ゼロからのプログラミングRails講座 Codeanywhere版
 
Railsで新規サービスを開発する際にやったこと
Railsで新規サービスを開発する際にやったことRailsで新規サービスを開発する際にやったこと
Railsで新規サービスを開発する際にやったこと
 
20141003 webマーケティングエンジニアリング
20141003 webマーケティングエンジニアリング20141003 webマーケティングエンジニアリング
20141003 webマーケティングエンジニアリング
 
第3回企業Webシステム開発セミナー「業務システムにHTML5を上手に取り入れるためには?」
第3回企業Webシステム開発セミナー「業務システムにHTML5を上手に取り入れるためには?」第3回企業Webシステム開発セミナー「業務システムにHTML5を上手に取り入れるためには?」
第3回企業Webシステム開発セミナー「業務システムにHTML5を上手に取り入れるためには?」
 
Sinatra軽量Web開発 - LOUPE Study #1
Sinatra軽量Web開発 - LOUPE Study #1Sinatra軽量Web開発 - LOUPE Study #1
Sinatra軽量Web開発 - LOUPE Study #1
 
The evolution of c#
The evolution of c#The evolution of c#
The evolution of c#
 

More from Yuki Akamatsu

More from Yuki Akamatsu (6)

Goos 001
Goos 001Goos 001
Goos 001
 
大江戸Ruby会議
大江戸Ruby会議大江戸Ruby会議
大江戸Ruby会議
 
オブラブ夏2010
オブラブ夏2010オブラブ夏2010
オブラブ夏2010
 
オブラブ忘年会2009 LT資料
オブラブ忘年会2009 LT資料オブラブ忘年会2009 LT資料
オブラブ忘年会2009 LT資料
 
Vim DE OOP
Vim DE OOPVim DE OOP
Vim DE OOP
 
VimM#3
VimM#3VimM#3
VimM#3
 

Railsプロジェクトを成功させるために現場ができること -Railsdevcon2010