SlideShare uma empresa Scribd logo
1 de 39
Baixar para ler offline
Ruby による Agile開発


株式会社永和システムマネジメント
株式会社チェンジビジョン
平鍋健児
概要
「Ruby on Rails」で Web 開発に衝撃を与え
たRuby。そして、すばやい繰り返し開発をテス
トで駆動するAgile。JavaとRubyの違いは何
か。双方の優位性は?そして、Agile開発との
関係は?これまで10年のソフトウェア開発の歴
史を踏まえ、2007年から2010年のソフトウェ
ア開発の現場で起こるパラダイムシフトについ
ての予測します。
自己紹介
株式会社永和システムマネジメント
  金融・医療・オブジェクト指向技術を使ったシステム開発、教育、コンサルティング
  オブジェクト倶楽部
  アジャイル開発の知識と実践
  Ruby 開発者の数(30人)と実績(13プロジェクト)
株式会社チェンジビジョン
  本社は東京都新宿、JUDE開発部は福井
  JUDE と TRICHORD で見える化
平鍋健児
  リアルタイム,CAD、オブジェクト指向の実践
  UMLエディタJUDEの開発
  オブジェクト倶楽部主宰
  アジャイルプロセス協議会、副会長
  翻訳、XP関連書籍、『リーンソフトウェア開発』、『アジャイルプロジェクトマネジメント』
アジェンダ
 ビジネス背景(繰り返せ!漸進的に!)
 Agile開発の本質
 Java と Ruby
 まとめ
ビジネス背景(繰り返せ!漸進的に!)


繰り返す = Iterative
漸進的に = Incremental
ミッション・リスク分割型ビジネスと
1   ウォーターフォール型開発
                           発注
          市場分析




     市場           ビジネス          IT
     市場           ビジネス           IT




                           納品
           リリース

                  半年から3年
要求の劣化
               システムの機能の利用度


          いつも使う
            7%


 よく使う
  13%



たまに使う
  16%
                                                全く使われない
        ほとんど使われな                                   45%
            い
           19%

            Standish group study report in 2000 chaos report
プロジェクトの成功は、
Moving Target

不明確か
不明確か
つ不安定
つ不安定
                   要求     R(t)
な要求。
 な要求。
                            システム   S(t)
           Δ
                            基盤技術   T(t)
                                           t
               Δ
        T(t)
                        チーム(t)
        R(t)                        S(t)
                        チーム(t)
ミッション・リスク共有型ビジネスと
2   Agile型開発
                 ビジネスとITが一体になった
                 「OneTeam」を作り、ミッション
         市場
                 とリスクを共有する。
                 やってみて、結果から戦略を
                 作りながら進む。

        ビジネス
         市場
         市場




                    半年
                     ら
                   間か
                         Web2.0型
                 2週
         IT
          IT
WebビジネスとAgile型開発 (1/2)
                     時間軸: 2週間~半年単位のリリースを繰り返す

機                                   反復(Iterative)
能
軸

重        漸                     R1          R2       R3
要        進
機
    (Incremental)




                          開発        サービス
能                   機能A
か
ら                                           サービス
                               開発
積                   機能B
み
                                                    サービス
上                                          開発
                    機能C
げ
る
WebビジネスとAgile型開発(2/2)
  機能軸: 積み上げる(漸進)
    ビジネス重要度の高いものから開発する。
  時間軸: 繰り返す(反復)
    2週間~3ヶ月~半年のリリースを繰り返す。
                  ITの利点
ビジネスの利点

 早期にサービス         不慣れなテクノロ
 を開始し、ビジネ        ジに徐々に慣れ
 ス効果を見なが         ていく。開発に不
 ら、投資を決めて        慣れな人材を教
 いく。             育する。
 ビジネスとITがともに「学習」しながら、育っていく。
高速な繰り返しを可能にする技術
 Agile 開発プロセス
  XP、Scrum、プロジェクトファシリテーションをベー
  スとしたAgile型の開発プロセス。
 Rails フレームワーク
  Webアプリケーションを素早く、見栄えよく作れる
  アプリケーションフレームワーク。
 Ruby 言語
  読みやすく、変化を受け入れる言語。
Agile 開発の本質


人間とチームがもつ、学ぶ力
Agile関連の重要書籍
 『 XP(エクストリーム・プログラミング)』(Kent Beck)
    「コミュニケーション」、「シンプルさ」、「フィードバック」、「勇気」、「敬意」
    テスト駆動開発
 『リーンソフトウェア開発』(Mary Poppendieck)
    トヨタ生産方式をソフトウェア開発へ
    もの作りはチーム作り
    バーンダウン、かんばん、7つのムダ
 『Crystal Clear 』 (Alistair Cockburn)
    プロジェクトを「安全地帯」へ導くチームづくり
    プロセスからピープルへ
 『アジャイルプロジェクトマネジメント(APM) 』(Jim Highsmith)
    変化に対応するチームづくり
    「コマンド-コントロール」⇒「リーダシップ-コラボレーション」
    「Plan-Do」⇒「Envision-Explore]
 『達人プログラマー』(David Thomas, Andrew Hunt, Mike Clark)
プロセスとしてのAgile
  短いサイクルで、分析、設計、実装、テストを並列に行う
  進化型開発

                               Agile
 Waterfall   要求(スコープ)                  要求(スコープ)

        分析

        設計

        実装

       テスト
 時間                       時間
             Royce 1970                    Beck 2000
Agileの価値、原則、実践

    価値
               まずはこれを共有すること
   values



     原則
                考え方としての方針
  principles



    実践
               具体的に現場ごとに作る
  practices
Agileの価値

私たちは,

プロセスとツールよりも   ……… 個人と対話に.
包括的なドキュメントよりも ……… 動くソフトウェアに.
契約交渉よりも       ……… 顧客との協調に.
計画に沿うことよりも    ……… 変化に対応することに.

価値をおく.


         出展:アジャイル宣言(agilemanifesto.org)
Agileの原則(1/3)
 顧客価値の優先
 価値のあるソフトウェアをできるだけ早い段階から継続的
 に納品することによって顧客満足度を最優先します。
 変化に対応
 要件の変更はたとえ開発の後期であっても受け入れます。
 変化を味方につけることによってお客様の競争力を引き上
 げます。
 短期のリリース
 動くソフトウェアを2~3週間から2~3ヶ月というできるだけ
 短い時間間隔でリリースします。
 全員同席
 ビジネスをする人と開発者はプロジェクトを通して日々一緒
 に働かなければなりません。
