ワンクリックデプロ゗ 101


http://bit.ly/vHXFbO
吉羽龍太郎
ゕジャ゗ルコーチ
http://www.ryuzee.com/
ワンクリックデプロイ101 #ocdeploy
Special Thanks




  @katzchang      @tomohn
 凄腕プログラマー      凄腕エバンジェリスト
え?マジでマジで?
会場調査
• 全員起立してください
• ユニットテストを書いていない方は着席
• 結合テストを自動化していない方は着席
• 継続的インテグレーションサーバを使っていな
  い方は着席
• デプロイを自動化していない方は着席
• 環境構築を自動化していない方は着席

    最後まで起立されている方は
      帰って大丈夫ですw
一日にしてならず




http://bit.ly/vPmiFJ
No
                       Silver
                       Bullet
http://bit.ly/vj0b0v
http://bit.ly/sygcE9


自分たちのプロセス
は自分たちで進化さ
せるしかない!
1.ビジネスをとりまく
環境の変化
IT投資は業務効率化
から戦略実現へ
以前の競争




http://bit.ly/rioQDZ
現在の競争




 競争の速度の変化
迅速な
                       意思決定
                       が必要


http://bit.ly/pccwAN
意思決定をもとに
素早く
具現化する必要    http://bit.ly/r1ziWL
ビジネスモデルの賞味期限が短縮
変化への対応


“事前に綿密”
 にたてた計画を
“長期間遵守”
 して大丈夫なのか?
変化への対応


“変化が起こる”
 ことを前提に
“頻繁に軌道修正”
 することが必要
http://bit.ly/oX9ImQ
変化に対応できなければ
マーケットから
見捨てられる
価値がなくなれば滅びる




http://bit.ly/qJg8EX
継続的な
   イノベーション
   の創発
http://bit.ly/nLACes
“イノベーションは「知」の創造プロセ
スであり、知の創造は単に理論だけでは
なく、実践を通して知識を磨き、知恵に
するものである”

“企業の優れた業績は研究開発投資の増
加に要因があるのではなく、組織の
イノベーション・プロセスの質による”

野中郁次郎氏の発言要旨
http://www.slideshare.net/InnovationSprint2011/2011-6794551
プロセス    プロダクト
イノベーション イノベーション




http://bit.ly/qpjFXr   http://bit.ly/ornfUo
マインド
イノベーション   http://bit.ly/nrDcZf
コンウェ゗の法則

 “Organizations which design
 systems are constrained to
 produce designs which are
 copies of the communication
 structures of these
 organizations.”

http://bit.ly/oIUrUI
2.継続的デリバリ
毎日何回も本番環境にデプロイで
きているか?

顧客に頻繁に価値を届けられてい
るか?
ワンクリックでデプロイできたと
しても、リリースの意思決定に時
間がかかったら無意味!



             http://bit.ly/rZyM3H
経営
    Lean        者
企業活動自体の全体最適化




  Scrum
                マ
               ネー
価値あるものから継続的に   ジャ
   製品を届ける



    XP         チー
  技術面を高める       ム
企業での価値創造

                   継続的デリバリ
Adaptability /




                                               継続的
                                              デプロ゗
Agility




                             継続的
                          ゗ンテグレーション


                 繰り返し型の
                   開発


                           Strategic Impact
継続的デリバリとは何か?

“継続的デリバリとはリリースのスケジュー
ルをIT部門が握るのではなく、ビジネス部門が
握るということだ。継続的デリバリを実装する
ということは、全体のライフサイクルを通じて
常にソフトウェアが本番環境にリリース可能で
あるということを意味する。すなわちどのビル
ドもボタン一発で、完全に自動化されたリリー
スプロセスを通じて、秒とか分の時間で利用者
にリリース可能である、ということだ。”

                 Jez Humble
継続的デリバリ
              http://bit.ly/tFrqbz




ユーザーとプロジェクトチームの間に
固いフィードバックループを作る
継続的デリバリ
                    http://bit.ly/uLQaml




継続的なフィードバックプロセスは、
競争優位性やムダの削減につながる
継続的デリバリの8原則

    ソフトウェアのリ
    リースやデプロイ
    のプロセスは繰り
    返し可能であり信
    頼性が高い必要が
    ある。
継続的デリバリの8原則




     全てを自動化
     する
継続的デリバリの8原則


    難解なことや苦
    痛なことを繰り
    返し行い自動化
    の方法を考える
