SlideShare a Scribd company logo
1 of 62
Download to read offline
Copyright © 2014 NTT DATA CORPORATION 
Copyright © 2014 NTT DATA Corporation 
© Kevin Gill 2012, Earth -Global Elevation Model with Satellite Imagery, 
http://www.flickr.com/photos/kevinmgill/73A04043550, 
http://creativecommons.org/licenses/by-sa/2.0/deed.en 
2014/9/27 レガシーコード改善勉強会 
佐藤聖規 
レガシーコードを改善した先にあるもの、 
それは継続的インテグレーション
佐藤聖規 
Masanori Satoh 
@lino_s 
Copyright © 2014 NTT DATA CORPORATION
Copyright © 2014 NTT DATA CORPORATION 
Edit!
Copyright © 2014 NTT DATA CORPORATION 
Pray…
Copyright © 2014 NTT DATA CORPORATION 
Work!
Copyright © 2014 NTT DATA CORPORATION 
Oh My God!
Copyright © 2014 NTT DATA CORPORATION 
レガシーコード がなくなれば
Copyright © 2014 NTT DATA CORPORATION 
Cover and Modify
Copyright © 2014 NTT DATA CORPORATION 
みんなHappy!
Copyright © 2014 NTT DATA CORPORATION 
次なる道は?
Copyright © 2014 NTT DATA CORPORATION 
継続的 インテグレー ション
Copyright © 2014 NTT DATA CORPORATION 
略称 CIContinuous Integration
Copyright © 2014 NTT DATA CORPORATION 
皆さん、 こんなこと ありませんか
Copyright © 2014 NTT DATA CORPORATION 
手作業でミスが多発 
別の環境だとビルドできない 
結合テストで修正地獄に 
リリース直前なのに動作しない
Copyright © 2014 NTT DATA CORPORATION 
そこで 継続的 インテグレーション
Copyright © 2014 NTT DATA CORPORATION 
継続的インテグレーションとは 
1日に何度もビルドを実行し、ソフトウェアをインテグレーションした時に 
発生する様々な問題を早期に発見し、フィードバックサイクルを 
短くして、ソフトウェアの品質と生産性を向上させる仕組み 
コンパイル 
テスト 
デプロイ 
インスペクション 
ビルド 
Cover
Copyright © 2014 NTT DATA CORPORATION 
メリット
Copyright © 2014 NTT DATA CORPORATION 
1. 手戻りの削減・品質の維持
Copyright © 2014 NTT DATA CORPORATION 
まとめてインテグレーション (ビッグバンテスト) 
Commit 
Commit 
Commit 
Commit 
Commit 
Test 
変更が 多すぎ て解析 不能 
Commit 
Commit 
Commit 
Commit
Copyright © 2014 NTT DATA CORPORATION 
継続的インテグレーション 
Commit 
Test 
Commit 
Test 
Commit 
Test 
Commit 
Test 
Commit 
Test 
NGだったら すぐ修正 
変更の数が少ないので、デグレードや 問題を早期発見・早期修正 
フィードバックサイクルを短く! 
NGだったら すぐ修正
Copyright © 2014 NTT DATA CORPORATION 
2. いつでも、だれでも、実行可 能なソフトウェアが作成できる
Copyright © 2014 NTT DATA CORPORATION 
ユーザには動くソフトウェアを常に提供して、信頼を 
開発者からは動かない不安を取り除き、自信を
Copyright © 2014 NTT DATA CORPORATION 
3. 機械にできることは機械に 
開発者は知的な作業に専念
Copyright © 2014 NTT DATA CORPORATION 
4. 機械による 
作業の正確さ・綿密さ 
あいまい性の排除
Copyright © 2014 NTT DATA CORPORATION 
5. 開発データを蓄積し 
レポート、分析することで 
継続的カイゼンができる
Copyright © 2014 NTT DATA CORPORATION 
継続的 インテグレーション 歴史
Copyright © 2014 NTT DATA CORPORATION 
2000年頃eXtreamProgramingのプ ラクティスの1つとして確立された 
http://www.martinfowler.com/articles/continuousIntegration.html
Copyright © 2014 NTT DATA CORPORATION 
継続的 インテグレーション の仕組み
Copyright © 2014 NTT DATA CORPORATION 
CIサーバ 
VCS(Git, SVN, etc…) 
ビルドサーバ 
テストサーバ 
etc… 
レポート 
開発者 
変更通知命令 
収集 
フィードバック
Copyright © 2014 NTT DATA CORPORATION 
継続的 インテグレーション Jenkinsで 
http://creativecommons.org/licenses/by-sa/3.0/
Copyright © 2014 NTT DATA CORPORATION 
1. インストールが簡単 
http://Jenkins-ci.org にアクセス
Copyright © 2014 NTT DATA CORPORATION 
1. インストールが簡単 
パッケージごとにインストール
Copyright © 2014 NTT DATA CORPORATION 
1. インストールが簡単 
http://localhost:8080 にアクセス
Copyright © 2014 NTT DATA CORPORATION 
1. インストールが簡単 
お試しで触ってみたいときは 
https://wiki.jenkins-ci.org/display/JENKINS/Meet+Jenkins 
のTest Drive をクリック 
クリック
Copyright © 2014 NTT DATA CORPORATION 
2. ブラウザで直感的操作 
設定もブラウザだけでできる 
困ったらをクリック
Copyright © 2014 NTT DATA CORPORATION 
2. ブラウザで直感的操作 
レポートもブラウザで
Copyright © 2014 NTT DATA CORPORATION 
ワークスペースまでブラウズ
Copyright © 2014 NTT DATA CORPORATION 
3. 分散ビルド対応 
マスタースレーブ構成で分散ビルド 
並列処理でスケールアウトしたり 
異なるOSのテストをしたり
Copyright © 2014 NTT DATA CORPORATION 
4. プラグインで好みの機能を追加 
言語や開発スタイルに合せて 
カスタマイズ。 
公式サイトにホストされてるだけで700+ 
好きなモノがなければ自前で作ることも
Copyright © 2014 NTT DATA CORPORATION 
5. オープンソース&コミュニティ 
OSS版とEnterprise版 
コミュニティ活動も活発 
Jenkins勉強会定期開催 
http://build-shokunin.org/ 
Join us!
Copyright © 2014 NTT DATA CORPORATION 
6. いろんな言語で使える 
コマンドラインでできることは 
何でもできる 
レポートも一工夫で幸せになれる
Copyright © 2014 NTT DATA CORPORATION 
Jenkins 名前の由来 
http://creativecommons.org/licenses/by-sa/3.0/
Copyright © 2014 NTT DATA CORPORATION 
執事をイメージした名前です。 
以前のHudsonも執事をイメージしたも のです。 
プロジェクトに優秀な執事がいるように と想いが込められています。
Copyright © 2014 NTT DATA CORPORATION 
Jenkins以外の 選択肢
Copyright © 2014 NTT DATA CORPORATION 
•Team Foundation Server/マイクロソフト 
–http://www.microsoft.com/ja- jp/dev/products/team-foundation- server.aspx 
•Bamboo/アトラシアン 
–https://www.atlassian.com/ja/software/ bamboo 
•Travis CI 
–https://travis-ci.org/ 
•Circle CI 
–https://circleci.com/
Copyright © 2014 NTT DATA CORPORATION 
CIで何を やるか
Copyright © 2014 NTT DATA CORPORATION 
コンパイル 
コンパイルが通らないものは絶対に動かない 
コンパイルがない言語だとできない… 
Ant, Maven, Gradle, make, MS Build
Copyright © 2014 NTT DATA CORPORATION 
ユニットテスト 
Junit, TestNG, CUnit, CPPUnit, 
RSPec, Unittest, pyUnit, QUnit, Jasmine
Copyright © 2014 NTT DATA CORPORATION 
ワンポイント 
結果はJUnit互換のXML に変換するときれいにレ ポートできる 
プラグインがあるものもある
Copyright © 2014 NTT DATA CORPORATION 
ユニットテストは 取り入れるのが 難しい
Copyright © 2014 NTT DATA CORPORATION 
レガシーコードを 改善した皆さんは 怖いものなし
Copyright © 2014 NTT DATA CORPORATION 
カバレッジ 
Cobertura, Emma, gcov, rcov, coverage.py, JSCoverage
Copyright © 2014 NTT DATA CORPORATION 
インスペクション(静的解析) 
CheckStyle, Findbugs, PMD, CPD, RuboCop, PyLint, Coverity
Copyright © 2014 NTT DATA CORPORATION 
ワンポイント 
結果がHTMLのものは HTML PublisherPluginを使うとシームレス に見れます。
Copyright © 2014 NTT DATA CORPORATION 
デプロイ/インフラ構築 
Rest API, Vagrant, Docker, Puppet, Chef, Fabric, Capistrano, SSH, WSH 
capistrano
Copyright © 2014 NTT DATA CORPORATION 
インテグレーションテスト 
Selenium, Saucelabs, Geb, Appium, GUI自 動テストツールなど 
capistrano
Copyright © 2014 NTT DATA CORPORATION
Copyright © 2014 NTT DATA CORPORATION 
CIはプラクティス ツールを入れて終わりで はなく、日々コミットして サイクルを回す習慣を
Copyright © 2014 NTT DATA CORPORATION 
皆さんの新しい道を 
作ってください
Copyright © 2014 NTT DATA CORPORATION 
参考 
レガシーコード改善ガイド 
翔泳社 
2009/7/14 
ISBN-10: 4798116831 
マイケル・C・フェザーズ(Michael C.Feathers)著 
平澤章訳 
越智典子訳 
稲葉信之訳 
田村友彦訳 
小堀真義訳 
ウルシステムズ株式会社監訳
Copyright © 2014 NTT DATA CORPORATION 
参考 
継続的インテグレーション入門 
日経BP社 
2009/8/6 
ISBN-10: 482228395X 
ポール・M・デュバル(Paul M. Duvall) 
スティーブ・M・マティアス 
アンドリュー・グローバー著 
大塚庸史訳 
丸山大輔訳 
岡本裕二訳 
亀村圭助訳 
ウルシステムズ株式会社
Copyright © 2011 NTT DATA Corporation 
Copyright © 2014 NTT DATA Corporation 
記載されている会社名、商品名、又はサービス名は、各社の商標又は登録商標です。