Agileの原則(2/3)
 モチベーションと信頼
 意欲に満ちた人々を集めてプロジェクトを構成します。環境と支援を与
 え仕事が無事終わるまで彼らを信頼してください。
 会話
 情報を伝えるもっとも効率的で効果的な方法はフェイス・トゥ・フェイス
 で話をすることです。
 動くソフトウェア
 動いているソフトウェアこそが進捗の最も重要な尺度です。
 持続可能なペース
 アジャイル・プロセスは持続可能な開発を促進します。一定のペースで
 永続的に保守できるようにしなければなりません。
Agileの原則(3/3)
 技術
 卓越した技術と優れた設計に対する不断の注意こそが機敏さを高めま
 す。
 シンプル
 シンプルさ – ムダなく作れる量を最大限にすること - が本質です。
 自己組織的チーム
 最良のアーキテクチャ、要件、設計は自己組織的なチームから生み出
 されます。
 ふりかえりと改善
 チームがもっと効率を高めることができるかを定期的に振り返り、それ
 に基づいて自分たちのやり方を最適に調整します。
Agileの実践(例 XP)(1/2)
 計画ゲーム
 ビジネス優先度と技術的見積により次回リリースの範囲を早急に決める。現実が計画と
 変わったら、計画を更新する。
 小規模リリース
 シンプルなシステムを早急に生産に投入する、それから新バージョンを非常に短いサイク
 ルでリリースしていく。
 メタファー
 どの様に全体のシステムが機能するかを示すシンプルな メタファーを共有することで全て
 の開発を導く(ガイドする)。
 シンプルデザイン
 いつでもシステムは出来る限りシンプルに設計されるべきだ。余分な複雑さは見つけ次第
 取り除かれる。
 テスティング
 プログラマは継続的にユニットテストを書く。顧客は、機能の開発が終わったことを示す受
 け入れテストを書く。
 リファクタリング
 2重コードを取り去り、単純化し、柔軟性を加えるために、プログラマは、システムの動作
 を換えることなくシステムを再構成する。
Agileの実践(例 XP)(2/2)
 ペアプログラミング
 全てのコードは2人のプログラマにより一台のマシンで書かれる。
 共同所有権
 誰でも、どのコードでも、どこででも、いつでも、プログラマはコードを修正できる。
 継続的インテグレーション
 システムを一日に何回もインテグレードしビルドし、テストを 100% パスさせる.
 週40時間
 週40時間以上仕事をしてはいけないのがルール。一日8時間を燃焼する。
 オンサイト顧客
 現実のユーザをチームに加えて、フルタイムで質問に答えられるようにする。
 コーディング標準
 プログラマは、コーディング標準に従って全てのコードを書く
Agile開発の本質
 単に繰り返すだけでなく、
 「人」に焦点を当てている。

 コミュニケーションを大事にする
 モチベーションを大事にする
 成長を促す
 「人が学ぶ」、ことを最大限に活かす
Java と Ruby
Java, Ruby, Agileの歴史
■ Javaの年表
    * 1996年: JDK 1.0リリース
    * 1999年: J2EE 1.0リリース
    * 2004年: Martin FowlerがDependency Injectionパターンを提唱
    * 2006年: EJB 3.0リリース
■ Rubyの年表
    * 1993年: Ruby誕生
    * 1995年: Ruby 0.95 リリース
    * 1999年: 「オブジェクト指向スクリプト言語 Ruby」出版
    * 2000年: Perl/Ruby Conference開催(京都)、「プログラミング言語Ruby 第2版 言語編」出版
    * 2001年: RubyConf 2001開催
    * 2005年: 「RailsによるアジャイルWebアプリケーション開発」出版
    * 2006年: 日本Rubyカンファレンス2006開催、第2次Rubyブームの予感
■ Agile開発の年表
    * 1999年: 「エクストリーム・プログラミング入門」出版
    * 2000年: 「プログラミングRuby 達人プログラマーガイド 」出版
    * 2001年: アジャイルマニフェスト制定
    * 2004年: 「エクストリーム・プログラミング入門 第2版」出版
    * 2005年: 「RailsによるアジャイルWebアプリケーション開発」出版
    * 2007年: 「Agile Software Development 2nd Edition」がJolt Awards受賞

               タイムライン:http://timeline.nifty.com/portal/show/2242
平鍋とJavaの関わり(1)
 生涯はじめての記事(DDJ日本版 1998年5月号)
 『Javaオブジェクトを操作するスクリプト言語』
  www.objectclub.jp/technicaldoc/java/scripting-java
平鍋とJavaの関わり(2)
 Jude梅開発開始 1997年12月
 2007年 10 月 200,000ユーザ達成
 jude.change-vision.com
  UML エディタ
  Mind Map
  ERD
  フローチャート
  DFD
  CRUD
RubyとJUDE
 JudeからActiveScaffold生成する(牛尾さん)
  http://codezine.jp/a/article/aid/1929.aspx
  http://luruju.com/(野村さん)
平鍋とJavaの関わり(3)
 TRICHORD: Agile なチーム開発サポート
 trichord.change-vision.com
今後5年で起こること
 Java は1995年当初、遅くて使えない言語
 だった。
 10年かかってWebアプリケーションの標準言
 語になったのは、CPUとネット速度の向上によ
 る。
 今後5年で、Rubyで同じことが起こる。
 CPUとネットが安くなるため、さらに「人にやさ
 しい言語」、「変更に対応できるプロセス」、「人
 からチベーションを引き出す言語とプロセス」
 が、ビジネスでも実際に使われるようになる。
Rubyの優位性
 ソースコードの読みやすさ
 プログラミングの楽しさ
 習熟度にあった学習曲線
 オープンクラス
Java から Ruby へ(1/3)
Java
for (int i = 0; i < 10; i++)
for (int i = 0; i < 10; i++)
    System.out.println(i);
    System.out.println(i);

Ruby
10.times {|i| puts i }
10.times {|i| puts i }
Java から Ruby へ(2/3)
       Java
       new Date(new Date().getTime()- 20 * 60 * 1000);
       new Date(new Date().getTime()- 20 * 60 * 1000);




       Ruby
       20.minutes.ago
       20.minutes.ago