継続的デリバリの8原則



    全てをソース
    コード管理シス
    テムで管理する
継続的デリバリの8原則



    完了は「リリー
    スされたこと」
    を意味する
継続的デリバリの8原則




    品質を作りこむ
継続的デリバリの8原則


    すべての人にリ
    リースプロセス
    に対しての責任
    がある
継続的デリバリの8原則




    継続的に改善
    する
継続的デリバリの4プラクテゖス

バイナリは一度だけビルドする
すべての環境にデプロイするのに
 完全に同一のメカニズムを使う
デプロイメントでスモークテスト
 を実施する
何か問題が起こったらラインを止
 める
ど
                         の
                       再断
                       現面
                       可で
                       能も
                       か
                       ?
http://bit.ly/uVQu5I
リリースした際に、前のバージョンに即座
に戻せるか?これはコードだけでなくデー
タベース等も含む




http://bit.ly/tgbmyr
ワンクリックデプロイ101 #ocdeploy
Convention
   Over
Configuration
Scrumとの関連性


• 多くの大規模組織は、ソフトウェアのデプロイ
  メントメソッドが貧弱であり、それ故にソフト
  ウェアを世に送り出すことが困難な状況にある。

• Scrumは妨害事項リスト等を使うことで、妨害事
  項を明らかはできるが、Scrum自体ではそれを解
  決できず、Scrumそれ自体はどのようにそれを解
  決するかの指針も持ち合わせていない
Doneの定義

何ができたら
完了なのかを
決める
Doneの定義
• チームとして定めた「出荷可能な製品」を作成
  するために実施しなければいけないことの一覧。
• 例えば、コードを書く、ユニットテストする、
  統合テストをする、リリースノートを書く
• ストーリーでのDoneの定義、スプリント単位
  でのDoneの定義、リリース単位でのDoneの
  定義をすることを推奨。
• Doneの定義はチームの成熟度や時間に
  よって変わっていくが、Doneの定義
  なくしてのScrumはあり得ない。
3.バージョン管理
ソースコードのバージョン管理
• いわずもがな。全ての起点はここにある

• コードの共同所有の原則への理解

• このソースコードは本番環境または開発環境な
  どで同じように動作しなければならない

• テストを書く習慣、コミット前に他のテストも
  含めて通してからコミットする習慣
設定フゔ゗ルのバージョン管理
• 環境によって異なる設定値(接続先データベー
  ス情報など)が書かれた設定ファイルもバー
  ジョン管理する

• 開発環境用、ステージング環境用、本番環境用
  などに分けて定義し、容易に切り替え可能にす
  る

• 本番環境に配置する際に、アプリケーションの
  各所を書き換えなければ動作しないという状況
  は避ける
バージョン管理は
開発者のしつけ




           http://bit.ly/utD8aA
4.テスト自動化
けデもテ
                       なプのス
                       いロをト
                        イ目し
                        しをて
                        て瞑い
                        はっな
                        いてい
http://bit.ly/rAOG9h
清水の舞台から
    飛び降りない




http://bit.ly/tnB8i0
http://bit.ly/shZMnK




デプロイするたびに人手
で全体をテストするのは
無理
ITアーキテクト「機能テストの自動化について考える」
より引用
http://www.itarchitect.jp/print/?menu3=24601




テスト自動化の損益分岐点
は相当早期にある感覚
ゕジャ゗ルでの品質の作りこみ
Scrumの場合
                     24時間




                     スプリント
                     2~4週間
  スプリントゴール

      返品
              スプリント
                             出荷可能な製品の
  Return
  キャンセル       バックログ            積み上げ
  Gift wrap
   クーポン
  Cancel
  ギフト包装       クーポン     単体テスト、結合テスト、
                       受け入れテストがスプリン
プロダクトバックログ             ト単位(もしくはリリース単
                          位)で行われる.
ゕジャ゗ルでの品質の作りこみ




スプリント終了時には「テスト」が完了.スプリントレ
ビューで顧客のビジネス要件への適合性も確認できる
http://www.flickr.com/photos/kakutani/2761992149/
ゕジャ゗ルでの品質の作りこみ
Scrumではフレームワークの定義のみで、テスト自
動化については触れられていない.しかしゕジャ゗ル
開発においてはテスト自動化は必須




                   小規模リリースのたびに
                   手動でテストするとスプ
                   リント後半になるにつれ
                   てテストコストが膨らむ