More Related Content

What's hot

OpenJDKは使い物になるか?OpenJDKの実際と今後 (NTTデータ オープンソースDAY 2015 Autumn 講演資料)
OpenJDKは使い物になるか?OpenJDKの実際と今後 (NTTデータ オープンソースDAY 2015 Autumn 講演資料)OpenJDKは使い物になるか?OpenJDKの実際と今後 (NTTデータ オープンソースDAY 2015 Autumn 講演資料)
OpenJDKは使い物になるか?OpenJDKの実際と今後 (NTTデータ オープンソースDAY 2015 Autumn 講演資料)NTT DATA OSS Professional Services
 
OpenSTFを ECSに乗せてみた話
OpenSTFを ECSに乗せてみた話OpenSTFを ECSに乗せてみた話
OpenSTFを ECSに乗せてみた話司 知花
 
STFとAppiumをもちいたAndroidアプリの自動テスト
STFとAppiumをもちいたAndroidアプリの自動テストSTFとAppiumをもちいたAndroidアプリの自動テスト
STFとAppiumをもちいたAndroidアプリの自動テストToshiyuki Hirata
 
iOSにおけるコードレビューを一歩先へ進める
iOSにおけるコードレビューを一歩先へ進めるiOSにおけるコードレビューを一歩先へ進める
iOSにおけるコードレビューを一歩先へ進めるShunsuke Maeda
 