出展:http://haacked.com/
Java から Ruby へ(3/3)
    Java
     public ActionForward edit(ActionMapping mapping, ActionForm form,
      public ActionForward edit(ActionMapping mapping, ActionForm form,
           HttpServletRequest request, HttpServletResponse response) throws
            HttpServletRequest request, HttpServletResponse response) throws
           Exception {{
            Exception
        PersonForm personForm = (PersonForm) form;
         PersonForm personForm = (PersonForm) form;
        if (personForm.getId() != null) {
         if (personForm.getId() != null) {
           PersonManager mgr = (PersonManager)getBean(quot;personManagerquot;);
            PersonManager mgr = (PersonManager)getBean(quot;personManagerquot;);
           Person person == mgr.getPerson(personForm.getId());
            Person person    mgr.getPerson(personForm.getId());
           personForm = (PersonForm) convert(person);
            personForm = (PersonForm) convert(person);
           updateFormBean(mapping, request, personForm);
            updateFormBean(mapping, request, personForm);
        }}
        return mapping.findForward(quot;editquot;);
         return mapping.findForward(quot;editquot;);
     }}


     Ruby
     def edit @person = Person.find(params[:id]) end
     def edit @person = Person.find(params[:id]) end
出展: http://www.relevancellc.com/
A better idea is to create a flexible language and let human creativity flow.
Fluent Interface
(流れるようなインターフェース)
両方Javaですが…
  private void makeNormal(Customer customer) {
  Order o1 = new Order();
  customer.addOrder(o1);
  OrderLine line1 = new OrderLine(6, Product.find(quot;TALquot;));
  o1.addLine(line1);
  OrderLine line2 = new OrderLine(5, Product.find(quot;HPKquot;));
  o1.addLine(line2);
  OrderLine line3 = new OrderLine(3, Product.find(quot;LGVquot;));
  o1.addLine(line3);
  line2.setSkippable(true);
  o1.setRush(true);
  }

  private void makeFluent(Customer customer) {
      customer.newOrder()
           .with(6, quot;TALquot;)
           .with(5, quot;HPKquot;).skippable()
           .with(3, quot;LGVquot;)
           .priorityRush();
    }

        http://www.martinfowler.com/bliki/FluentInterface.html
まとめ
 変化が早いビジネス領域では、「すべての要求を固
 めてドキュメント化し、それを一年かけて開発する」や
 り方では要求が変化・劣化する。
 Agile開発はすばやくリリースを反復し、漸進的に機
 能を提供し、変化に対応する。
 Agile開発は、人とソフトウェアを成長させることで、
 変化に対応する。
 Ruby, Rails は、マシンではなく、人の思考を自然に
 表現することに長けた言語とフレームワークである。
 Ruby + Agile は、ビジネスの変化に対応し、かつ、
 「ソフトウェア」と「人」を育てる、現在最も有望な組み
 合わせである。
1つのインスタンス化

Business     Web2.0
Process      Agile
Framework    Rails
Language     Ruby

Mais conteúdo relacionado

Mais procurados

Project Facilitation From Hiranabe
Project Facilitation From HiranabeProject Facilitation From Hiranabe
Project Facilitation From HiranabeYasui Tsutomu
 
実世界のゲームにおける推移性と非推移性
実世界のゲームにおける推移性と非推移性実世界のゲームにおける推移性と非推移性
実世界のゲームにおける推移性と非推移性Toru Fujino
 
仕事で使うRuby
仕事で使うRuby仕事で使うRuby
仕事で使うRubyKentaro Goto
 
第3回「国連機関への就職ガイダンス」資料
第3回「国連機関への就職ガイダンス」資料第3回「国連機関への就職ガイダンス」資料
第3回「国連機関への就職ガイダンス」資料IDDP UK
 
GIGAPOD OFFICEHARD
GIGAPOD OFFICEHARDGIGAPOD OFFICEHARD
GIGAPOD OFFICEHARDtripodworks
 
Web技術勉強会11回目
Web技術勉強会11回目Web技術勉強会11回目
Web技術勉強会11回目龍一 田中
 
E-Learning Hosting Proposal
E-Learning Hosting ProposalE-Learning Hosting Proposal
E-Learning Hosting ProposalTim Lu
 
第4回「気候変動対策の次期枠組みに向けて」資料 2/3(小林氏)
第4回「気候変動対策の次期枠組みに向けて」資料 2/3(小林氏)第4回「気候変動対策の次期枠組みに向けて」資料 2/3(小林氏)
第4回「気候変動対策の次期枠組みに向けて」資料 2/3(小林氏)IDDP UK
 
もっと仕事で使うRuby
もっと仕事で使うRubyもっと仕事で使うRuby
もっと仕事で使うRubyKentaro Goto
 
An untold story of the Mangamura controversy 2018
An untold story of the Mangamura controversy 2018An untold story of the Mangamura controversy 2018
An untold story of the Mangamura controversy 2018Tomohiko (TOMO) Hayashi
 
A lecture on e-book at Tokyo University of Science 20141008
A lecture on e-book at Tokyo University of Science 20141008 A lecture on e-book at Tokyo University of Science 20141008
A lecture on e-book at Tokyo University of Science 20141008 Tomohiko (TOMO) Hayashi
 
Kymco Marketing Plan
Kymco Marketing PlanKymco Marketing Plan
Kymco Marketing PlanTim Lu
 
洋書(英語情報源)に見るDXの定義
洋書(英語情報源)に見るDXの定義洋書(英語情報源)に見るDXの定義
洋書(英語情報源)に見るDXの定義Tomohiko (TOMO) Hayashi
 
enNetforum Toyama Presentation
enNetforum Toyama PresentationenNetforum Toyama Presentation
enNetforum Toyama PresentationForum
 

Mais procurados (20)

Project Facilitation From Hiranabe
Project Facilitation From HiranabeProject Facilitation From Hiranabe
Project Facilitation From Hiranabe
 
PFI会社案内
PFI会社案内PFI会社案内
PFI会社案内
 
実世界のゲームにおける推移性と非推移性
実世界のゲームにおける推移性と非推移性実世界のゲームにおける推移性と非推移性
実世界のゲームにおける推移性と非推移性
 
仕事で使うRuby
仕事で使うRuby仕事で使うRuby
仕事で使うRuby
 
第3回「国連機関への就職ガイダンス」資料
第3回「国連機関への就職ガイダンス」資料第3回「国連機関への就職ガイダンス」資料
第3回「国連機関への就職ガイダンス」資料
 
S19
S19S19
S19
 
Regex Introduction
Regex IntroductionRegex Introduction
Regex Introduction
 
GIGAPOD OFFICEHARD
GIGAPOD OFFICEHARDGIGAPOD OFFICEHARD
GIGAPOD OFFICEHARD
 
Web技術勉強会11回目
Web技術勉強会11回目Web技術勉強会11回目
Web技術勉強会11回目
 
Kumamoto Seminar
Kumamoto SeminarKumamoto Seminar
Kumamoto Seminar
 
E-Learning Hosting Proposal
E-Learning Hosting ProposalE-Learning Hosting Proposal
E-Learning Hosting Proposal
 