自動化しないとソフトウェア規模に応じて、テスト工数の占め
る割合が増加していく(=価値への投資が減少)
テストの4象限
                  ビジネス面(ビジネス的品質)
       【自動と手動】           【手動】※1
       機能テスト             探索的テスト
       ストーリーテスト          シナリオテスト
       プロトタイプ            ユーザビリティテスト
       シミュレーション          ユーザー受入テスト
                         アルファ版、ベータ版
   チ                                      製
   ー              第2象限             第3象限   品
   ム                                      を
   を   【自動化】             【ツール】            批
   支                                      評
   援   単体テスト             パフォーマンステスト
       コンポーネントテスト        負荷テスト
                         セキュリティテスト



                  第1象限             第4象限
                   技術面(技術的品質)

※1 ATDD等では自動化
テストの4象限
 第1象限        チームを支援する技術面のテスト
 テスト駆動開発などアジャイル開発の中心。


 第2象限        チームを支援するビジネス面のテスト
 顧客の視点からのハイレベルの機能テストなど。


 第3象限        製品を批評するビジネス面のテスト
 ユーザー受入テスト、探索的テストなど。


 第4象限        技術面のテストを使った製品の批評
 パフォーマンステスト、セキュリティテストなど。

「アジャイルテスト ―高品質を追求するアジャイルチームにおけるテストの視点―」増田聡氏
http://codezine.jp/devsumi/2010/report/07/ より引用
自動化されたテストの要件
自動化されたテストは以下の条件を満たしている必要がある。

繰り返し可能 (Repeatable)
何回でも繰り返し実行できること。また実行ごとに結果が変わらないこと

独立性 (Independent)
環境や外部のコンポーネントに依存しないこと
テストケースの実行順序に依存しないこと

自己検証 (Self validation)
テストが成功したか、失敗したかはプログラムが判断する。
(人手で判断しない)

簡単実行 (Easy)
テストの準備に大量の時間や人手がかかるようにしない
ツール・手法のマッピング(例)
                ビジネス面(ビジネス的品質)
     【自動と手動】            【手動】
     機能テスト              探索的テスト
             Selenium
     ストーリーテスト           シナリオテスト
            Cucumber
     プロトタイプ             ユーザビリティテスト
              Rspec
     シミュレーション           ユーザー受入テスト
            FitNess …
                        アルファ版、ベータ版
 チ                                        製
 ー     CI推奨     第2象限     一部CI可能    第3象限   品
 ム                                        を
 を   【自動化】              【ツール】             批
 支                                        評
 援   単体テスト              パフォーマンステスト
                              Jmeter
     コンポーネントテスト
            TDD         負荷テスト
                            WebScarab
            xUnit       セキュリティテスト
                             RatProxy
         PMD, CPD …
                            ValGrind …

       CI必須     第1象限      CI推奨     第4象限
                  技術面(技術的品質)
テスト自動化の進め方
プロダクトバックログ




                      レガシーコードにおい
              スプリント   て、製品コードの開発
              バックログ
                      をとめて自動化のみへ
                      投資するのは現実的に
                      難しいので、投資割合
テスト自動化バックログ




                      をきめて、予めバック
                      ログに組み込むことが
                         望ましい
問題修正にかかる時間

フェーズ            修正までの時間

要求や設計             5分

コードやユニットテスト       15分

結合テストやシステムテスト     1時間

ベータテスト            2時間

リリース後             1日
5.継続的
インテグレーション
継続的インテグ
                       レーションの導入
                       と利用促進の7ス
                       テップ




http://bit.ly/soiCFy
http://bit.ly/rVAW90




ビルドサーバを
用意する
夜間ビルドを
行う




         http://bit.ly/rubXiA
夜間ビルド+
                       コミット時の
                       ユニットテスト



http://bit.ly/s3W9aF
メトリクスの取得




http://bit.ly/rYN42H
テストに対する信
                       頼性と依存性の確
                       立



http://bit.ly/rOloeO
自動化された受け
                       入れテスト+デプ
                       ロイ自動化



http://bit.ly/sP6BvN
継続的なデプロイ




http://bit.ly/uc3x59
CIサーバの構築
• プロジェクト初期の段階でコードがなくても構
  築する
• コードのメトリクスや静的解析は初期から継続
  的に実施する方が効果がある
• 常にグリーン(Jenkinsなら青)の状態を保ち、エ
  ラーがある状態に慣れない