マルチテナントECシステムにおける拡張性と最新性の両立
マルチテナントECシステムにおける拡張性と最新性の両立マルチテナントECシステムにおける拡張性と最新性の両立
マルチテナントECシステムにおける拡張性と最新性の両立水野 謙
 
バージョンアップの対応を軽減するためのサービスの構築
バージョンアップの対応を軽減するためのサービスの構築バージョンアップの対応を軽減するためのサービスの構築
バージョンアップの対応を軽減するためのサービスの構築Toshiyuki Hirata
 
Dangerでpull requestレビューの指摘事項を減らす
Dangerでpull requestレビューの指摘事項を減らすDangerでpull requestレビューの指摘事項を減らす
Dangerでpull requestレビューの指摘事項を減らすShunsuke Maeda
 
DebugHeadを使ったiOSアプリ開発手法 #denatechcon
DebugHeadを使ったiOSアプリ開発手法 #denatechconDebugHeadを使ったiOSアプリ開発手法 #denatechcon
DebugHeadを使ったiOSアプリ開発手法 #denatechconDeNA
 
Mobage/AndAppのSDK開発事例とSDKを作る際に知っておくべきこと #denatechcon
Mobage/AndAppのSDK開発事例とSDKを作る際に知っておくべきこと #denatechconMobage/AndAppのSDK開発事例とSDKを作る際に知っておくべきこと #denatechcon
Mobage/AndAppのSDK開発事例とSDKを作る際に知っておくべきこと #denatechconDeNA
 
「hbstudy#23 OpenStack祭!!」資料 ~OpenStackプロジェクトの全体像~
「hbstudy#23 OpenStack祭!!」資料 ~OpenStackプロジェクトの全体像~「hbstudy#23 OpenStack祭!!」資料 ~OpenStackプロジェクトの全体像~
「hbstudy#23 OpenStack祭!!」資料 ~OpenStackプロジェクトの全体像~Masanori Itoh
 
red-hat-forum-2017-openshift-baremetal-deployment
red-hat-forum-2017-openshift-baremetal-deploymentred-hat-forum-2017-openshift-baremetal-deployment
red-hat-forum-2017-openshift-baremetal-deploymentTetsuya Sodo
 
「AWSを活用して少人数で複数のサービスを運用するコツ」〜jawsug in nagoya〜
「AWSを活用して少人数で複数のサービスを運用するコツ」〜jawsug in nagoya〜「AWSを活用して少人数で複数のサービスを運用するコツ」〜jawsug in nagoya〜
「AWSを活用して少人数で複数のサービスを運用するコツ」〜jawsug in nagoya〜Teruo Adachi
 
Java on Kubernetes on Azure
Java on Kubernetes on AzureJava on Kubernetes on Azure
Java on Kubernetes on AzureYoshio Terada
 
JJUG初心者のためのJava/JJUG講座
JJUG初心者のためのJava/JJUG講座JJUG初心者のためのJava/JJUG講座
JJUG初心者のためのJava/JJUG講座Yusuke Suzuki
 
CEDEC2015_スマホゲーム開発を支えろ!〜汗と涙のQAエンジニアリング〜
CEDEC2015_スマホゲーム開発を支えろ!〜汗と涙のQAエンジニアリング〜CEDEC2015_スマホゲーム開発を支えろ!〜汗と涙のQAエンジニアリング〜
CEDEC2015_スマホゲーム開発を支えろ!〜汗と涙のQAエンジニアリング〜gree_tech
 
DeNA private cloudのその後 #denatechcon
DeNA private cloudのその後 #denatechconDeNA private cloudのその後 #denatechcon
DeNA private cloudのその後 #denatechconDeNA
 

What's hot (20)

OpenJDKは使い物になるか?OpenJDKの実際と今後 (NTTデータ オープンソースDAY 2015 Autumn 講演資料)
OpenJDKは使い物になるか?OpenJDKの実際と今後 (NTTデータ オープンソースDAY 2015 Autumn 講演資料)OpenJDKは使い物になるか?OpenJDKの実際と今後 (NTTデータ オープンソースDAY 2015 Autumn 講演資料)
OpenJDKは使い物になるか?OpenJDKの実際と今後 (NTTデータ オープンソースDAY 2015 Autumn 講演資料)
 
OpenSTFを ECSに乗せてみた話
OpenSTFを ECSに乗せてみた話OpenSTFを ECSに乗せてみた話
OpenSTFを ECSに乗せてみた話
 
OpenStack入門 2016/06/27
OpenStack入門 2016/06/27OpenStack入門 2016/06/27
OpenStack入門 2016/06/27
 