EclipSky200712
EclipSky200712EclipSky200712
EclipSky200712
 
第4回「気候変動対策の次期枠組みに向けて」資料 2/3(小林氏)
第4回「気候変動対策の次期枠組みに向けて」資料 2/3(小林氏)第4回「気候変動対策の次期枠組みに向けて」資料 2/3(小林氏)
第4回「気候変動対策の次期枠組みに向けて」資料 2/3(小林氏)
 
もっと仕事で使うRuby
もっと仕事で使うRubyもっと仕事で使うRuby
もっと仕事で使うRuby
 
An untold story of the Mangamura controversy 2018
An untold story of the Mangamura controversy 2018An untold story of the Mangamura controversy 2018
An untold story of the Mangamura controversy 2018
 
开题报告
开题报告开题报告
开题报告
 
A lecture on e-book at Tokyo University of Science 20141008
A lecture on e-book at Tokyo University of Science 20141008 A lecture on e-book at Tokyo University of Science 20141008
A lecture on e-book at Tokyo University of Science 20141008
 
Kymco Marketing Plan
Kymco Marketing PlanKymco Marketing Plan
Kymco Marketing Plan
 
洋書(英語情報源)に見るDXの定義
洋書(英語情報源)に見るDXの定義洋書(英語情報源)に見るDXの定義
洋書(英語情報源)に見るDXの定義
 
enNetforum Toyama Presentation
enNetforum Toyama PresentationenNetforum Toyama Presentation
enNetforum Toyama Presentation
 

Destaque

Rubyの仕事で食べていくために僕らは!
Rubyの仕事で食べていくために僕らは!Rubyの仕事で食べていくために僕らは!
Rubyの仕事で食べていくために僕らは!Ouka Yuka
 
サルでもわかるディープラーニング入門 (2017年) (In Japanese)
サルでもわかるディープラーニング入門 (2017年) (In Japanese)サルでもわかるディープラーニング入門 (2017年) (In Japanese)
サルでもわかるディープラーニング入門 (2017年) (In Japanese)Toshihiko Yamakami
 
パケットキャプチャの勘どころ Ssmjp 201501
パケットキャプチャの勘どころ Ssmjp 201501パケットキャプチャの勘どころ Ssmjp 201501
パケットキャプチャの勘どころ Ssmjp 201501稔 小林
 
jpeg-guetzli-precautions
jpeg-guetzli-precautionsjpeg-guetzli-precautions
jpeg-guetzli-precautionsYo Ya
 
Mac Rubyではじめる!Macアプリ開発入門
Mac Rubyではじめる!Macアプリ開発入門Mac Rubyではじめる!Macアプリ開発入門
Mac Rubyではじめる!Macアプリ開発入門宏治 高尾
 
rake:money拡大版@Ruby会議2010 ~Rubyエンジニアと企業の幸せな関係~
rake:money拡大版@Ruby会議2010 ~Rubyエンジニアと企業の幸せな関係~rake:money拡大版@Ruby会議2010 ~Rubyエンジニアと企業の幸せな関係~
rake:money拡大版@Ruby会議2010 ~Rubyエンジニアと企業の幸せな関係~Ouka Yuka
 
JavascriptでRubyの作り方
JavascriptでRubyの作り方JavascriptでRubyの作り方
JavascriptでRubyの作り方Shuyo Nakatani
 
Ruby本から読み解くRuby考古学 - Ruby Archaeology from the Ruby Book
Ruby本から読み解くRuby考古学 - Ruby Archaeology from the Ruby BookRuby本から読み解くRuby考古学 - Ruby Archaeology from the Ruby Book
Ruby本から読み解くRuby考古学 - Ruby Archaeology from the Ruby BookTadashi Saito
 
Ruby on Rails を用いたWEBアプリケーションの開発
Ruby on Rails を用いたWEBアプリケーションの開発Ruby on Rails を用いたWEBアプリケーションの開発
Ruby on Rails を用いたWEBアプリケーションの開発Koichi Shimozono
 
桐島、Rubyやめるってよ
桐島、Rubyやめるってよ桐島、Rubyやめるってよ
桐島、RubyやめるってよNarihiro Nakamura
 
Rubyで作るクローラー Ruby crawler
Rubyで作るクローラー Ruby crawlerRubyで作るクローラー Ruby crawler
Rubyで作るクローラー Ruby crawlerTakuro Sasaki
 
ペパボ福岡支社におけるRubyの活用事例
ペパボ福岡支社におけるRubyの活用事例ペパボ福岡支社におけるRubyの活用事例
ペパボ福岡支社におけるRubyの活用事例Uchio Kondo
 
Apache ArrowのRubyバインディングをGObject Introspectionで
Apache ArrowのRubyバインディングをGObject IntrospectionでApache ArrowのRubyバインディングをGObject Introspectionで
Apache ArrowのRubyバインディングをGObject IntrospectionでKouhei Sutou
 
知っているようで知らないNeutron -仮想ルータの冗長と分散- - OpenStack最新情報セミナー 2016年3月
知っているようで知らないNeutron -仮想ルータの冗長と分散- - OpenStack最新情報セミナー 2016年3月 知っているようで知らないNeutron -仮想ルータの冗長と分散- - OpenStack最新情報セミナー 2016年3月
知っているようで知らないNeutron -仮想ルータの冗長と分散- - OpenStack最新情報セミナー 2016年3月 VirtualTech Japan Inc.
 
Rubyによるデータ解析
Rubyによるデータ解析Rubyによるデータ解析
Rubyによるデータ解析Shugo Maeda
 
Ruby 2.4 / Rails 5.0に上げた際のパッチ5選
Ruby 2.4 / Rails 5.0に上げた際のパッチ5選Ruby 2.4 / Rails 5.0に上げた際のパッチ5選
Ruby 2.4 / Rails 5.0に上げた際のパッチ5選Koichi ITO
 
Sir John Ellis Prize 2015 - KCL MBBS 2020 Curriculum Review
Sir John Ellis Prize 2015 - KCL MBBS 2020 Curriculum ReviewSir John Ellis Prize 2015 - KCL MBBS 2020 Curriculum Review
Sir John Ellis Prize 2015 - KCL MBBS 2020 Curriculum Reviewtherajivsethi
 
What is so special about Ratnagiri Alfonso?
What is so special about Ratnagiri Alfonso?What is so special about Ratnagiri Alfonso?
What is so special about Ratnagiri Alfonso?Gouri Jadhav
 

Destaque (20)

