忙しい方に贈るアジャイル開発の
開発環境構築のすゝめ
                    〜開発を加速化させる自動化のヒント〜




LDD’13 / Infra & Security      Masashi Kayahara
・Who are you?
・ソフトウェア開発プロセスとアジャイル
・アジャイル開発の開発環境
・最後に!




               Agenda
・Who are you?
・ソフトウェア開発プロセスとアジャイル
・アジャイル開発の開発環境
・最後に!




                Agenda
What's your name?




         茅原(かやはら)

                    Who are you ?
What are you doing?




自宅ではコンパイラの開発
自宅ではコンパイラの開発



                      本職もプログラマ
                      本職もプログラマ


                      Who are you ?
Twitter

          Twitterにも生息中
          Twitterにも生息中




            @show_rabbit
            @show_rabbit

             Who are you ?
・Who are you?
・ソフトウェア開発プロセスとアジャイル
・アジャイル開発の開発環境
・最後に!




               Agenda
ソフトウェア開発プロセスのおさらい
                         システム
                         システム
 要求仕様
 要求仕様                     テスト
                          テスト


   機能仕様
   機能仕様              結合テスト
                     結合テスト



        設計
        設計       単体テスト
                 単体テスト


             実装
             実装
          (コーディング)
          (コーディング)
                     ウォータフォール、スパイラル
                     ウォータフォール、スパイラル



  ソフトウェア開発プロセスとアジャイル①
ソフトウェア開発プロセス - アジャイル
 RUP
スクラム       改善
           改善           タスク
                        タスク
  XP    (リファクタ)
        (リファクタ)
リーン開発
 FDD




                  XP
           試験
           試験
                       実装・設計
                       実装・設計




        ソフトウェア開発プロセスとアジャイル②
XP(エクストリームプログラミング)

もしコードレビューが良いなら、常にレビューする
(ペアプロ)
もしテストが良いなら、常にテストする(単体テスト)

もし設計が良いなら、常に設計する(リファクタリング)

もし結合テストが良いなら、常に結合テストをする
(継続的インテグレーション)
もしアーキテクトが重要なら、常にアーキテクトを
定義する(メタファー)



  ソフトウェア開発プロセスとアジャイル③
・Who are you?
・ソフトウェア開発プロセスとアジャイル
・アジャイル開発の開発環境
・最後に!




               Agenda
アジャイル開発ツール(三種の神器)

            ソース管理ツール
            ソース管理ツール




      CIツール
       CIツール
(継続的インテグレーションツール)   プロジェクト管理ツール
                    プロジェクト管理ツール
(継続的インテグレーションツール)

          アジャイル開発の環境構築
アジャイル開発ツール

                     ソース管理ツール
                     ソース管理ツール




      CIツール
       CIツール
(継続的インテグレーションツール)   プロジェクト管理ツール
                    プロジェクト管理ツール
(継続的インテグレーションツール)

          アジャイル開発の環境構築
ツール連携の仕組み

            コミット
            コミット




              自動ビルドを実行
              自動ビルドを実行
              (フック)
              (フック)         リポジトリを更新
                            リポジトリを更新
                            (フック)
                            (フック)




   成果物を配置
   成果物を配置


                   成果物を参照
                   成果物を参照



            アジャイル開発の環境構築
継続的インテグレーションツール
                             ディスク
                             使用量
                 メトリクス
                 収集


                             重複コード
                             検知

                テスト

                             メモリリー
                             ク


                 静的解析
                              Web仕様書
                              作成

コンパイル後に成果物をSSH経由で配置することも可能


              アジャイル開発の環境構築
プロジェクト管理ツール
               ソース管理ツール
               リポジトリ連携

    API仕様書閲覧




                 コードレビューも
                 ダイレクト




        アジャイル開発の環境構築
・Who are you?
・ソフトウェア開発プロセスとアジャイル
・アジャイル開発の開発環境
・最後に!



               Agenda
Toolで開発環境をインテグレート
                 SCM(ソースコード管理ツール)
                 ・CVS
                 ・Subversion
                 ・Git
                 ・Visual Source Safe
                 ・Mercurial

  継続的インテグレーションツール            プロジェクト管理ツール
  ・Jenkins                   ・Redmine
  ・buildbot                  ・Trac
  ・CruiseControl             ・Trac Litghing
  ・chkbuild                  ・XPlanner
                             ・Aglio
                             ・IcsScrum
 テスティングフレームワーク 静的解析ツール       ・Agilefant
       動的解析ツール
カバレッジツール     メトリクス集計ツール
        DRYツール




                                              Tools
NO!

ご清聴ありがとうございました

Ldd13 present