STFとAppiumをもちいたAndroidアプリの自動テスト
STFとAppiumをもちいたAndroidアプリの自動テストSTFとAppiumをもちいたAndroidアプリの自動テスト
STFとAppiumをもちいたAndroidアプリの自動テスト
 
iOSにおけるコードレビューを一歩先へ進める
iOSにおけるコードレビューを一歩先へ進めるiOSにおけるコードレビューを一歩先へ進める
iOSにおけるコードレビューを一歩先へ進める
 
DroidKaigi_devicefarm
DroidKaigi_devicefarmDroidKaigi_devicefarm
DroidKaigi_devicefarm
 
マルチテナントECシステムにおける拡張性と最新性の両立
マルチテナントECシステムにおける拡張性と最新性の両立マルチテナントECシステムにおける拡張性と最新性の両立
マルチテナントECシステムにおける拡張性と最新性の両立
 
VM 基盤運用チームの DevOps
VM 基盤運用チームの DevOpsVM 基盤運用チームの DevOps
VM 基盤運用チームの DevOps
 
バージョンアップの対応を軽減するためのサービスの構築
バージョンアップの対応を軽減するためのサービスの構築バージョンアップの対応を軽減するためのサービスの構築
バージョンアップの対応を軽減するためのサービスの構築
 
Dangerでpull requestレビューの指摘事項を減らす
Dangerでpull requestレビューの指摘事項を減らすDangerでpull requestレビューの指摘事項を減らす
Dangerでpull requestレビューの指摘事項を減らす
 
DebugHeadを使ったiOSアプリ開発手法 #denatechcon
DebugHeadを使ったiOSアプリ開発手法 #denatechconDebugHeadを使ったiOSアプリ開発手法 #denatechcon
DebugHeadを使ったiOSアプリ開発手法 #denatechcon
 
Mobage/AndAppのSDK開発事例とSDKを作る際に知っておくべきこと #denatechcon
Mobage/AndAppのSDK開発事例とSDKを作る際に知っておくべきこと #denatechconMobage/AndAppのSDK開発事例とSDKを作る際に知っておくべきこと #denatechcon
Mobage/AndAppのSDK開発事例とSDKを作る際に知っておくべきこと #denatechcon
 
「hbstudy#23 OpenStack祭!!」資料 ~OpenStackプロジェクトの全体像~
「hbstudy#23 OpenStack祭!!」資料 ~OpenStackプロジェクトの全体像~「hbstudy#23 OpenStack祭!!」資料 ~OpenStackプロジェクトの全体像~
「hbstudy#23 OpenStack祭!!」資料 ~OpenStackプロジェクトの全体像~
 
red-hat-forum-2017-openshift-baremetal-deployment
red-hat-forum-2017-openshift-baremetal-deploymentred-hat-forum-2017-openshift-baremetal-deployment
red-hat-forum-2017-openshift-baremetal-deployment
 
「AWSを活用して少人数で複数のサービスを運用するコツ」〜jawsug in nagoya〜
「AWSを活用して少人数で複数のサービスを運用するコツ」〜jawsug in nagoya〜「AWSを活用して少人数で複数のサービスを運用するコツ」〜jawsug in nagoya〜
「AWSを活用して少人数で複数のサービスを運用するコツ」〜jawsug in nagoya〜
 
クラウド上のシステム監視 入門編
クラウド上のシステム監視 入門編クラウド上のシステム監視 入門編
クラウド上のシステム監視 入門編
 
Java on Kubernetes on Azure
Java on Kubernetes on AzureJava on Kubernetes on Azure
Java on Kubernetes on Azure
 
JJUG初心者のためのJava/JJUG講座
JJUG初心者のためのJava/JJUG講座JJUG初心者のためのJava/JJUG講座
JJUG初心者のためのJava/JJUG講座
 
CEDEC2015_スマホゲーム開発を支えろ!〜汗と涙のQAエンジニアリング〜
CEDEC2015_スマホゲーム開発を支えろ!〜汗と涙のQAエンジニアリング〜CEDEC2015_スマホゲーム開発を支えろ!〜汗と涙のQAエンジニアリング〜
CEDEC2015_スマホゲーム開発を支えろ!〜汗と涙のQAエンジニアリング〜
 
DeNA private cloudのその後 #denatechcon
DeNA private cloudのその後 #denatechconDeNA private cloudのその後 #denatechcon
DeNA private cloudのその後 #denatechcon
 

Similar to レガシーコードを改善した先にあるもの、それは継続的インテグレーション

自前でcloud foundryを構築してgooのビッグサービスをカットオーバーした話
自前でcloud foundryを構築してgooのビッグサービスをカットオーバーした話自前でcloud foundryを構築してgooのビッグサービスをカットオーバーした話
自前でcloud foundryを構築してgooのビッグサービスをカットオーバーした話和也 大木
 
【HinemosWorld2014】B1-3_Hinemos運用管理のすゝめ 監視編
【HinemosWorld2014】B1-3_Hinemos運用管理のすゝめ 監視編【HinemosWorld2014】B1-3_Hinemos運用管理のすゝめ 監視編
【HinemosWorld2014】B1-3_Hinemos運用管理のすゝめ 監視編Hinemos
 
AITCクラウド部会 2014年度 これまでの振り返りとこれから
AITCクラウド部会 2014年度 これまでの振り返りとこれからAITCクラウド部会 2014年度 これまでの振り返りとこれから
AITCクラウド部会 2014年度 これまでの振り返りとこれからYasuyuki Sugai
 