• 常にグリーンに保つにはアトミックな単位での
  作業、マイグレーションとの連携、チームのコ
  ミットに対する態度が欠かせない
Jenkinsでの例
CIゕンチパターン
•   頻繁にSCMにコミットしない
•   テストコードを書かない
•   テストコードと製品コードを同時にコミットしない
•   定時ビルドのみでコミットビルドがない・夜間ビルドしかない
•   帰り際にコミットしてそのままCIの結果を見ずに帰る
•   CIでテストを通すために手作業の準備が必要
•   メインラインのみで大きなブランチをCI対象にしていない
•   様々な種類のテストをまとめて行っている
•   ビルドの失敗に気付かない
•   ビルドに失敗しても放置している
CIゕンチパターン
• ビルドの失敗に気づいても、修正コード以外のコードをコミットす
  る
• 何も変更していないのにビルドが落ちたり落ちなかったりする
• 頻繁にビルドが失敗しているので、失敗するのが普通だと思う
• CIからの通知メッセージが大量すぎる
• CIが落ちても何も通知しない
• CIサーバのリソースが貧弱
• ビルドが肥大化して結果が出るまでに時間がかかる
• 本番環境やステージング環境と大幅に環境が異なる
• コードの静的解析をCIで行わずに人手で行う
• CIサーバがおかしくなったときに直せる人がいない
• ずっとCIでのチェック内容が変わらない、プロセスが変わらない
第1象限での自動評価
プロジェクトの特性や要員構成等に応じて決める
テスト件数と結果(単体、結合)   PMD警告件数




Checkstyle警告件数    カバレージ
チーム活動の評価
コード行数     コミット時間




ゕクテゖビテゖ
6.マイグレーションの利用
DBスキーマのバージョン管理




データベースのスキーマの状態とリリース
の状態を関連付けることによって再現可能
にする
既存のゕプローチの問題
                              http://bit.ly/vbtqZc




   sqlスクリプトフゔ゗ルは管理が煩雑
   sqlスクリプトは自動実行に向かない
   ロールバックやデータ移行の考慮もしづらい
   複数のsqlスクリプトの実行順序の制御が難しい
問題の例
 SQLの実行順序によって状態が変わってしまう
1.sql                   1→2の順に実行すると….
alter table users add
column lastlogin
datetime after name;

2.sql
alter table users add
column disabled
                        2→1の順に実行すると….
boolean default false
after name;
マ゗グレーション(PHPの場合)
データベースの変更管理
$ ls -1
                                         前後関係は、フゔ゗ル
1301223401_addchangelogs.php
1313445291_addinformation.php            先頭の数字の大小で判
1317489252_addpriorities.php               断される。
1318776293_addprojects.php                  (規約)
1318889397_addremainingtimes.php
1320243212_addresolutions.php
1321049290_addsprints.php
1321509396_addschemamigrations.php
1322392147_fix_project_invalid_default_value.php
1322446269_add_action_name_to_log.php
1322993218_addstories.php
1323001299_addstorycomments.php
1323449303_addusers.php
1324059101_addtasks.php
1325101301_addteammembers.php
1326548301_addteams.php
1327491204_addwiki.php
マ゗グレーションの状態
mysql>
mysql>
mysql>
mysql>
mysql> select * from migration_version;
+---------+
| version |                 現在30個目のマ゗グレー
+---------+                 ションフゔ゗ルまで登録
|      30 |                   済であることを指す
+---------+
1 row in set (0.08 sec)

mysql>
mysql>
マ゗グレーション実行
   コマンド1つで最新のバージョンに更新したり、
     特定のバージョンに戻すことができる


# 最新のバージョンへ更新
$ php doctrine_cli.php migrate

# 指定したバージョンへ更新
$ php doctrine_cli.php migrate 29

マ゗グレーションフゔ゗ルをソースコードとしてバージョ
ン管理し、CIのビルド定義の中にマ゗グレーションコマン
 ドを組み込むことで、自動的にDBの状態を連動させる
オープンソースのマ
イグレーションツー
ルは色々ある!
7.環境構築自動化
なぜ環境構築の自動化が必要?

そもそも時間がかかる
数が増えれば単純作業の繰り返し
人手による単純作業はミスを誘発
ミスした場合でも検知する仕掛けが本番障
 害しかない