Rubyの仕事で食べていくために僕らは!
Rubyの仕事で食べていくために僕らは!Rubyの仕事で食べていくために僕らは!
Rubyの仕事で食べていくために僕らは!
 
NoSQL3
NoSQL3NoSQL3
NoSQL3
 
サルでもわかるディープラーニング入門 (2017年) (In Japanese)
サルでもわかるディープラーニング入門 (2017年) (In Japanese)サルでもわかるディープラーニング入門 (2017年) (In Japanese)
サルでもわかるディープラーニング入門 (2017年) (In Japanese)
 
パケットキャプチャの勘どころ Ssmjp 201501
パケットキャプチャの勘どころ Ssmjp 201501パケットキャプチャの勘どころ Ssmjp 201501
パケットキャプチャの勘どころ Ssmjp 201501
 
jpeg-guetzli-precautions
jpeg-guetzli-precautionsjpeg-guetzli-precautions
jpeg-guetzli-precautions
 
Mac Rubyではじめる!Macアプリ開発入門
Mac Rubyではじめる!Macアプリ開発入門Mac Rubyではじめる!Macアプリ開発入門
Mac Rubyではじめる!Macアプリ開発入門
 
rake:money拡大版@Ruby会議2010 ~Rubyエンジニアと企業の幸せな関係~
rake:money拡大版@Ruby会議2010 ~Rubyエンジニアと企業の幸せな関係~rake:money拡大版@Ruby会議2010 ~Rubyエンジニアと企業の幸せな関係~
rake:money拡大版@Ruby会議2010 ~Rubyエンジニアと企業の幸せな関係~
 
JavascriptでRubyの作り方
JavascriptでRubyの作り方JavascriptでRubyの作り方
JavascriptでRubyの作り方
 
Ruby本から読み解くRuby考古学 - Ruby Archaeology from the Ruby Book
Ruby本から読み解くRuby考古学 - Ruby Archaeology from the Ruby BookRuby本から読み解くRuby考古学 - Ruby Archaeology from the Ruby Book
Ruby本から読み解くRuby考古学 - Ruby Archaeology from the Ruby Book
 
Ruby on Rails を用いたWEBアプリケーションの開発
Ruby on Rails を用いたWEBアプリケーションの開発Ruby on Rails を用いたWEBアプリケーションの開発
Ruby on Rails を用いたWEBアプリケーションの開発
 
桐島、Rubyやめるってよ
桐島、Rubyやめるってよ桐島、Rubyやめるってよ
桐島、Rubyやめるってよ
 
Rubyで作るクローラー Ruby crawler
Rubyで作るクローラー Ruby crawlerRubyで作るクローラー Ruby crawler
Rubyで作るクローラー Ruby crawler
 
ペパボ福岡支社におけるRubyの活用事例
ペパボ福岡支社におけるRubyの活用事例ペパボ福岡支社におけるRubyの活用事例
ペパボ福岡支社におけるRubyの活用事例
 
Apache ArrowのRubyバインディングをGObject Introspectionで
Apache ArrowのRubyバインディングをGObject IntrospectionでApache ArrowのRubyバインディングをGObject Introspectionで
Apache ArrowのRubyバインディングをGObject Introspectionで
 
知っているようで知らないNeutron -仮想ルータの冗長と分散- - OpenStack最新情報セミナー 2016年3月
知っているようで知らないNeutron -仮想ルータの冗長と分散- - OpenStack最新情報セミナー 2016年3月 知っているようで知らないNeutron -仮想ルータの冗長と分散- - OpenStack最新情報セミナー 2016年3月
知っているようで知らないNeutron -仮想ルータの冗長と分散- - OpenStack最新情報セミナー 2016年3月
 
Rubyによるデータ解析
Rubyによるデータ解析Rubyによるデータ解析
Rubyによるデータ解析
 
Ruby 2.4 / Rails 5.0に上げた際のパッチ5選
Ruby 2.4 / Rails 5.0に上げた際のパッチ5選Ruby 2.4 / Rails 5.0に上げた際のパッチ5選
Ruby 2.4 / Rails 5.0に上げた際のパッチ5選
 
Sir John Ellis Prize 2015 - KCL MBBS 2020 Curriculum Review
Sir John Ellis Prize 2015 - KCL MBBS 2020 Curriculum ReviewSir John Ellis Prize 2015 - KCL MBBS 2020 Curriculum Review
Sir John Ellis Prize 2015 - KCL MBBS 2020 Curriculum Review
 
Aprendizaje por proyectos.
Aprendizaje por proyectos. Aprendizaje por proyectos.
Aprendizaje por proyectos.
 
What is so special about Ratnagiri Alfonso?
What is so special about Ratnagiri Alfonso?What is so special about Ratnagiri Alfonso?
What is so special about Ratnagiri Alfonso?
 

Mais de Kenji Hiranabe

effective ba for online communication
effective ba for online communication effective ba for online communication
effective ba for online communication Kenji Hiranabe
 
線形代数の視覚的理解 V1.1-Gストラング勉強会
線形代数の視覚的理解 V1.1-Gストラング勉強会線形代数の視覚的理解 V1.1-Gストラング勉強会
線形代数の視覚的理解 V1.1-Gストラング勉強会Kenji Hiranabe
 
Math in Machine Learning / PCA and SVD with Applications
Math in Machine Learning / PCA and SVD with ApplicationsMath in Machine Learning / PCA and SVD with Applications
Math in Machine Learning / PCA and SVD with ApplicationsKenji Hiranabe
 
Scrum-Fest-Sapporo-2021-Keynote-Our-Journey
Scrum-Fest-Sapporo-2021-Keynote-Our-JourneyScrum-Fest-Sapporo-2021-Keynote-Our-Journey
Scrum-Fest-Sapporo-2021-Keynote-Our-JourneyKenji Hiranabe
 
Graphic Notes on Linear Algebra and Data Science
Graphic Notes on Linear Algebra and Data ScienceGraphic Notes on Linear Algebra and Data Science
Graphic Notes on Linear Algebra and Data ScienceKenji Hiranabe
 
Appreciating Your Way to XP
Appreciating Your Way to XPAppreciating Your Way to XP
Appreciating Your Way to XPKenji Hiranabe
 
Digital Business and Agile
Digital Business and AgileDigital Business and Agile
Digital Business and AgileKenji Hiranabe
 
Graphic Notes on Introduction to Linear Algebra
Graphic Notes on Introduction to Linear AlgebraGraphic Notes on Introduction to Linear Algebra
Graphic Notes on Introduction to Linear AlgebraKenji Hiranabe
 
線形代数の視覚的理解のためのノート
線形代数の視覚的理解のためのノート線形代数の視覚的理解のためのノート
線形代数の視覚的理解のためのノートKenji Hiranabe
 