AITCオープンラボ: Pepper x IoT x Web
AITCオープンラボ: Pepper x IoT x WebAITCオープンラボ: Pepper x IoT x Web
AITCオープンラボ: Pepper x IoT x Webdsuke Takaoka
 
Automation with SoftLayer and Zabbix
Automation with SoftLayer and ZabbixAutomation with SoftLayer and Zabbix
Automation with SoftLayer and Zabbixsoftlayerjp
 
SDI時代のシステムインテグレーション~CloudConductorの紹介~
SDI時代のシステムインテグレーション~CloudConductorの紹介~SDI時代のシステムインテグレーション~CloudConductorの紹介~
SDI時代のシステムインテグレーション~CloudConductorの紹介~cloudconductor
 
Nttドコモ事例から見るモバイル&クラウド時代のサービス開発についてr4(public)
Nttドコモ事例から見るモバイル&クラウド時代のサービス開発についてr4(public)Nttドコモ事例から見るモバイル&クラウド時代のサービス開発についてr4(public)
Nttドコモ事例から見るモバイル&クラウド時代のサービス開発についてr4(public)Osaka University
 
「ALMがもたらす新しいソフトウェア開発へのフェーズの変化とは?」TFSユーザーズ勉強会
「ALMがもたらす新しいソフトウェア開発へのフェーズの変化とは?」TFSユーザーズ勉強会「ALMがもたらす新しいソフトウェア開発へのフェーズの変化とは?」TFSユーザーズ勉強会
「ALMがもたらす新しいソフトウェア開発へのフェーズの変化とは?」TFSユーザーズ勉強会shibao800
 
Aws summits2014 nttデータaws上のシステムはこう作る!
Aws summits2014 nttデータaws上のシステムはこう作る!Aws summits2014 nttデータaws上のシステムはこう作る!
Aws summits2014 nttデータaws上のシステムはこう作る!Boss4434
 
HTML5 Night 2014 Web x Network Technology ( WebRTC )
HTML5 Night 2014 Web x Network Technology ( WebRTC )HTML5 Night 2014 Web x Network Technology ( WebRTC )
HTML5 Night 2014 Web x Network Technology ( WebRTC )Kensaku Komatsu
 
"Up" with vagrant and docker
"Up" with vagrant and docker"Up" with vagrant and docker
"Up" with vagrant and dockerHiroshi Miura
 
fastlane x iOSアプリのCI
fastlane x iOSアプリのCIfastlane x iOSアプリのCI
fastlane x iOSアプリのCIToshiyuki Hirata
 
SoftLayer バックアップ Idera編 + Endurance Storage編
SoftLayer バックアップ  Idera編 + Endurance Storage編SoftLayer バックアップ  Idera編 + Endurance Storage編
SoftLayer バックアップ Idera編 + Endurance Storage編Hideaki Tokida
 
2014-04-22 Ques #4 Automation Testing of Mobage Platform
2014-04-22 Ques #4 Automation Testing of Mobage Platform2014-04-22 Ques #4 Automation Testing of Mobage Platform
2014-04-22 Ques #4 Automation Testing of Mobage PlatformMasaki Nakagawa
 
Developer Summit_20140214
Developer Summit_20140214Developer Summit_20140214
Developer Summit_20140214samemoon
 
ビッグデータによる社会イノベーションの実現(公開版)
 ビッグデータによる社会イノベーションの実現(公開版) ビッグデータによる社会イノベーションの実現(公開版)
ビッグデータによる社会イノベーションの実現(公開版)Osaka University
 

Similar to レガシーコードを改善した先にあるもの、それは継続的インテグレーション (20)

自前でcloud foundryを構築してgooのビッグサービスをカットオーバーした話
自前でcloud foundryを構築してgooのビッグサービスをカットオーバーした話自前でcloud foundryを構築してgooのビッグサービスをカットオーバーした話
自前でcloud foundryを構築してgooのビッグサービスをカットオーバーした話
 
【HinemosWorld2014】B1-3_Hinemos運用管理のすゝめ 監視編
【HinemosWorld2014】B1-3_Hinemos運用管理のすゝめ 監視編【HinemosWorld2014】B1-3_Hinemos運用管理のすゝめ 監視編
【HinemosWorld2014】B1-3_Hinemos運用管理のすゝめ 監視編
 
AITCクラウド部会 2014年度 これまでの振り返りとこれから
AITCクラウド部会 2014年度 これまでの振り返りとこれからAITCクラウド部会 2014年度 これまでの振り返りとこれから
AITCクラウド部会 2014年度 これまでの振り返りとこれから
 
AITCオープンラボ: Pepper x IoT x Web
AITCオープンラボ: Pepper x IoT x WebAITCオープンラボ: Pepper x IoT x Web
AITCオープンラボ: Pepper x IoT x Web
 
Automation with SoftLayer and Zabbix
Automation with SoftLayer and ZabbixAutomation with SoftLayer and Zabbix
Automation with SoftLayer and Zabbix
 
July techfesta2014 f30
July techfesta2014 f30July techfesta2014 f30
July techfesta2014 f30
 
SDI時代のシステムインテグレーション~CloudConductorの紹介~
SDI時代のシステムインテグレーション~CloudConductorの紹介~SDI時代のシステムインテグレーション~CloudConductorの紹介~
SDI時代のシステムインテグレーション~CloudConductorの紹介~
 