手順書がメンテナンスされないことがある
手順書の手順の妥当性の評価が難しい
手順の逆転により状態が変わりうる
ミドルや設定゗ンストールの自動化

        いつでも
        クリーンな
        動作環境を作れ
        るようにする


http://bit.ly/vMHRjL
ミドルや設定゗ンストールの自動化

                       この自動化に
                       よって後はア
                       プリケーショ
                       ンをデプロイ
                       すればすぐ動
                       作する状態に
                       する
http://bit.ly/v30Zl7
ミドルや設定゗ンストールの自動化




           http://bit.ly/ttwsmT




 本番環境と開発環境の各種
 バージョンをあわせる
ミドルや設定゗ンストールの自動化



ミドルウェアのバージョ
ンをあげる場合も、この
自動化機構を使って行う
仮想化と自動化(Vagrant)
Vagrantの゗ンストールと起動

$ sudo gem install vagrant
$ sudo vagrant box add lucid32
http://files.vagrantup.com/lucid32.box
$ sudo vagrant init
$ sudo vagrant up


わずか4ステップで、仮想イン
スタンスが起動する!!
Vagrantフゔ゗ルでの設定

        Vagrantファイルで、ベース
        ボックス名やVirtualBoxの
        GUI表示の有無、インスタン
        ス名、メモリ容量、自動実行
        するChefのRecipeなどを指
        定できる
Vagrantのプラグ゗ンでの拡張
 SaharaによるSandbox機能の導入

$ sudo git clone https://github.com/jedi4ever/sahara.git
$ cd sahara
$ sudo rake build
$ cd pkg
$ sudo gem install ./sahara-0.0.7.gem


Sandbox機能を使うことで、ミドルウェアの
バージョンアップの検証や、構成の変更の検
証を気軽に行えるようになる。
Sandboxモード
 ■sandboxモードに入る(仮想マシンを再起動しても有効)
 sudo vagrant sandbox on

 ■sandboxを開始時点にロールバックする
 sudo vagrant sandbox rollback

 ■sandboxモードの終了(commitしていないものは消える)
 sudo vagrant sandbox off

 ■sandboxの内容を恒久的に反映
 sudo vagrant sandbox commit

 ■現在sandboxモードかどうかを確認する
 sudo vagrant sandbox status
Chef/Chef-solo
Chefとは?
 • Ruby製のシステム管理ツール
 • 出来ること
  –   OSのパッケージのインストールや管理
  –   OSの設定やミドルウェアの設定
  –   サービスの起動・停止
  –   クーロンの設定
 • 特徴
  –   Rubyでジョブや設定を記述する
  –   Chef自体はクライアント/サーバモデル
  –   Chef-soloを使えばローカル単体で動作
  –   Recipeが多数公開されている
バージョンを指定し
てパッケージをイン
ストールすることも
可能
Cookbook (37signals)
Cookbook(opscode)
その他の選択肢としてPuppet等
8.デプロイ自動化
http://bit.ly/vd1Nin




プロジェクト最初に、
(デプロイするものが
なくても)デプロイを
   自動化する
http://bit.ly/u27Oiz




                       プロジェクトのあ
                       いだ、ずっとデプ
                       ロイスクリプトを
                       使うことで、プロ
                       セスがテストされ
                       続ける

                       開発環境・本番環
                       境問わず、同じ方
                       法でデプロイする
デプロイが失敗した場
                       合にロールバックでき
                       るようにする




http://bit.ly/vFzaU9
デプロイが途中で失敗
                       した場合、その先を手
                       動でやらない
http://bit.ly/w34bFM
Capistrano