with コロナ時代のアジャイルとコミュニケーション
with コロナ時代のアジャイルとコミュニケーションwith コロナ時代のアジャイルとコミュニケーション
with コロナ時代のアジャイルとコミュニケーションKenji Hiranabe
 
Agile Ba with Covid at Redmine Japan 2020
Agile Ba with Covid at Redmine Japan 2020Agile Ba with Covid at Redmine Japan 2020
Agile Ba with Covid at Redmine Japan 2020Kenji Hiranabe
 
ESM Agile Studio DX and COVID
ESM Agile Studio DX and COVIDESM Agile Studio DX and COVID
ESM Agile Studio DX and COVIDKenji Hiranabe
 
Essence position talk by hiranabe
Essence position talk by hiranabeEssence position talk by hiranabe
Essence position talk by hiranabeKenji Hiranabe
 
Agile Scrum at Knowledge Forum 2020
Agile Scrum at Knowledge Forum 2020Agile Scrum at Knowledge Forum 2020
Agile Scrum at Knowledge Forum 2020Kenji Hiranabe
 
Ba and digital here now ness
Ba and digital here now nessBa and digital here now ness
Ba and digital here now nessKenji Hiranabe
 
Modeling in the Agile Age and casual astah models
Modeling in the Agile Age and casual astah modelsModeling in the Agile Age and casual astah models
Modeling in the Agile Age and casual astah modelsKenji Hiranabe
 
Modeling in the Agile Age
Modeling in the Agile Age Modeling in the Agile Age
Modeling in the Agile Age Kenji Hiranabe
 
Agile in automotive industry
Agile in automotive industryAgile in automotive industry
Agile in automotive industryKenji Hiranabe
 
Introduction to Agile - how business and engineer team up
Introduction to Agile - how business and engineer team upIntroduction to Agile - how business and engineer team up
Introduction to Agile - how business and engineer team upKenji Hiranabe
 

Mais de Kenji Hiranabe (20)

effective ba for online communication
effective ba for online communication effective ba for online communication
effective ba for online communication
 
線形代数の視覚的理解 V1.1-Gストラング勉強会
線形代数の視覚的理解 V1.1-Gストラング勉強会線形代数の視覚的理解 V1.1-Gストラング勉強会
線形代数の視覚的理解 V1.1-Gストラング勉強会
 
Math in Machine Learning / PCA and SVD with Applications
Math in Machine Learning / PCA and SVD with ApplicationsMath in Machine Learning / PCA and SVD with Applications
Math in Machine Learning / PCA and SVD with Applications
 
Scrum-Fest-Sapporo-2021-Keynote-Our-Journey
Scrum-Fest-Sapporo-2021-Keynote-Our-JourneyScrum-Fest-Sapporo-2021-Keynote-Our-Journey
Scrum-Fest-Sapporo-2021-Keynote-Our-Journey
 
Graphic Notes on Linear Algebra and Data Science
Graphic Notes on Linear Algebra and Data ScienceGraphic Notes on Linear Algebra and Data Science
Graphic Notes on Linear Algebra and Data Science
 
Appreciating Your Way to XP
Appreciating Your Way to XPAppreciating Your Way to XP
Appreciating Your Way to XP
 
Digital Business and Agile
Digital Business and AgileDigital Business and Agile
Digital Business and Agile
 
Graphic Notes on Introduction to Linear Algebra
Graphic Notes on Introduction to Linear AlgebraGraphic Notes on Introduction to Linear Algebra
Graphic Notes on Introduction to Linear Algebra
 
線形代数の視覚的理解のためのノート
線形代数の視覚的理解のためのノート線形代数の視覚的理解のためのノート
線形代数の視覚的理解のためのノート
 
with コロナ時代のアジャイルとコミュニケーション
with コロナ時代のアジャイルとコミュニケーションwith コロナ時代のアジャイルとコミュニケーション
with コロナ時代のアジャイルとコミュニケーション
 
Agile Ba with Covid at Redmine Japan 2020
Agile Ba with Covid at Redmine Japan 2020Agile Ba with Covid at Redmine Japan 2020
Agile Ba with Covid at Redmine Japan 2020
 
ESM Agile Studio DX and COVID
ESM Agile Studio DX and COVIDESM Agile Studio DX and COVID
ESM Agile Studio DX and COVID
 
Agile Ba with Covid
Agile Ba with CovidAgile Ba with Covid
Agile Ba with Covid
 
Essence position talk by hiranabe
Essence position talk by hiranabeEssence position talk by hiranabe
Essence position talk by hiranabe
 
Agile Scrum at Knowledge Forum 2020
Agile Scrum at Knowledge Forum 2020Agile Scrum at Knowledge Forum 2020
Agile Scrum at Knowledge Forum 2020
 
Ba and digital here now ness
Ba and digital here now nessBa and digital here now ness
Ba and digital here now ness
 
Modeling in the Agile Age and casual astah models
Modeling in the Agile Age and casual astah modelsModeling in the Agile Age and casual astah models
Modeling in the Agile Age and casual astah models
 
Modeling in the Agile Age
Modeling in the Agile Age Modeling in the Agile Age
Modeling in the Agile Age
 
Agile in automotive industry
Agile in automotive industryAgile in automotive industry
Agile in automotive industry
 
Introduction to Agile - how business and engineer team up
Introduction to Agile - how business and engineer team upIntroduction to Agile - how business and engineer team up
Introduction to Agile - how business and engineer team up
 