Nttドコモ事例から見るモバイル&クラウド時代のサービス開発についてr4(public)
Nttドコモ事例から見るモバイル&クラウド時代のサービス開発についてr4(public)Nttドコモ事例から見るモバイル&クラウド時代のサービス開発についてr4(public)
Nttドコモ事例から見るモバイル&クラウド時代のサービス開発についてr4(public)
 
「ALMがもたらす新しいソフトウェア開発へのフェーズの変化とは?」TFSユーザーズ勉強会
「ALMがもたらす新しいソフトウェア開発へのフェーズの変化とは?」TFSユーザーズ勉強会「ALMがもたらす新しいソフトウェア開発へのフェーズの変化とは?」TFSユーザーズ勉強会
「ALMがもたらす新しいソフトウェア開発へのフェーズの変化とは?」TFSユーザーズ勉強会
 
Jaws-warrantee
Jaws-warranteeJaws-warrantee
Jaws-warrantee
 
Aws summits2014 nttデータaws上のシステムはこう作る!
Aws summits2014 nttデータaws上のシステムはこう作る!Aws summits2014 nttデータaws上のシステムはこう作る!
Aws summits2014 nttデータaws上のシステムはこう作る!
 
03 pepper io_t_web
03 pepper io_t_web03 pepper io_t_web
03 pepper io_t_web
 
HTML5 Night 2014 Web x Network Technology ( WebRTC )
HTML5 Night 2014 Web x Network Technology ( WebRTC )HTML5 Night 2014 Web x Network Technology ( WebRTC )
HTML5 Night 2014 Web x Network Technology ( WebRTC )
 
"Up" with vagrant and docker
"Up" with vagrant and docker"Up" with vagrant and docker
"Up" with vagrant and docker
 
fastlane x iOSアプリのCI
fastlane x iOSアプリのCIfastlane x iOSアプリのCI
fastlane x iOSアプリのCI
 
SoftLayer バックアップ Idera編 + Endurance Storage編
SoftLayer バックアップ  Idera編 + Endurance Storage編SoftLayer バックアップ  Idera編 + Endurance Storage編
SoftLayer バックアップ Idera編 + Endurance Storage編
 
2014-04-22 Ques #4 Automation Testing of Mobage Platform
2014-04-22 Ques #4 Automation Testing of Mobage Platform2014-04-22 Ques #4 Automation Testing of Mobage Platform
2014-04-22 Ques #4 Automation Testing of Mobage Platform
 
Developer Summit_20140214
Developer Summit_20140214Developer Summit_20140214
Developer Summit_20140214
 
ビッグデータによる社会イノベーションの実現(公開版)
 ビッグデータによる社会イノベーションの実現(公開版) ビッグデータによる社会イノベーションの実現(公開版)
ビッグデータによる社会イノベーションの実現(公開版)
 
NTT DATA と PostgreSQL が挑んだ総力戦
NTT DATA と PostgreSQL が挑んだ総力戦NTT DATA と PostgreSQL が挑んだ総力戦
NTT DATA と PostgreSQL が挑んだ総力戦
 

More from Masanori Satoh

Jenkins Bootcamp Premiumのご紹介 in デブサミ2016冬
Jenkins Bootcamp Premiumのご紹介 in デブサミ2016冬Jenkins Bootcamp Premiumのご紹介 in デブサミ2016冬
Jenkins Bootcamp Premiumのご紹介 in デブサミ2016冬Masanori Satoh
 
Jenkins実践入門 第二版 What's New
Jenkins実践入門 第二版 What's NewJenkins実践入門 第二版 What's New
Jenkins実践入門 第二版 What's NewMasanori Satoh
 
Javaユーザに贈るJenkins 25のTips
Javaユーザに贈るJenkins 25のTipsJavaユーザに贈るJenkins 25のTips
Javaユーザに贈るJenkins 25のTipsMasanori Satoh
 
Jenkinsで始める継続的デリバリーと実践の道程
Jenkinsで始める継続的デリバリーと実践の道程Jenkinsで始める継続的デリバリーと実践の道程
Jenkinsで始める継続的デリバリーと実践の道程Masanori Satoh
 
Jenkinsではじめる継続的インテグレーション
Jenkinsではじめる継続的インテグレーションJenkinsではじめる継続的インテグレーション
Jenkinsではじめる継続的インテグレーションMasanori Satoh
 
Jenkins実践入門目次チラ見せしちゃいます
Jenkins実践入門目次チラ見せしちゃいますJenkins実践入門目次チラ見せしちゃいます
Jenkins実践入門目次チラ見せしちゃいますMasanori Satoh
 

More from Masanori Satoh (8)

Jenkins Bootcamp Premiumのご紹介 in デブサミ2016冬
Jenkins Bootcamp Premiumのご紹介 in デブサミ2016冬Jenkins Bootcamp Premiumのご紹介 in デブサミ2016冬
Jenkins Bootcamp Premiumのご紹介 in デブサミ2016冬
 
Jenkins実践入門 第二版 What's New
Jenkins実践入門 第二版 What's NewJenkins実践入門 第二版 What's New
Jenkins実践入門 第二版 What's New
 
Javaユーザに贈るJenkins 25のTips
Javaユーザに贈るJenkins 25のTipsJavaユーザに贈るJenkins 25のTips
Javaユーザに贈るJenkins 25のTips
 
Jenkinsで始める継続的デリバリーと実践の道程
Jenkinsで始める継続的デリバリーと実践の道程Jenkinsで始める継続的デリバリーと実践の道程
Jenkinsで始める継続的デリバリーと実践の道程
 