Railsゕプリのデプロ゗に利用されることが多いが、もちろんそ
れ以外にも利用可能。SSHで接続し、サーバに対して色々な操作
を行うことが出来る。
ワンクリックデプロイ101 #ocdeploy
capコマンド
cap   deploy                 #   Deploys your project.
cap   deploy:check           #   Test deployment dependencies.
cap   deploy:cleanup         #   Clean up old releases.
cap   deploy:pending         #   Displays the commits since your last deploy.
cap   deploy:pending:diff    #   Displays the `diff' since your last deploy.
cap   deploy:rollback        #   Rolls back to a previous version and restarts.
cap   deploy:rollback:code   #   Rolls back to the previously deployed version.
cap   deploy:setup           #   Prepares one or more servers for deployment.
cap   deploy:symlink         #   Updates the symlink to the most recently deployed ...
cap   deploy:update          #   Copies your project and updates the symlink.
cap   deploy:update_code     #   Copies your project to the remote servers.
cap   deploy:upload          #   Copy files to the currently deployed version.
cap   deploy:web:disable     #   Present a maintenance page to visitors.
cap   deploy:web:enable      #   Makes the application web-accessible again.
cap   develop                #   Set the target stage to `develop'.
cap   invoke                 #   Invoke a single command on the remote servers.
cap   multistage:prepare     #   Stub out the staging config files.
cap   production             #   Set the target stage to `production'.
cap   shell                  #   Begin an interactive Capistrano session.
Webistrano
9.テクニック
ビルド(デプロ゗)パ゗プラ゗ン
ビルド(デプロ゗)パ゗プラ゗ン
• SCMへのコミットをトリガーにする
• 開発者のリズムを維持するために、最初にユ
  ニットテストや一部のスモークテストを行い素
  早く開発者にフィードバックする
• 時間のかかる結合テストや受け入れテストは、
  前工程が正常だった場合のみに行う
• これによってムダな時間を使わないようにする
• ユーザビリティテストや探索的テストのうち自
  動化できないものもプロセスとしてはパイプラ
  イン上に定義
• 最後にデプロイできれば、デプロイパイプライ
  ン
10.デモ
デモ
• Vagrant+Chef-soloによる環境構築
• Doctrineによる簡単マイグレーション
• Capistrano・Webisitanoによるワンクリックデ
  プロイ
• Jenkins + Capistranoによるデプロイメントパ
  イプライン

More Related Content

PDF
デブサミ2014【13-E-3】クラウド時代の環境構築・デプロイ自動化戦略
PDF
ワンクリックデプロイ 〜いつまで手でデプロイしてるんですか〜 #devsumiA
PDF
地図を捨ててコンパスを頼りに進め
PPTX
ゲームテストへの新しいアプローチ
PPTX
ウォーターフォールとアジャイル開発の比較 
PDF
20141116 jjug ccc_2014_keynote1_public
PDF
夏サミ 2012 [B-2]エンタープライズ開発におけるコラボレーション - JIRAによる顧客と開発チームのつなぎ方
PDF
渋谷java−あなたのプロジェクトで気軽にjavaをバージョンアップするために必要なこと
デブサミ2014【13-E-3】クラウド時代の環境構築・デプロイ自動化戦略
ワンクリックデプロイ 〜いつまで手でデプロイしてるんですか〜 #devsumiA
地図を捨ててコンパスを頼りに進め
ゲームテストへの新しいアプローチ
ウォーターフォールとアジャイル開発の比較 
20141116 jjug ccc_2014_keynote1_public
夏サミ 2012 [B-2]エンタープライズ開発におけるコラボレーション - JIRAによる顧客と開発チームのつなぎ方
渋谷java−あなたのプロジェクトで気軽にjavaをバージョンアップするために必要なこと

What's hot (20)