Ruby による Agile 開発

  • 2. 概要 「Ruby on Rails」で Web 開発に衝撃を与え たRuby。そして、すばやい繰り返し開発をテス トで駆動するAgile。JavaとRubyの違いは何 か。双方の優位性は?そして、Agile開発との 関係は?これまで10年のソフトウェア開発の歴 史を踏まえ、2007年から2010年のソフトウェ ア開発の現場で起こるパラダイムシフトについ ての予測します。
  • 3. 自己紹介 株式会社永和システムマネジメント 金融・医療・オブジェクト指向技術を使ったシステム開発、教育、コンサルティング オブジェクト倶楽部 アジャイル開発の知識と実践 Ruby 開発者の数(30人)と実績(13プロジェクト) 株式会社チェンジビジョン 本社は東京都新宿、JUDE開発部は福井 JUDE と TRICHORD で見える化 平鍋健児 リアルタイム,CAD、オブジェクト指向の実践 UMLエディタJUDEの開発 オブジェクト倶楽部主宰 アジャイルプロセス協議会、副会長 翻訳、XP関連書籍、『リーンソフトウェア開発』、『アジャイルプロジェクトマネジメント』
  • 6. ミッション・リスク分割型ビジネスと 1 ウォーターフォール型開発 発注 市場分析 市場 ビジネス IT 市場 ビジネス IT 納品 リリース 半年から3年
  • 7. 要求の劣化 システムの機能の利用度 いつも使う 7% よく使う 13% たまに使う 16% 全く使われない ほとんど使われな 45% い 19% Standish group study report in 2000 chaos report
  • 8. プロジェクトの成功は、 Moving Target 不明確か 不明確か つ不安定 つ不安定 要求 R(t) な要求。 な要求。 システム S(t) Δ 基盤技術 T(t) t Δ T(t) チーム(t) R(t) S(t) チーム(t)
  • 9. ミッション・リスク共有型ビジネスと 2 Agile型開発 ビジネスとITが一体になった 「OneTeam」を作り、ミッション 市場 とリスクを共有する。 やってみて、結果から戦略を 作りながら進む。 ビジネス 市場 市場 半年 ら 間か Web2.0型 2週 IT IT
  • 10. WebビジネスとAgile型開発 (1/2) 時間軸: 2週間~半年単位のリリースを繰り返す 機 反復(Iterative) 能 軸 重 漸 R1 R2 R3 要 進 機 (Incremental) 開発 サービス 能 機能A か ら サービス 開発 積 機能B み サービス 上 開発 機能C げ る
  • 11. WebビジネスとAgile型開発(2/2) 機能軸: 積み上げる(漸進) ビジネス重要度の高いものから開発する。 時間軸: 繰り返す(反復) 2週間~3ヶ月~半年のリリースを繰り返す。 ITの利点 ビジネスの利点 早期にサービス 不慣れなテクノロ を開始し、ビジネ ジに徐々に慣れ ス効果を見なが ていく。開発に不 ら、投資を決めて 慣れな人材を教 いく。 育する。 ビジネスとITがともに「学習」しながら、育っていく。
  • 12. 高速な繰り返しを可能にする技術 Agile 開発プロセス XP、Scrum、プロジェクトファシリテーションをベー スとしたAgile型の開発プロセス。 Rails フレームワーク Webアプリケーションを素早く、見栄えよく作れる アプリケーションフレームワーク。 Ruby 言語 読みやすく、変化を受け入れる言語。
  • 14. Agile関連の重要書籍 『 XP(エクストリーム・プログラミング)』(Kent Beck) 「コミュニケーション」、「シンプルさ」、「フィードバック」、「勇気」、「敬意」 テスト駆動開発 『リーンソフトウェア開発』(Mary Poppendieck) トヨタ生産方式をソフトウェア開発へ もの作りはチーム作り バーンダウン、かんばん、7つのムダ 『Crystal Clear 』 (Alistair Cockburn) プロジェクトを「安全地帯」へ導くチームづくり プロセスからピープルへ 『アジャイルプロジェクトマネジメント(APM) 』(Jim Highsmith) 変化に対応するチームづくり 「コマンド-コントロール」⇒「リーダシップ-コラボレーション」 「Plan-Do」⇒「Envision-Explore] 『達人プログラマー』(David Thomas, Andrew Hunt, Mike Clark)
  • 15. プロセスとしてのAgile 短いサイクルで、分析、設計、実装、テストを並列に行う 進化型開発 Agile Waterfall 要求(スコープ) 要求(スコープ) 分析 設計 実装 テスト 時間 時間 Royce 1970 Beck 2000
  • 16. Agileの価値、原則、実践 価値 まずはこれを共有すること values 原則 考え方としての方針 principles 実践 具体的に現場ごとに作る practices
  • 17. Agileの価値 私たちは, プロセスとツールよりも ……… 個人と対話に. 包括的なドキュメントよりも ……… 動くソフトウェアに. 契約交渉よりも ……… 顧客との協調に. 計画に沿うことよりも ……… 変化に対応することに. 価値をおく. 出展:アジャイル宣言(agilemanifesto.org)
  • 18. Agileの原則(1/3) 顧客価値の優先 価値のあるソフトウェアをできるだけ早い段階から継続的 に納品することによって顧客満足度を最優先します。 変化に対応 要件の変更はたとえ開発の後期であっても受け入れます。 変化を味方につけることによってお客様の競争力を引き上 げます。 短期のリリース 動くソフトウェアを2~3週間から2~3ヶ月というできるだけ 短い時間間隔でリリースします。 全員同席 ビジネスをする人と開発者はプロジェクトを通して日々一緒 に働かなければなりません。
  • 19. Agileの原則(2/3) モチベーションと信頼 意欲に満ちた人々を集めてプロジェクトを構成します。環境と支援を与 え仕事が無事終わるまで彼らを信頼してください。 会話 情報を伝えるもっとも効率的で効果的な方法はフェイス・トゥ・フェイス で話をすることです。 動くソフトウェア 動いているソフトウェアこそが進捗の最も重要な尺度です。 持続可能なペース アジャイル・プロセスは持続可能な開発を促進します。一定のペースで 永続的に保守できるようにしなければなりません。
  • 20. Agileの原則(3/3) 技術 卓越した技術と優れた設計に対する不断の注意こそが機敏さを高めま す。 シンプル シンプルさ – ムダなく作れる量を最大限にすること - が本質です。 自己組織的チーム 最良のアーキテクチャ、要件、設計は自己組織的なチームから生み出 されます。 ふりかえりと改善 チームがもっと効率を高めることができるかを定期的に振り返り、それ に基づいて自分たちのやり方を最適に調整します。
  • 21. Agileの実践(例 XP)(1/2) 計画ゲーム ビジネス優先度と技術的見積により次回リリースの範囲を早急に決める。現実が計画と 変わったら、計画を更新する。 小規模リリース シンプルなシステムを早急に生産に投入する、それから新バージョンを非常に短いサイク ルでリリースしていく。 メタファー どの様に全体のシステムが機能するかを示すシンプルな メタファーを共有することで全て の開発を導く(ガイドする)。 シンプルデザイン いつでもシステムは出来る限りシンプルに設計されるべきだ。余分な複雑さは見つけ次第 取り除かれる。 テスティング プログラマは継続的にユニットテストを書く。顧客は、機能の開発が終わったことを示す受 け入れテストを書く。 リファクタリング 2重コードを取り去り、単純化し、柔軟性を加えるために、プログラマは、システムの動作 を換えることなくシステムを再構成する。
  • 22. Agileの実践(例 XP)(2/2) ペアプログラミング 全てのコードは2人のプログラマにより一台のマシンで書かれる。 共同所有権 誰でも、どのコードでも、どこででも、いつでも、プログラマはコードを修正できる。 継続的インテグレーション システムを一日に何回もインテグレードしビルドし、テストを 100% パスさせる. 週40時間 週40時間以上仕事をしてはいけないのがルール。一日8時間を燃焼する。 オンサイト顧客 現実のユーザをチームに加えて、フルタイムで質問に答えられるようにする。 コーディング標準 プログラマは、コーディング標準に従って全てのコードを書く
  • 23. Agile開発の本質 単に繰り返すだけでなく、 「人」に焦点を当てている。 コミュニケーションを大事にする モチベーションを大事にする 成長を促す 「人が学ぶ」、ことを最大限に活かす
  • 25. Java, Ruby, Agileの歴史 ■ Javaの年表 * 1996年: JDK 1.0リリース * 1999年: J2EE 1.0リリース * 2004年: Martin FowlerがDependency Injectionパターンを提唱 * 2006年: EJB 3.0リリース ■ Rubyの年表 * 1993年: Ruby誕生 * 1995年: Ruby 0.95 リリース * 1999年: 「オブジェクト指向スクリプト言語 Ruby」出版 * 2000年: Perl/Ruby Conference開催(京都)、「プログラミング言語Ruby 第2版 言語編」出版 * 2001年: RubyConf 2001開催 * 2005年: 「RailsによるアジャイルWebアプリケーション開発」出版 * 2006年: 日本Rubyカンファレンス2006開催、第2次Rubyブームの予感 ■ Agile開発の年表 * 1999年: 「エクストリーム・プログラミング入門」出版 * 2000年: 「プログラミングRuby 達人プログラマーガイド 」出版 * 2001年: アジャイルマニフェスト制定 * 2004年: 「エクストリーム・プログラミング入門 第2版」出版 * 2005年: 「RailsによるアジャイルWebアプリケーション開発」出版 * 2007年: 「Agile Software Development 2nd Edition」がJolt Awards受賞 タイムライン:http://timeline.nifty.com/portal/show/2242
  • 26. 平鍋とJavaの関わり(1) 生涯はじめての記事(DDJ日本版 1998年5月号) 『Javaオブジェクトを操作するスクリプト言語』 www.objectclub.jp/technicaldoc/java/scripting-java
  • 27. 平鍋とJavaの関わり(2) Jude梅開発開始 1997年12月 2007年 10 月 200,000ユーザ達成 jude.change-vision.com UML エディタ Mind Map ERD フローチャート DFD CRUD
  • 28.
  • 29. RubyとJUDE JudeからActiveScaffold生成する(牛尾さん) http://codezine.jp/a/article/aid/1929.aspx http://luruju.com/(野村さん)
  • 30. 平鍋とJavaの関わり(3) TRICHORD: Agile なチーム開発サポート trichord.change-vision.com
  • 31.
  • 32. 今後5年で起こること Java は1995年当初、遅くて使えない言語 だった。 10年かかってWebアプリケーションの標準言 語になったのは、CPUとネット速度の向上によ る。 今後5年で、Rubyで同じことが起こる。 CPUとネットが安くなるため、さらに「人にやさ しい言語」、「変更に対応できるプロセス」、「人 からチベーションを引き出す言語とプロセス」 が、ビジネスでも実際に使われるようになる。
  • 33. Rubyの優位性 ソースコードの読みやすさ プログラミングの楽しさ 習熟度にあった学習曲線 オープンクラス
  • 34. Java から Ruby へ(1/3) Java for (int i = 0; i < 10; i++) for (int i = 0; i < 10; i++) System.out.println(i); System.out.println(i); Ruby 10.times {|i| puts i } 10.times {|i| puts i }
  • 35. Java から Ruby へ(2/3) Java new Date(new Date().getTime()- 20 * 60 * 1000); new Date(new Date().getTime()- 20 * 60 * 1000); Ruby 20.minutes.ago 20.minutes.ago 出展:http://haacked.com/
  • 36. Java から Ruby へ(3/3) Java public ActionForward edit(ActionMapping mapping, ActionForm form, public ActionForward edit(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws HttpServletRequest request, HttpServletResponse response) throws Exception {{ Exception PersonForm personForm = (PersonForm) form; PersonForm personForm = (PersonForm) form; if (personForm.getId() != null) { if (personForm.getId() != null) { PersonManager mgr = (PersonManager)getBean(quot;personManagerquot;); PersonManager mgr = (PersonManager)getBean(quot;personManagerquot;); Person person == mgr.getPerson(personForm.getId()); Person person mgr.getPerson(personForm.getId()); personForm = (PersonForm) convert(person); personForm = (PersonForm) convert(person); updateFormBean(mapping, request, personForm); updateFormBean(mapping, request, personForm); }} return mapping.findForward(quot;editquot;); return mapping.findForward(quot;editquot;); }} Ruby def edit @person = Person.find(params[:id]) end def edit @person = Person.find(params[:id]) end 出展: http://www.relevancellc.com/ A better idea is to create a flexible language and let human creativity flow.
  • 37. Fluent Interface (流れるようなインターフェース) 両方Javaですが… private void makeNormal(Customer customer) { Order o1 = new Order(); customer.addOrder(o1); OrderLine line1 = new OrderLine(6, Product.find(quot;TALquot;)); o1.addLine(line1); OrderLine line2 = new OrderLine(5, Product.find(quot;HPKquot;)); o1.addLine(line2); OrderLine line3 = new OrderLine(3, Product.find(quot;LGVquot;)); o1.addLine(line3); line2.setSkippable(true); o1.setRush(true); } private void makeFluent(Customer customer) { customer.newOrder() .with(6, quot;TALquot;) .with(5, quot;HPKquot;).skippable() .with(3, quot;LGVquot;) .priorityRush(); } http://www.martinfowler.com/bliki/FluentInterface.html
  • 38. まとめ 変化が早いビジネス領域では、「すべての要求を固 めてドキュメント化し、それを一年かけて開発する」や り方では要求が変化・劣化する。 Agile開発はすばやくリリースを反復し、漸進的に機 能を提供し、変化に対応する。 Agile開発は、人とソフトウェアを成長させることで、 変化に対応する。 Ruby, Rails は、マシンではなく、人の思考を自然に 表現することに長けた言語とフレームワークである。 Ruby + Agile は、ビジネスの変化に対応し、かつ、 「ソフトウェア」と「人」を育てる、現在最も有望な組み 合わせである。
  • 39. 1つのインスタンス化 Business Web2.0 Process Agile Framework Rails Language Ruby