Jenkinsではじめる継続的インテグレーション
Jenkinsではじめる継続的インテグレーションJenkinsではじめる継続的インテグレーション
Jenkinsではじめる継続的インテグレーション
 
Jenkins実践入門目次チラ見せしちゃいます
Jenkins実践入門目次チラ見せしちゃいますJenkins実践入門目次チラ見せしちゃいます
Jenkins実践入門目次チラ見せしちゃいます
 
Html5
Html5 Html5
Html5
 
Hinemos勉強会
Hinemos勉強会Hinemos勉強会
Hinemos勉強会
 

レガシーコードを改善した先にあるもの、それは継続的インテグレーション

  • 1. Copyright © 2014 NTT DATA CORPORATION Copyright © 2014 NTT DATA Corporation © Kevin Gill 2012, Earth -Global Elevation Model with Satellite Imagery, http://www.flickr.com/photos/kevinmgill/73A04043550, http://creativecommons.org/licenses/by-sa/2.0/deed.en 2014/9/27 レガシーコード改善勉強会 佐藤聖規 レガシーコードを改善した先にあるもの、 それは継続的インテグレーション
  • 2. 佐藤聖規 Masanori Satoh @lino_s Copyright © 2014 NTT DATA CORPORATION
  • 3. Copyright © 2014 NTT DATA CORPORATION Edit!
  • 4. Copyright © 2014 NTT DATA CORPORATION Pray…
  • 5. Copyright © 2014 NTT DATA CORPORATION Work!
  • 6. Copyright © 2014 NTT DATA CORPORATION Oh My God!
  • 7. Copyright © 2014 NTT DATA CORPORATION レガシーコード がなくなれば
  • 8. Copyright © 2014 NTT DATA CORPORATION Cover and Modify
  • 9. Copyright © 2014 NTT DATA CORPORATION みんなHappy!
  • 10. Copyright © 2014 NTT DATA CORPORATION 次なる道は?
  • 11. Copyright © 2014 NTT DATA CORPORATION 継続的 インテグレー ション
  • 12. Copyright © 2014 NTT DATA CORPORATION 略称 CIContinuous Integration
  • 13. Copyright © 2014 NTT DATA CORPORATION 皆さん、 こんなこと ありませんか
  • 14. Copyright © 2014 NTT DATA CORPORATION 手作業でミスが多発 別の環境だとビルドできない 結合テストで修正地獄に リリース直前なのに動作しない
  • 15. Copyright © 2014 NTT DATA CORPORATION そこで 継続的 インテグレーション
  • 16. Copyright © 2014 NTT DATA CORPORATION 継続的インテグレーションとは 1日に何度もビルドを実行し、ソフトウェアをインテグレーションした時に 発生する様々な問題を早期に発見し、フィードバックサイクルを 短くして、ソフトウェアの品質と生産性を向上させる仕組み コンパイル テスト デプロイ インスペクション ビルド Cover
  • 17. Copyright © 2014 NTT DATA CORPORATION メリット
  • 18. Copyright © 2014 NTT DATA CORPORATION 1. 手戻りの削減・品質の維持
  • 19. Copyright © 2014 NTT DATA CORPORATION まとめてインテグレーション (ビッグバンテスト) Commit Commit Commit Commit Commit Test 変更が 多すぎ て解析 不能 Commit Commit Commit Commit
  • 20. Copyright © 2014 NTT DATA CORPORATION 継続的インテグレーション Commit Test Commit Test Commit Test Commit Test Commit Test NGだったら すぐ修正 変更の数が少ないので、デグレードや 問題を早期発見・早期修正 フィードバックサイクルを短く! NGだったら すぐ修正
  • 21. Copyright © 2014 NTT DATA CORPORATION 2. いつでも、だれでも、実行可 能なソフトウェアが作成できる
  • 22. Copyright © 2014 NTT DATA CORPORATION ユーザには動くソフトウェアを常に提供して、信頼を 開発者からは動かない不安を取り除き、自信を
  • 23. Copyright © 2014 NTT DATA CORPORATION 3. 機械にできることは機械に 開発者は知的な作業に専念
  • 24. Copyright © 2014 NTT DATA CORPORATION 4. 機械による 作業の正確さ・綿密さ あいまい性の排除
  • 25. Copyright © 2014 NTT DATA CORPORATION 5. 開発データを蓄積し レポート、分析することで 継続的カイゼンができる
  • 26. Copyright © 2014 NTT DATA CORPORATION 継続的 インテグレーション 歴史
  • 27. Copyright © 2014 NTT DATA CORPORATION 2000年頃eXtreamProgramingのプ ラクティスの1つとして確立された http://www.martinfowler.com/articles/continuousIntegration.html
  • 28. Copyright © 2014 NTT DATA CORPORATION 継続的 インテグレーション の仕組み
  • 29. Copyright © 2014 NTT DATA CORPORATION CIサーバ VCS(Git, SVN, etc…) ビルドサーバ テストサーバ etc… レポート 開発者 変更通知命令 収集 フィードバック
  • 30. Copyright © 2014 NTT DATA CORPORATION 継続的 インテグレーション Jenkinsで http://creativecommons.org/licenses/by-sa/3.0/
  • 31. Copyright © 2014 NTT DATA CORPORATION 1. インストールが簡単 http://Jenkins-ci.org にアクセス
  • 32. Copyright © 2014 NTT DATA CORPORATION 1. インストールが簡単 パッケージごとにインストール
  • 33. Copyright © 2014 NTT DATA CORPORATION 1. インストールが簡単 http://localhost:8080 にアクセス
  • 34. Copyright © 2014 NTT DATA CORPORATION 1. インストールが簡単 お試しで触ってみたいときは https://wiki.jenkins-ci.org/display/JENKINS/Meet+Jenkins のTest Drive をクリック クリック
  • 35. Copyright © 2014 NTT DATA CORPORATION 2. ブラウザで直感的操作 設定もブラウザだけでできる 困ったらをクリック
  • 36. Copyright © 2014 NTT DATA CORPORATION 2. ブラウザで直感的操作 レポートもブラウザで
  • 37. Copyright © 2014 NTT DATA CORPORATION ワークスペースまでブラウズ
  • 38. Copyright © 2014 NTT DATA CORPORATION 3. 分散ビルド対応 マスタースレーブ構成で分散ビルド 並列処理でスケールアウトしたり 異なるOSのテストをしたり
  • 39. Copyright © 2014 NTT DATA CORPORATION 4. プラグインで好みの機能を追加 言語や開発スタイルに合せて カスタマイズ。 公式サイトにホストされてるだけで700+ 好きなモノがなければ自前で作ることも
  • 40. Copyright © 2014 NTT DATA CORPORATION 5. オープンソース&コミュニティ OSS版とEnterprise版 コミュニティ活動も活発 Jenkins勉強会定期開催 http://build-shokunin.org/ Join us!
  • 41. Copyright © 2014 NTT DATA CORPORATION 6. いろんな言語で使える コマンドラインでできることは 何でもできる レポートも一工夫で幸せになれる
  • 42. Copyright © 2014 NTT DATA CORPORATION Jenkins 名前の由来 http://creativecommons.org/licenses/by-sa/3.0/
  • 43. Copyright © 2014 NTT DATA CORPORATION 執事をイメージした名前です。 以前のHudsonも執事をイメージしたも のです。 プロジェクトに優秀な執事がいるように と想いが込められています。
  • 44. Copyright © 2014 NTT DATA CORPORATION Jenkins以外の 選択肢
  • 45. Copyright © 2014 NTT DATA CORPORATION •Team Foundation Server/マイクロソフト –http://www.microsoft.com/ja- jp/dev/products/team-foundation- server.aspx •Bamboo/アトラシアン –https://www.atlassian.com/ja/software/ bamboo •Travis CI –https://travis-ci.org/ •Circle CI –https://circleci.com/
  • 46. Copyright © 2014 NTT DATA CORPORATION CIで何を やるか
  • 47. Copyright © 2014 NTT DATA CORPORATION コンパイル コンパイルが通らないものは絶対に動かない コンパイルがない言語だとできない… Ant, Maven, Gradle, make, MS Build
  • 48. Copyright © 2014 NTT DATA CORPORATION ユニットテスト Junit, TestNG, CUnit, CPPUnit, RSPec, Unittest, pyUnit, QUnit, Jasmine
  • 49. Copyright © 2014 NTT DATA CORPORATION ワンポイント 結果はJUnit互換のXML に変換するときれいにレ ポートできる プラグインがあるものもある
  • 50. Copyright © 2014 NTT DATA CORPORATION ユニットテストは 取り入れるのが 難しい
  • 51. Copyright © 2014 NTT DATA CORPORATION レガシーコードを 改善した皆さんは 怖いものなし
  • 52. Copyright © 2014 NTT DATA CORPORATION カバレッジ Cobertura, Emma, gcov, rcov, coverage.py, JSCoverage
  • 53. Copyright © 2014 NTT DATA CORPORATION インスペクション(静的解析) CheckStyle, Findbugs, PMD, CPD, RuboCop, PyLint, Coverity
  • 54. Copyright © 2014 NTT DATA CORPORATION ワンポイント 結果がHTMLのものは HTML PublisherPluginを使うとシームレス に見れます。
  • 55. Copyright © 2014 NTT DATA CORPORATION デプロイ/インフラ構築 Rest API, Vagrant, Docker, Puppet, Chef, Fabric, Capistrano, SSH, WSH capistrano
  • 56. Copyright © 2014 NTT DATA CORPORATION インテグレーションテスト Selenium, Saucelabs, Geb, Appium, GUI自 動テストツールなど capistrano
  • 57. Copyright © 2014 NTT DATA CORPORATION
  • 58. Copyright © 2014 NTT DATA CORPORATION CIはプラクティス ツールを入れて終わりで はなく、日々コミットして サイクルを回す習慣を
  • 59. Copyright © 2014 NTT DATA CORPORATION 皆さんの新しい道を 作ってください
  • 60. Copyright © 2014 NTT DATA CORPORATION 参考 レガシーコード改善ガイド 翔泳社 2009/7/14 ISBN-10: 4798116831 マイケル・C・フェザーズ(Michael C.Feathers)著 平澤章訳 越智典子訳 稲葉信之訳 田村友彦訳 小堀真義訳 ウルシステムズ株式会社監訳
  • 61. Copyright © 2014 NTT DATA CORPORATION 参考 継続的インテグレーション入門 日経BP社 2009/8/6 ISBN-10: 482228395X ポール・M・デュバル(Paul M. Duvall) スティーブ・M・マティアス アンドリュー・グローバー著 大塚庸史訳 丸山大輔訳 岡本裕二訳 亀村圭助訳 ウルシステムズ株式会社
  • 62. Copyright © 2011 NTT DATA Corporation Copyright © 2014 NTT DATA Corporation 記載されている会社名、商品名、又はサービス名は、各社の商標又は登録商標です。