PDF
なぜアジャイルなのですか?改めて考察するウォーターフォールとの違い
PDF
テストファースト、自動テストを導入するという事について(@社内勉強会)
PDF
イノベーションスプリント2011 infragisticsにおける世界分散アジャイル開発事例~ communication matters ~
PPT
はじめてのアジャイル
PDF
JJUG CCC 2014 fall 「私がTDD出来ないのはどう考えてもお前らが悪い!」~エンタープライズJava開発でのTDD適用の勘所~
PDF
Dev love kansai
PPTX
僕らのおれおれメトリクス / We Metrics Our Own Way!
PPTX
「チーム開発実践入門」勉強会
PDF
ポストJenkins時代のCI戦略
PPTX
メトリクスによる「見える化」のススメ: エッセンシャル・リーン
PDF
Javaでやってみる The Twelve Factor App JJUG-CCC 2014 Fall 講演資料
PDF
"Ordinary" System Development
PDF
[devsumi2013]【15-D-7】実演!現場の悩みをTOCfEで考え抜く!
PDF
ギルドワークスの現場コーチ
PDF
チーム開発をスムーズにするために何ができるか
PDF
Scrum,Test,Metrics #sgt2016
PDF
Agile Japan 2010 「変化を受け入れるアジャイルなプロジェクトマネジメントと現場 <ツール・環境篇>」
PDF
チケット駆動で プロジェクトチームを加速せよ! (2014年5月14日/ソフトウェア開発環境展)
PDF
TDDを実践してわかったTDDつまづくあるあると自分なりの乗り越え方まとめ
なぜアジャイルなのですか?改めて考察するウォーターフォールとの違い
テストファースト、自動テストを導入するという事について(@社内勉強会)
イノベーションスプリント2011 infragisticsにおける世界分散アジャイル開発事例~ communication matters ~
はじめてのアジャイル
JJUG CCC 2014 fall 「私がTDD出来ないのはどう考えてもお前らが悪い!」~エンタープライズJava開発でのTDD適用の勘所~
Dev love kansai
僕らのおれおれメトリクス / We Metrics Our Own Way!
「チーム開発実践入門」勉強会
ポストJenkins時代のCI戦略
メトリクスによる「見える化」のススメ: エッセンシャル・リーン
Javaでやってみる The Twelve Factor App JJUG-CCC 2014 Fall 講演資料
"Ordinary" System Development
[devsumi2013]【15-D-7】実演!現場の悩みをTOCfEで考え抜く!
ギルドワークスの現場コーチ
チーム開発をスムーズにするために何ができるか
Scrum,Test,Metrics #sgt2016
Agile Japan 2010 「変化を受け入れるアジャイルなプロジェクトマネジメントと現場 <ツール・環境篇>」
チケット駆動で プロジェクトチームを加速せよ! (2014年5月14日/ソフトウェア開発環境展)
TDDを実践してわかったTDDつまづくあるあると自分なりの乗り越え方まとめ
Ad

Viewers also liked (19)

PDF
見込客を集めるWebサイトの作り方
DOC
La Robótica
PDF
Devlove1210 wackiesrock
PPT
最新版Devlove hangerflight
PDF
Devlove1210
PPTX
A crash course in responsive design
PDF
AgileJapan2010 基調講演:野中郁次郎先生による「実践知のリーダシップ~スクラムと知の場作り」
PDF
リーンソフトウェア開発とは
PPTX
CQRS recipes or how to cook your architecture
PDF
스프링보다 중요한 스프링 이야기
PPTX
英語勉強法の法則
PPTX
俺の「機能横断的チーム」に近づくためのあれこれ
PPTX
リアルタイムサーバー 〜Erlang/OTPで作るPubSubサーバー〜
PDF
Figuras retoricas en publicidad
PPTX
Technology-Driven Development: Using Automation and Development Techniques to...
PPTX
#FIRMday Manchester 9th March 2017: WilsonHCG 'Employment Branding Evolution ...
PPTX
How to write a Developer CV/Résumé that will get you hired
PPT
El volumen: Paso de 2D a 3D
PDF
アジャイルな開発は『かんばん』でいこう!
見込客を集めるWebサイトの作り方
La Robótica
Devlove1210 wackiesrock
最新版Devlove hangerflight
Devlove1210
A crash course in responsive design
AgileJapan2010 基調講演:野中郁次郎先生による「実践知のリーダシップ~スクラムと知の場作り」
リーンソフトウェア開発とは
CQRS recipes or how to cook your architecture
스프링보다 중요한 스프링 이야기
英語勉強法の法則
俺の「機能横断的チーム」に近づくためのあれこれ
リアルタイムサーバー 〜Erlang/OTPで作るPubSubサーバー〜
Figuras retoricas en publicidad
Technology-Driven Development: Using Automation and Development Techniques to...
#FIRMday Manchester 9th March 2017: WilsonHCG 'Employment Branding Evolution ...
How to write a Developer CV/Résumé that will get you hired
El volumen: Paso de 2D a 3D
アジャイルな開発は『かんばん』でいこう!
Ad

Similar to ワンクリックデプロイ101 #ocdeploy (20)

PDF
ぼくのかんがえた iOSテスト戦略
PDF
Team Foundation Server ~ 今を生きるエンジニアのための開発基盤とは 【BPStudy #63】
PDF
SGT2013 技術トークス「アジャイルテスティング」
KEY
JUnit実践入門 xUnitTestPatternsで学ぶユニットテスト
PDF
アジャイル×テスト開発を考える
PDF
Jenkins ユーザ・カンファレンス 2012 東京 S406-4/マルチステージ型継続的インテグレーションのすすめ
PDF
PDF
Gui自動テストツール基本
PDF
継続的デリバリー読書会 第 5 章 デプロイメントパイプラインの解剖学
PPTX
Continuous delivery chapter4
PPT
ビジネス的に高価値なアジャイルテスト
PDF
継続的デリバリー読書会 第 7 章 コミットステージ
PDF
「継続的デリバリー」読書会 第3章 継続的デリバリー
PDF
Agile japan2010 rakuten様プレゼン資料
KEY
テストとの上手な付き合い方
PDF
【JaSST'14 Tokyo】システムテストの自動化による 大規模分散検索プラットフォームの 開発工程改善 #JaSST
PPTX
【SQiP2014】システム操作インターフェイス最適化によるテスト自動化ROI向上
PDF
市場動向並びに弊社製品の今後の展望について
PPTX
BDD Frameworkで回帰テストの自動実行を実現する方法
PPTX
JaSST'16 Tokyo モバイルセッション
ぼくのかんがえた iOSテスト戦略
Team Foundation Server ~ 今を生きるエンジニアのための開発基盤とは 【BPStudy #63】
SGT2013 技術トークス「アジャイルテスティング」
JUnit実践入門 xUnitTestPatternsで学ぶユニットテスト
アジャイル×テスト開発を考える
Jenkins ユーザ・カンファレンス 2012 東京 S406-4/マルチステージ型継続的インテグレーションのすすめ
Gui自動テストツール基本
継続的デリバリー読書会 第 5 章 デプロイメントパイプラインの解剖学
Continuous delivery chapter4
ビジネス的に高価値なアジャイルテスト
継続的デリバリー読書会 第 7 章 コミットステージ
「継続的デリバリー」読書会 第3章 継続的デリバリー
Agile japan2010 rakuten様プレゼン資料
テストとの上手な付き合い方
【JaSST'14 Tokyo】システムテストの自動化による 大規模分散検索プラットフォームの 開発工程改善 #JaSST
【SQiP2014】システム操作インターフェイス最適化によるテスト自動化ROI向上
市場動向並びに弊社製品の今後の展望について
BDD Frameworkで回帰テストの自動実行を実現する方法
JaSST'16 Tokyo モバイルセッション

Recently uploaded (12)

PPTX
生成AIとモデルベース開発:実はとても相性が良いことを説明します。まあそうだろうなと思われる方はご覧ください。
PDF
Yamaha DT200WR Real Enduro ENGINE CYLINDER TRANSMISSION
PDF
Working as an OSS Developer at Ruby Association Activity Report 2025
PDF
ココロ分解帳|感情をやさしく分解し自分と他者を理解するためのモバイルノートアプリ
PDF
20250826_Devinで切り拓く沖縄ITの未来_AI駆動開発勉強会 沖縄支部 第2回
PPTX
Cosense - 整えずして完全勝利!Cosenseが他のwikiツールと違う理由
PDF
20250823_IoTLT_vol126_kitazaki_v1___.pdf
PDF
R-SCoRe: Revisiting Scene Coordinate Regression for Robust Large-Scale Visual...
PDF
翔泳社 「C++ ゼロからはじめるプログラミング」対応 C++学習教材(三谷純)
PDF
Geminiの出力崩壊 本レポートは、Googleの大規模言語モデル「Gemini 2.5」が、特定の画像と短文入力に対して、誤った地名を推定し、最終的に...
PPTX
Vibe Codingを触って感じた現実について.pptx .
生成AIとモデルベース開発:実はとても相性が良いことを説明します。まあそうだろうなと思われる方はご覧ください。
Yamaha DT200WR Real Enduro ENGINE CYLINDER TRANSMISSION
Working as an OSS Developer at Ruby Association Activity Report 2025
ココロ分解帳|感情をやさしく分解し自分と他者を理解するためのモバイルノートアプリ
20250826_Devinで切り拓く沖縄ITの未来_AI駆動開発勉強会 沖縄支部 第2回
Cosense - 整えずして完全勝利!Cosenseが他のwikiツールと違う理由
20250823_IoTLT_vol126_kitazaki_v1___.pdf
R-SCoRe: Revisiting Scene Coordinate Regression for Robust Large-Scale Visual...
翔泳社 「C++ ゼロからはじめるプログラミング」対応 C++学習教材(三谷純)
Geminiの出力崩壊 本レポートは、Googleの大規模言語モデル「Gemini 2.5」が、特定の画像と短文入力に対して、誤った地名を推定し、最終的に...
Vibe Codingを触って感じた現実について.pptx .

ワンクリックデプロイ101 #ocdeploy