SlideShare a Scribd company logo
1 of 50
Download to read offline
東京オフィス(本社)
〒106-0041 東京都港区麻布台2-3-5 ノアビル3F
Tel. 03-5114-6171(代表)
ベトナム開発センター
15F Ladeco Building, No.266, Doi Can Street,
Ba Dinh District, Hanoi Vietnam
札幌オフィス
〒060-0001 北海道札幌市中央区北一条西3-3 敷島プラザビル4F
Tel. 011-206-1914
シリコンバレーオフィス
3350 Scott Blvd. #29 Santa Clara, CA 95054
受託開発で
テストファーストしたら
XXXを早期発見できて
ハイアジリティになったはなし
#jsug #sf_8C
2019年12月18日
寺島 秀樹
2Copyright © 2019 BTC Corporation All Rights Reserved.
このラーメンは美味しいか?
3Copyright © 2019 BTC Corporation All Rights Reserved.
迅速な意思決定と契約
• ITサービスがビジネスの中心
• 競合との差別化のため経営は意思決定の迅速化が求められる
• ITサービス開発におけるアジリティは意思決定に大きく影響
• 日本のソフトウェア産業における構造
– 請負契約 62.1%
– 準委任契約 27.6%
– 自社開発 10.3%
• ※「ユーザ企業ソフトウェアメトリクス調査2018」 P27 図表NE2-6-1-1 開発体制
より
請負契約・受託開発は意思決定に十分迅速?
4Copyright © 2019 BTC Corporation All Rights Reserved.
品質と納期の遅れ
• 全体の品質の評価
– 欠陥は少なく稼働後も安定 55.4%
– 欠陥の発生は想定内に収まり稼働後もほぼほぼ安定 32.1%
– 欠陥が多数発生し対応に追われた 7.1%
– 欠陥が多く発生し混乱が発生した 3.6%
– 欠陥が多く発生し大きな混乱が発生した 1.8%
• ※「ユーザ企業ソフトウェアメトリクス調査2018」 P32 図表NE3-1-1 全体の品質
評価 より
• 全体の納期の評価
– 計画より早く稼働 1.8%
– 計画通り稼働 76.4%
– 少し遅れたが大きな問題はなかった 14.5%
– 納期が大きく遅れ要員を多く投入した 1.8%
– 納期が大幅に遅れプロジェクトの見直しを余儀なくされた 5.5%
• ※「ユーザ企業ソフトウェアメトリクス調査2018」 P32 図表NE3-1-2 全体の納期
評価 より
87.5%が品質は安定。 21.8%に納期の遅れ
5Copyright © 2019 BTC Corporation All Rights Reserved.
会社概要
社名 株式会社ビッグツリーテクノロジー&コンサルティング
(BTC Corporation)
設立 2002年2月7日
所在地 〒106-0041 東京都港区麻布台2-3-5 ノアビル3階
代表取締役社長 杉山 健
社員数 264名(連結、2019年4月1日時点。内、ベトナムオフィス22名)
売上高 40億6900万円(2018年11月決算)
事業内容
システム開発およびコンサルティング
デジタルマーケティング領域におけるコンサルティングと制作
RPA・クラウドなど最新技術の提供サービス
6Copyright © 2019 BTC Corporation All Rights Reserved.
拠点
東京を中心に札幌・ベトナムに開発拠点を、シリコンバレーに研究拠点を有しております
7Copyright © 2019 BTC Corporation All Rights Reserved.
提供サービス
SI・デジタル・RPAを組み合わせ、デジタルトランスフォーメーション(DX)時代において、お客様のビジ
ネスを総合的に支援いたします
• お客様満足度の向上・売上向
上を目的とする「攻めのIT」では、
経営戦略に則したシステムを瞬
時に構築することが重要です
• BTCは、単に「システムを作る」の
ではなく、いかに課題を解決する
かに主眼を置き、変化に柔軟な
システムをスピーディに構築し、お
客様のビジネスを成功へ導きます
• 成長し続けるインターネット業界
の中で、デジタルマーケティング戦
略の立案・構築・最適化を行い
ます
• BTCでは、主にユーザー体験、テ
クノロジー活用、データ解析の3つ
の観点を中心に、ウェブサイト、
メール、ソーシャルメディア等、
様々なデジタルチャネルの最適化
を支援します
• RPAとは”Robotics Process
Automation”の略で、PC上で
行われるさまざまな事務処理をソ
フトウェアロボットに代行させること
で、ホワイトカラーのさまざまな業
務を自動化させる仕組みです
• BTCは企業のさらなる業務効率
向上を支援するために、RPAのイ
ンテグレーションをトータルでサポー
トします
SI事業 デジタル事業 RPA事業
デジタルマーケティング支援ITコンサルティング・システム開発 RPAコンサルティング
8Copyright © 2019 BTC Corporation All Rights Reserved.
Profile
• 株式会社ビッグツリーテクノロジ&コンサルティング
– DX事業部 シニアアーキテクト
• CSP-SM/CSP-PO
• Java/Spring/Groovy/Spock/Geb/Sitimi
• 酒/アニメ/ラーメン
• テスト駆動飲み会
– https://tddrinking.connpass.com/
寺島 秀樹 @terahide27
9Copyright © 2019 BTC Corporation All Rights Reserved.
今からする話
• Project A – 某機材製造メーカー
– 統計をもとにした予約サービス
– チーム構成:7人(うちベトナムと社内オフショア3人)
– Spring Bootを使ったAPIを製造
– Spring Bootを使ったWebサービス(前述のAPIをサーバ
サイドで使用)
• Project B – 某薬局チェーン
– 店舗統制サービス
– チーム構成:2人
– Spring Bootを使ったAPIを製造
– ReactによるSPA
ここ数年で行ったプロジェクト
• Project C – 某公共図書館
– 蔵書管理サービス
– チーム構成:7人
– Spring Bootを使ったAPIを製造
– C# .NET によるGUI
10Copyright © 2019 BTC Corporation All Rights Reserved.
早期発見
11Copyright © 2019 BTC Corporation All Rights Reserved.
いつ気が付く?
課題に気が付く
(遅すぎる)
12Copyright © 2019 BTC Corporation All Rights Reserved.
いつ気が付く?
Sequential Process
Iterative Process
課題に気が付く
(十分早い)
課題に気が付く
(遅すぎる)
13Copyright © 2019 BTC Corporation All Rights Reserved.
早期発見
14Copyright © 2019 BTC Corporation All Rights Reserved.
TDD - テスト駆動開発
1イテレーションの中で
課題に気が付く
(遅すぎる)
15Copyright © 2019 BTC Corporation All Rights Reserved.
TDD - Test Driven Development
• まずレッドになる(失敗する)自動テストを書く
• 一番早い方法でグリーンにする(成功させる)
• リファクタする
• 以上を繰り返えし目標に向かう
テスト駆動開発のサイクル
Red
Green
Refactor
16Copyright © 2019 BTC Corporation All Rights Reserved.
2つのサイクル
イテレーション
TDD
実装・設計における
テストファースト
17Copyright © 2019 BTC Corporation All Rights Reserved.
振舞駆動開発 - Behavior Driven Development(BDD)
• “振舞駆動開発とは、ソフトウェアの相互作用に着目し、ソフトウェアがどのように振る舞う(動作
する)かを定義することを起点とした開発手法”
– 「JUnit実践入門」より
• 振る舞いはシナリオで定義する。これをスペック(テスト仕様)と呼ぶ
• テストファーストであるかどうかより、スペックを自然言語で表現できるかを重要視する
テスト仕様の語彙
JUnit実践入門 ISBN978-4-7741-5377-3
従来の3A Pattern(Arrange/Action/Assert) BDD ( GWT:Given/When/Then )
//JUnit4 with Groovy
@Test
void ”電卓を起動して9+9を計算すると結果は18であるべき”(){
def sut = new Calc()
def actual = sut.add(9,9)
assert actual == 18
}
//Spock with Groovy
def ”単純な足し算のシナリオ”(){
given: ”電卓を起動”
def sut = new Calc()
when: ” 9+9を計算する”
def actual = sut.add(9,9)
then: ”結果は18であるべき”
actual == 18
}
18Copyright © 2019 BTC Corporation All Rights Reserved.
仕様の明確度と遅延の関係
• 要求仕様の明確度と後期遅延度(予定より早い+予定通
り)
– 非常に明確 76.2%
– かなり明確 77.8%
– ややあいまい 67.1%
– 非常にあいまい 55.8%
• ※「ユーザ企業ソフトウェアメトリクス調査2018」 P59 図表NE6-5-36
要求仕様の明確度と後期遅延度より
要求仕様が明確でないと遅延が大きくなる傾向
19Copyright © 2019 BTC Corporation All Rights Reserved.
仕様の明確度と満足度の関係
• 仕様明確度別のプロジェクト全体満足の割合
– ※「ユーザ企業ソフトウェアメトリクス調査2018」 P60 図表NE6-5-40 仕様明確度別のプロジェクト全
体満足の割合 より
仕様が明確でないとプロジェクト全体の満足度が下がる傾向
87.7
76.4
51.8
37.2
0
10
20
30
40
50
60
70
80
90
100
非常に明確 かなり明確 ややあいまい 非常にあいまい
20Copyright © 2019 BTC Corporation All Rights Reserved.
仕様はどこに書く?
ドキュメントに記載した場合
• 動くプログラムは修正されたが、ドキュメントは後回しにされたり、修正されなかったりする
• 結果、ドキュメントと実装が乖離していく
自動テストに記載した場合
• 自動テストに仕様を記載した場合、動くプログラムと同時に自動テストが修正され続ける
– 自動テストが陳腐化しないための心の強さは前提(CIでグリーンを保ち続けるなど)
• 現在動いているプログラムに対して、自動テストが成功することでその仕様が実装されていることが
検証できる
• 結果、記載された仕様と実装の乖離は少ない
よくある話: 実装とドキュメントの乖離
21Copyright © 2019 BTC Corporation All Rights Reserved.
早期発見
22Copyright © 2019 BTC Corporation All Rights Reserved.
2つのサイクル
ATDD
TDD・BDD
イテレーションにおける
テストファースト
実装・設計における
テストファースト
※ATDD: Acceptance Test Driven Development
23Copyright © 2019 BTC Corporation All Rights Reserved.
受入テスト駆動開発 - Acceptance Test Driven Development (ATDD)
• ATDDは受入テスト仕様を用いたBDD
• 受入テストレベルで行うテストのユーザがアプリケーション・サービスに行う操作をシナリオ化
• シナリオをBDDの語彙で自動テストに記載する
• イテレーションの計画時に受入テストの仕様を確認しイテレーションの中で自動化
受入テストのテストファースト
• トップページでキーワードで簡易検索を行うと一覧ページに遷移する
• 一覧ページでタイトルリンクをクリックすると、対象の書誌の書誌詳細画面に遷移する
• 書誌詳細ページで関連資料を表示をクリックすると関連資料が表示される
• さらに閉じるボタンをクリックすると関連資料が非表示になる
・・・
①イテレーション計画で
テスト仕様を確認
②イテレーション中に
BDDで自動化
24Copyright © 2019 BTC Corporation All Rights Reserved.
テストのピラミッド
「初めての自動テスト」より
初めての自動テスト ISBN978-4-87311-816-1
UI
統合
ユニット メソッドレベルの小さなテスト
複数の層を一つにつなげるテスト全般
アプリケーションをエンドユーザーが操作するのと
同じようにテストするスクリプト
サービス
25Copyright © 2019 BTC Corporation All Rights Reserved.
アプリケーションの構造
弊社の典型的なアプリケーションの構造
初めての自動テスト ISBN978-4-87311-816-1
A. Server Side Rendering
B. SPA + API
C. GUI + API
HTML
JSON/XML/etc.
JSON/XML/etc.
26Copyright © 2019 BTC Corporation All Rights Reserved.
アプリケーションの構造とテストのピラミッド
Auto Test Framework
※Sitimi は後述
ユニット 統合
UI
(E2E)
サーバ フロント サーバ フロント
A. Server Side
Rendering
Spock
(+ Spring Test)
-
Spock +
Spring Test
-
Geb
+ SpockB. SPA + API
- Cypress
C. GUI + API
- ー
Sitimi*
+ Spock
ATDDに取り組み始めたら、あまりやらなくなった
27Copyright © 2019 BTC Corporation All Rights Reserved.
アプリケーションの構造とテストのピラミッド
Auto Test Framework
※Sitimi は後述
ユニット 統合
UI
(E2E)
サーバ フロント サーバ フロント
A. Server Side
Rendering
Spock
(+ Spring Test)
-
Spock +
Spring Test
-
Geb
+ SpockB. SPA + API
- Cypress
C. GUI + API
- ー
Sitimi*
+ Spock
28Copyright © 2019 BTC Corporation All Rights Reserved.
皮下テスト(Subcutaneous Test)
• “皮下テストは、アプリケーションのUIのすぐ下で
動作するテストを意味します”
– martinFowler.comより (Google翻訳)
• Spring Boot でAPIを実装することが多い
• SpringTest(MockMVC)とSpockを使って
APIのテストを行っている
• テスト対象が「外部サービスを使う」などのスタブ
化は考えるが、サービスや永続化のレイヤをスタ
ブにすることはしないことが多い
• HTMLを返す場合は(皮下テストではないが)
このテストはほぼ書かない
Spock + Spring Test
@SpringBootTest
@Transactional
class ExampleSpec extends Specification{
MockMvc mockMvc
@Autowired
WebApplicationContext wac
def setup(){
mockMvc = webAppContextSetup(wac).build()
}
def "例を取得すると期待されるjsonであるべき"() {
def expected = '{"id":1,"name":"example"}'
when:
def json = mockMvc.perform(
MockMvcRequestBuilders
.get('/v1/api/example'))
.andExpect(status().isOk())
.andReturn().response.contentAsString
then:
json == expected
}
}
https://martinfowler.com/bliki/SubcutaneousTest.html
29Copyright © 2019 BTC Corporation All Rights Reserved.
アプリケーションの構造とテストのピラミッド
Auto Test Framework
※Sitimi は後述
ユニット 統合
UI
(E2E)
サーバ フロント サーバ フロント
A. Server Side
Rendering
Spock
(+ Spring Test)
-
Spock +
Spring Test
-
Geb
+ SpockB. SPA + API
- Cypress
C. GUI + API
- ー
Sitimi*
+ Spock
30Copyright © 2019 BTC Corporation All Rights Reserved.
Selenium と Cypress
Browser Automation & Stubbing Response
Browser
Seleniumはブラウザ上の操作の
自動化のソリューション
Browser
Cypressもブラウザ上の操作の
自動化のソリューション
ただしSeleniumに非依存
HTTP通信のスタビングが可能
HTTP
Request
Response
(Stubbing)
HTTP
Request Response
31Copyright © 2019 BTC Corporation All Rights Reserved.
アプリケーションの構造とテストのピラミッド
Auto Test Framework
※Sitimi は後述
ユニット 統合
UI
(E2E)
サーバ フロント サーバ フロント
A. Server Side
Rendering
Spock
(+ Spring Test)
-
Spock +
Spring Test
-
Geb
+ SpockB. SPA + API
- Cypress
C. GUI + API
- ー
Sitimi*
+ Spock
32Copyright © 2019 BTC Corporation All Rights Reserved.
Geb – Very Groovy Browser Automation
• WebDriverの機能、jQueryセレクタの便利さ、
Page Objectモデリングの堅牢さ、Groovyの
表現力を統合します(意訳)
• It brings together the power
of WebDriver, the elegance
of jQuery content selection, the
robustness of Page Object modelling
and the expressiveness of
the Groovy language.
Geb is a browser automation solution.
https://gebish.org/
import geb.Browser
Browser.drive {
go "http://myapp.com/login"
assert $("h1").text() == "Please Login"
$("form.login").with {
username = "admin"
password = "password"
login().click()
}
assert $("h1").text() == "Admin Section"
}
33Copyright © 2019 BTC Corporation All Rights Reserved.
Spock + Geb
• Spockは、Gebで使用するのに最適な革新的
なテストフレームワークです。 Spock + Gebを
使用すると、非常に明確かつ簡潔で、理解しや
すいテスト仕様をわずかな労力で提供できます。
(Google翻訳)
• Spock is an innovative testing
framework that is a great match for
using with Geb. Using Spock + Geb
gives you very clear, concise and easy
to understand test specifications with
very little effort.
Page Object modelling
import geb.Page
import geb.spock.GebSpec
class LoginSpec extends GebSpec {
def "login to admin section"() {
given:
to LoginPage
when:
loginForm.with {
username = "admin"
password = "password"
}
and:
loginButton.click()
then:
at AdminPage
}
}
https://gebish.org/
34Copyright © 2019 BTC Corporation All Rights Reserved.
アプリケーションの構造とテストのピラミッド
Auto Test Framework
※Sitimi は後述
ユニット 統合
UI
(E2E)
サーバ フロント サーバ フロント
A. Server Side
Rendering
Spock
(+ Spring Test)
-
Spock +
Spring Test
-
Geb
+ SpockB. SPA + API
- Cypress
C. GUI + API
- ー
Sitimi*
+ Spock
35Copyright © 2019 BTC Corporation All Rights Reserved.
Sitimi – Very Groovy is a GUI Automation
• SikuliXの機能、Page Objectモデリングの堅
牢さ、Groovyの表現力を統合します。そう、そ
れはGebのように!
• It brings together the power of SikuliX,
the robustness of Page
Object modelling and the
expressiveness of the Groovy
language. so. It's like Geb!
Sitimi is a Windows Automation Solution.
https://github.com/terahide/sitimi
import sitimi.spock.SitimiSpec
import sample.CalcWindow
class SimpleCalcSpec extends SitimiSpec{
def "a simple scenario"(){
given:
start Calc
expect:
shown CalcWindow
when:
add(9, 9)
then:
"result is" (18)
}
}
操作したい部分をキャプチャします。
src/test/imgs/9_button.png
Package sample
import sitimi.Window
class CalcWindow extends Window{
def add(i, j){
click "src/test/imgs/${i}_button.png"
click "src/test/imgs/plus_button.png"
click "src/test/imgs/${j}_button.png"
click "src/test/imgs/equal_button.png"
}
// snip
36Copyright © 2019 BTC Corporation All Rights Reserved.
スペックの相似 - Movable Specification
BDDの語彙で表せない部分はCompose Method(Page|Window Object)に隠蔽
import geb.Page
import geb.spock.GebSpec
class LoginSpec extends GebSpec {
def "login to admin section"() {
given: "ログインページを表示する"
to LoginPage
when: "ユーザ名とパスワードを入力する"
loginForm.with {
username = "admin"
password = "password"
}
and: "ログインする"
loginButton.click()
then: "管理者ページが表示されるべき"
at AdminPage
}
}
import sitimi.spock.SitimiSpec
import sample.CalcWindow
class SimpleCalcSpec extends SitimiSpec{
def "a simple scenario"(){
given: "電卓を起動する"
start Calc
expect: "電卓が表示されるべき"
shown CalcWindow
when: "9+9を計算する"
add(9, 9)
then: "結果は18であるべき"
"result is"(18)
}
}
Geb Sitimi
37Copyright © 2019 BTC Corporation All Rights Reserved.
Spock is a
Very Groovy
BDD Framework.
38Copyright © 2019 BTC Corporation All Rights Reserved.
ご参考: ある新人のはなし
自動テスト難しいです
• 初めてテストを書いたのでspecが何をしているかわからなかった。それを把握するのに苦労した
• でも日本語が多いので「うわぁ!英語しか書いてない!見たくない!」的なアレルギー反応は少なかった
SitimiというかSikuliX
• SikuliXは色の区別や似た文字の判別が難しいらしい
– アイデンティティのある箇所を探してスクリーンショットを取るのが難しい、というか面倒
– SikuliXが見分けられない画像は人間にもフレンドリーではないUIなのかもしれない
– SikuliXが識別できないものは似たようなボタンや画面が複数ある場合が多い?
• 時折何をしても動かないことがある、そして次の日には何事もなかったかのように動く。気まぐれなのかもしれない
Sitimi
• なにより書いていて楽しい!
• 簡単なコードですぐに動かせるので、達成感が得やすい
• 自分の書いたテストがアプリを動かすのを見ているのが面白い
• ゲーム感覚
世界“唯一”のSitimiのパワーユーザである、Aさんの感想
39Copyright © 2019 BTC Corporation All Rights Reserved.
ご参考: ある新人のはなし
• Aさん「なぜかテストが落ちるんです」
• 寺島「機械の方がだいたい人間より正確だから、あなたの書いたテストコードに問題があるので
は?」
• ー 数分悩み何かを修正 ー
• Aさん「直りました」
• 寺島「おっけー。じゃあ、全部動かしてみて」
• ー 数分後 ー
• Aさん「1件なぜか落ちました。単体で実行すると成功します。。。」
• 寺島「自動テストは、リピータブルで独立してないとダメよ」
日常の会話 その1
40Copyright © 2019 BTC Corporation All Rights Reserved.
ご参考: ある新人のはなし
• 寺島「このテスト文学的じゃない」
• Aさん(ぶ、文学?)
• 寺島「自動テストのスペックは読んだときに、文学作品のようにストーリーがないと」
• Aさん(何か言い出しおった。。。)
日常の会話 その2
41Copyright © 2019 BTC Corporation All Rights Reserved.
Continuous
42Copyright © 2019 BTC Corporation All Rights Reserved.
BTC Code Base
テスト管理
自動テスト
情報集約基盤
自動デプロイビルドコントロールソースコントロール
AWS CodeCommit(Git) AWS CodeDeployAWS CodeBuild
AWS Device Farm
開発者
開発環境
ソースコード
テストコード(JUnit)
テストコード(Selenium)
ビルドファイル(Gradle)
構成ファイル(Docker)
ClonePush
ビルド(Gradle)
単体テスト(Junit)
メトリクス取得(Sonarプラグイン)
AWS CodePipeline
継続的デリバリーとリリースの自動化
Amazon EC2
サービス提供基盤
デプロイスクリプト
サーバ
資材
デプロイ
モバイル
デバイス
資材
テスト実行
テストログ
プロジェクト
コード
機械学習・予測分析
AmazonMachine
Learning
テスト
ログ
コミットログ
BTC Code Base powered by
1 4 3
2
MicrosoftAzureフィード
バック
データ格納・分析(BI, DWH)
格納 格納
分析
AIによって進化し続けるDevOps基盤
43Copyright © 2019 BTC Corporation All Rights Reserved.
アプリケーションテンプレート on Spring Boot
「Spring Boot2徹底活用」 ISBN978-4-8026-1185-5
44Copyright © 2019 BTC Corporation All Rights Reserved.
BTC Code Base
• マージリクエスト
• チケット
• ドキュメント
• コミット
• ビルド/デプロイ
• テスト
• コメント
• 時間帯別/曜日別/作業者別
• etc.
開発の営みの可視化
ふりかえりでマージリクエストの大きさに注目
マージ数を5倍にする取り組みを行う
次のイテレーションで消化したポイントが6倍に!
45Copyright © 2019 BTC Corporation All Rights Reserved.
早期発見
繰り返しのプロセスとテストファースト
BTC Code Base
アプリケーションテンプレート
イテレーション
ATDD ふりかえり
CI・CD
TDD・BDD
・・・
46Copyright © 2019 BTC Corporation All Rights Reserved.
取り組みがもたらしたもの
• 仕様の可視化・タスクの可視化・実績の可視化
• 予実などの予測がしやすくなった
• トラブルが起きても収束が早くなった
• コマンドコントロールが減ってきた
• プロジェクトの運営が円滑に
私は、
• 仕事が増えた
• 今年度が始まった時は1チームだったのが、現在5チームに所属
• 間接的に関わるチームも増えてきた
47Copyright © 2019 BTC Corporation All Rights Reserved.
「私」がこれから取り組んでいきたいこと
• テストの並列化
• CCPM
• お客様が行う受入テストのATDD
• テストの削減(テストしない品質保証)
48Copyright © 2019 BTC Corporation All Rights Reserved.
よくある質問
• YesでありNoです
– 自動テストは社内のほとんどのプロジェクトで実行しています
• JUnit
• Spock
• Geb
• Cypress
• Sitimi
• etc.
– BTC Code Baseはまだ開発中です
– が、標準的なDevOps基盤の構築は終わり、実案件へ導入が始まっています
– Scrumは社内の一部のプロジェクトで行われています
– BDD・ATDD に取り組んでいるのは自分のプロジェクトだけです
Q. 社内全体で取り組んでいるのですか?
49Copyright © 2019 BTC Corporation All Rights Reserved.
https://github.com/terahide/sitimi
50Copyright © 2019 BTC Corporation All Rights Reserved.
ご清聴ありがとうございました

More Related Content

What's hot

Ruby で高速なプログラムを書く
Ruby で高速なプログラムを書くRuby で高速なプログラムを書く
Ruby で高速なプログラムを書くmametter
 
Azure Api Management 俺的マニュアル 2020年3月版
Azure Api Management 俺的マニュアル 2020年3月版Azure Api Management 俺的マニュアル 2020年3月版
Azure Api Management 俺的マニュアル 2020年3月版貴志 上坂
 
オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)
オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)
オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)NTT DATA Technology & Innovation
 
忙しい人の5分で分かるMesos入門 - Mesos って何だ?
忙しい人の5分で分かるMesos入門 - Mesos って何だ?忙しい人の5分で分かるMesos入門 - Mesos って何だ?
忙しい人の5分で分かるMesos入門 - Mesos って何だ?Masahito Zembutsu
 
CircleCIのinfrastructureを支えるTerraformのCI/CDパイプラインの改善
CircleCIのinfrastructureを支えるTerraformのCI/CDパイプラインの改善CircleCIのinfrastructureを支えるTerraformのCI/CDパイプラインの改善
CircleCIのinfrastructureを支えるTerraformのCI/CDパイプラインの改善Ito Takayuki
 
Nervesが開拓する「ElixirでIoT」の新世界
Nervesが開拓する「ElixirでIoT」の新世界Nervesが開拓する「ElixirでIoT」の新世界
Nervesが開拓する「ElixirでIoT」の新世界Hideki Takase
 
大規模システムリプレイスへの道
大規模システムリプレイスへの道大規模システムリプレイスへの道
大規模システムリプレイスへの道Recruit Lifestyle Co., Ltd.
 
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)NTT DATA Technology & Innovation
 
AWSでDockerを扱うためのベストプラクティス
AWSでDockerを扱うためのベストプラクティスAWSでDockerを扱うためのベストプラクティス
AWSでDockerを扱うためのベストプラクティスAmazon Web Services Japan
 
継承やめろマジやめろ。 なぜイケないのか 解説する
継承やめろマジやめろ。 なぜイケないのか 解説する継承やめろマジやめろ。 なぜイケないのか 解説する
継承やめろマジやめろ。 なぜイケないのか 解説するTaishiYamada1
 
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャーKubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャーToru Makabe
 
Akkaとは。アクターモデル とは。
Akkaとは。アクターモデル とは。Akkaとは。アクターモデル とは。
Akkaとは。アクターモデル とは。Kenjiro Kubota
 
Kubernetes ControllerをScale-Outさせる方法 / Kubernetes Meetup Tokyo #55
Kubernetes ControllerをScale-Outさせる方法 / Kubernetes Meetup Tokyo #55Kubernetes ControllerをScale-Outさせる方法 / Kubernetes Meetup Tokyo #55
Kubernetes ControllerをScale-Outさせる方法 / Kubernetes Meetup Tokyo #55Preferred Networks
 
「Azure durable functions」の概要
「Azure durable functions」の概要「Azure durable functions」の概要
「Azure durable functions」の概要裕之 木下
 
Azure Cosmos DB を使った高速分散アプリケーションの設計パターン
Azure Cosmos DB を使った高速分散アプリケーションの設計パターンAzure Cosmos DB を使った高速分散アプリケーションの設計パターン
Azure Cosmos DB を使った高速分散アプリケーションの設計パターンKazuyuki Miyake
 
品質を加速させるために、テスターを増やす前から考えるべきQMファンネルの話(3D版)
品質を加速させるために、テスターを増やす前から考えるべきQMファンネルの話(3D版)品質を加速させるために、テスターを増やす前から考えるべきQMファンネルの話(3D版)
品質を加速させるために、テスターを増やす前から考えるべきQMファンネルの話(3D版)Yasuharu Nishi
 
reg-suitとQA Wolfを活用したVisual Regression Test
reg-suitとQA Wolfを活用したVisual Regression Testreg-suitとQA Wolfを活用したVisual Regression Test
reg-suitとQA Wolfを活用したVisual Regression TestKazuyuki Tsuzisaki
 
こわくない Git
こわくない Gitこわくない Git
こわくない GitKota Saito
 
PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜
PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜
PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜Preferred Networks
 

What's hot (20)

Ruby で高速なプログラムを書く
Ruby で高速なプログラムを書くRuby で高速なプログラムを書く
Ruby で高速なプログラムを書く
 
Azure Api Management 俺的マニュアル 2020年3月版
Azure Api Management 俺的マニュアル 2020年3月版Azure Api Management 俺的マニュアル 2020年3月版
Azure Api Management 俺的マニュアル 2020年3月版
 
オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)
オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)
オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)
 
忙しい人の5分で分かるMesos入門 - Mesos って何だ?
忙しい人の5分で分かるMesos入門 - Mesos って何だ?忙しい人の5分で分かるMesos入門 - Mesos って何だ?
忙しい人の5分で分かるMesos入門 - Mesos って何だ?
 
CircleCIのinfrastructureを支えるTerraformのCI/CDパイプラインの改善
CircleCIのinfrastructureを支えるTerraformのCI/CDパイプラインの改善CircleCIのinfrastructureを支えるTerraformのCI/CDパイプラインの改善
CircleCIのinfrastructureを支えるTerraformのCI/CDパイプラインの改善
 
Nervesが開拓する「ElixirでIoT」の新世界
Nervesが開拓する「ElixirでIoT」の新世界Nervesが開拓する「ElixirでIoT」の新世界
Nervesが開拓する「ElixirでIoT」の新世界
 
大規模システムリプレイスへの道
大規模システムリプレイスへの道大規模システムリプレイスへの道
大規模システムリプレイスへの道
 
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
 
AWSでDockerを扱うためのベストプラクティス
AWSでDockerを扱うためのベストプラクティスAWSでDockerを扱うためのベストプラクティス
AWSでDockerを扱うためのベストプラクティス
 
継承やめろマジやめろ。 なぜイケないのか 解説する
継承やめろマジやめろ。 なぜイケないのか 解説する継承やめろマジやめろ。 なぜイケないのか 解説する
継承やめろマジやめろ。 なぜイケないのか 解説する
 
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャーKubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
 
Akkaとは。アクターモデル とは。
Akkaとは。アクターモデル とは。Akkaとは。アクターモデル とは。
Akkaとは。アクターモデル とは。
 
Kubernetes ControllerをScale-Outさせる方法 / Kubernetes Meetup Tokyo #55
Kubernetes ControllerをScale-Outさせる方法 / Kubernetes Meetup Tokyo #55Kubernetes ControllerをScale-Outさせる方法 / Kubernetes Meetup Tokyo #55
Kubernetes ControllerをScale-Outさせる方法 / Kubernetes Meetup Tokyo #55
 
「Azure durable functions」の概要
「Azure durable functions」の概要「Azure durable functions」の概要
「Azure durable functions」の概要
 
Azure Cosmos DB を使った高速分散アプリケーションの設計パターン
Azure Cosmos DB を使った高速分散アプリケーションの設計パターンAzure Cosmos DB を使った高速分散アプリケーションの設計パターン
Azure Cosmos DB を使った高速分散アプリケーションの設計パターン
 
品質を加速させるために、テスターを増やす前から考えるべきQMファンネルの話(3D版)
品質を加速させるために、テスターを増やす前から考えるべきQMファンネルの話(3D版)品質を加速させるために、テスターを増やす前から考えるべきQMファンネルの話(3D版)
品質を加速させるために、テスターを増やす前から考えるべきQMファンネルの話(3D版)
 
reg-suitとQA Wolfを活用したVisual Regression Test
reg-suitとQA Wolfを活用したVisual Regression Testreg-suitとQA Wolfを活用したVisual Regression Test
reg-suitとQA Wolfを活用したVisual Regression Test
 
Keycloakの最近のトピック
Keycloakの最近のトピックKeycloakの最近のトピック
Keycloakの最近のトピック
 
こわくない Git
こわくない Gitこわくない Git
こわくない Git
 
PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜
PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜
PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜
 

Similar to 受託開発でテストファーストしたらXXXを早期発見できてハイアジリティになったはなし

とりあえず30分でひととおり分かった気にはなれるアジャイル入門
とりあえず30分でひととおり分かった気にはなれるアジャイル入門とりあえず30分でひととおり分かった気にはなれるアジャイル入門
とりあえず30分でひととおり分かった気にはなれるアジャイル入門陽一 滝川
 
【17-C-4】「Axure RPによる画面プロトタイプを活用した要件定義の改善:野村総合研究所、NTTデータの事例紹介」松永充弘氏
【17-C-4】「Axure RPによる画面プロトタイプを活用した要件定義の改善:野村総合研究所、NTTデータの事例紹介」松永充弘氏【17-C-4】「Axure RPによる画面プロトタイプを活用した要件定義の改善:野村総合研究所、NTTデータの事例紹介」松永充弘氏
【17-C-4】「Axure RPによる画面プロトタイプを活用した要件定義の改善:野村総合研究所、NTTデータの事例紹介」松永充弘氏Developers Summit
 
決済システム内製化に向けたプラットフォーム構築 - PCF・BOSHによるオブザーバブルプラットフォーム
決済システム内製化に向けたプラットフォーム構築 - PCF・BOSHによるオブザーバブルプラットフォーム決済システム内製化に向けたプラットフォーム構築 - PCF・BOSHによるオブザーバブルプラットフォーム
決済システム内製化に向けたプラットフォーム構築 - PCF・BOSHによるオブザーバブルプラットフォームDaichiKimura3
 
サービス開発における工程
サービス開発における工程サービス開発における工程
サービス開発における工程Hidetoshi Mori
 
TERAS Conference
TERAS ConferenceTERAS Conference
TERAS ConferenceKeiju Anada
 
Agile japan2010 rakuten様プレゼン資料
Agile japan2010 rakuten様プレゼン資料Agile japan2010 rakuten様プレゼン資料
Agile japan2010 rakuten様プレゼン資料Akiko Kosaka
 
アドテク×Scala×パフォーマンスチューニング
アドテク×Scala×パフォーマンスチューニングアドテク×Scala×パフォーマンスチューニング
アドテク×Scala×パフォーマンスチューニングYosuke Mizutani
 
VentureCafe_第2回:SIerでのキャリアパスを考える_ござ先輩発表資料 V1.0
VentureCafe_第2回:SIerでのキャリアパスを考える_ござ先輩発表資料 V1.0VentureCafe_第2回:SIerでのキャリアパスを考える_ござ先輩発表資料 V1.0
VentureCafe_第2回:SIerでのキャリアパスを考える_ござ先輩発表資料 V1.0Michitaka Yumoto
 
まだプログラム手で書いて消耗してるの?~入出力例からプログラムを自動生成する技術~(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019...
まだプログラム手で書いて消耗してるの?~入出力例からプログラムを自動生成する技術~(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019...まだプログラム手で書いて消耗してるの?~入出力例からプログラムを自動生成する技術~(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019...
まだプログラム手で書いて消耗してるの?~入出力例からプログラムを自動生成する技術~(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019...NTT DATA Technology & Innovation
 
タイムボックス制約付きインクリメンタル開発
タイムボックス制約付きインクリメンタル開発タイムボックス制約付きインクリメンタル開発
タイムボックス制約付きインクリメンタル開発HIDEKAZU MATSUURA
 
「最強」のチームを「造る」技術基盤 ディレクターズ・カット
「最強」のチームを「造る」技術基盤 ディレクターズ・カット「最強」のチームを「造る」技術基盤 ディレクターズ・カット
「最強」のチームを「造る」技術基盤 ディレクターズ・カットRakuten Group, Inc.
 
Microsoft Team Foundation Service 入門
Microsoft Team Foundation Service 入門Microsoft Team Foundation Service 入門
Microsoft Team Foundation Service 入門You&I
 
基調講演「データのグループウェア化」
基調講演「データのグループウェア化」基調講演「データのグループウェア化」
基調講演「データのグループウェア化」Cybozucommunity
 
Developer's summit 2021 [19-D-5]なぜ今、ローコードなのか
Developer's summit 2021 [19-D-5]なぜ今、ローコードなのかDeveloper's summit 2021 [19-D-5]なぜ今、ローコードなのか
Developer's summit 2021 [19-D-5]なぜ今、ローコードなのかTetsuo Ajima
 

Similar to 受託開発でテストファーストしたらXXXを早期発見できてハイアジリティになったはなし (20)

とりあえず30分でひととおり分かった気にはなれるアジャイル入門
とりあえず30分でひととおり分かった気にはなれるアジャイル入門とりあえず30分でひととおり分かった気にはなれるアジャイル入門
とりあえず30分でひととおり分かった気にはなれるアジャイル入門
 
cec_Services.pdf
cec_Services.pdfcec_Services.pdf
cec_Services.pdf
 
cecservices.pdf
cecservices.pdfcecservices.pdf
cecservices.pdf
 
cecservices.pdf
cecservices.pdfcecservices.pdf
cecservices.pdf
 
cec_services.pdf
cec_services.pdfcec_services.pdf
cec_services.pdf
 
cecservices
cecservicescecservices
cecservices
 
cecservices
cecservicescecservices
cecservices
 
【17-C-4】「Axure RPによる画面プロトタイプを活用した要件定義の改善:野村総合研究所、NTTデータの事例紹介」松永充弘氏
【17-C-4】「Axure RPによる画面プロトタイプを活用した要件定義の改善:野村総合研究所、NTTデータの事例紹介」松永充弘氏【17-C-4】「Axure RPによる画面プロトタイプを活用した要件定義の改善:野村総合研究所、NTTデータの事例紹介」松永充弘氏
【17-C-4】「Axure RPによる画面プロトタイプを活用した要件定義の改善:野村総合研究所、NTTデータの事例紹介」松永充弘氏
 
決済システム内製化に向けたプラットフォーム構築 - PCF・BOSHによるオブザーバブルプラットフォーム
決済システム内製化に向けたプラットフォーム構築 - PCF・BOSHによるオブザーバブルプラットフォーム決済システム内製化に向けたプラットフォーム構築 - PCF・BOSHによるオブザーバブルプラットフォーム
決済システム内製化に向けたプラットフォーム構築 - PCF・BOSHによるオブザーバブルプラットフォーム
 
サービス開発における工程
サービス開発における工程サービス開発における工程
サービス開発における工程
 
TERAS Conference
TERAS ConferenceTERAS Conference
TERAS Conference
 
Agile japan2010 rakuten様プレゼン資料
Agile japan2010 rakuten様プレゼン資料Agile japan2010 rakuten様プレゼン資料
Agile japan2010 rakuten様プレゼン資料
 
アドテク×Scala×パフォーマンスチューニング
アドテク×Scala×パフォーマンスチューニングアドテク×Scala×パフォーマンスチューニング
アドテク×Scala×パフォーマンスチューニング
 
VentureCafe_第2回:SIerでのキャリアパスを考える_ござ先輩発表資料 V1.0
VentureCafe_第2回:SIerでのキャリアパスを考える_ござ先輩発表資料 V1.0VentureCafe_第2回:SIerでのキャリアパスを考える_ござ先輩発表資料 V1.0
VentureCafe_第2回:SIerでのキャリアパスを考える_ござ先輩発表資料 V1.0
 
まだプログラム手で書いて消耗してるの?~入出力例からプログラムを自動生成する技術~(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019...
まだプログラム手で書いて消耗してるの?~入出力例からプログラムを自動生成する技術~(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019...まだプログラム手で書いて消耗してるの?~入出力例からプログラムを自動生成する技術~(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019...
まだプログラム手で書いて消耗してるの?~入出力例からプログラムを自動生成する技術~(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019...
 
タイムボックス制約付きインクリメンタル開発
タイムボックス制約付きインクリメンタル開発タイムボックス制約付きインクリメンタル開発
タイムボックス制約付きインクリメンタル開発
 
「最強」のチームを「造る」技術基盤 ディレクターズ・カット
「最強」のチームを「造る」技術基盤 ディレクターズ・カット「最強」のチームを「造る」技術基盤 ディレクターズ・カット
「最強」のチームを「造る」技術基盤 ディレクターズ・カット
 
Microsoft Team Foundation Service 入門
Microsoft Team Foundation Service 入門Microsoft Team Foundation Service 入門
Microsoft Team Foundation Service 入門
 
基調講演「データのグループウェア化」
基調講演「データのグループウェア化」基調講演「データのグループウェア化」
基調講演「データのグループウェア化」
 
Developer's summit 2021 [19-D-5]なぜ今、ローコードなのか
Developer's summit 2021 [19-D-5]なぜ今、ローコードなのかDeveloper's summit 2021 [19-D-5]なぜ今、ローコードなのか
Developer's summit 2021 [19-D-5]なぜ今、ローコードなのか
 

More from terahide

オレオレになりがちなテスト計画を見直した話
オレオレになりがちなテスト計画を見直した話オレオレになりがちなテスト計画を見直した話
オレオレになりがちなテスト計画を見直した話terahide
 
和服を普段着にするようになって気づいたアジャイルの心
和服を普段着にするようになって気づいたアジャイルの心和服を普段着にするようになって気づいたアジャイルの心
和服を普段着にするようになって気づいたアジャイルの心terahide
 
Management3.0のワークを受けてから会社の偉い人へ M3.0のワークショップをするまでにやったこと
Management3.0のワークを受けてから会社の偉い人へM3.0のワークショップをするまでにやったことManagement3.0のワークを受けてから会社の偉い人へM3.0のワークショップをするまでにやったこと
Management3.0のワークを受けてから会社の偉い人へ M3.0のワークショップをするまでにやったことterahide
 
一番アジャイルな料理人はソーマくんだと思うんだ
一番アジャイルな料理人はソーマくんだと思うんだ一番アジャイルな料理人はソーマくんだと思うんだ
一番アジャイルな料理人はソーマくんだと思うんだterahide
 
オフショアだから失敗したの?~誤解だらけのオフショアと、アジャイルの再発見~
オフショアだから失敗したの?~誤解だらけのオフショアと、アジャイルの再発見~オフショアだから失敗したの?~誤解だらけのオフショアと、アジャイルの再発見~
オフショアだから失敗したの?~誤解だらけのオフショアと、アジャイルの再発見~terahide
 
Springのプログラムモデルと動く仕様~テスト編~
Springのプログラムモデルと動く仕様~テスト編~Springのプログラムモデルと動く仕様~テスト編~
Springのプログラムモデルと動く仕様~テスト編~terahide
 
Spring bootで学ぶ初めてのwebアプリ開発
Spring bootで学ぶ初めてのwebアプリ開発Spring bootで学ぶ初めてのwebアプリ開発
Spring bootで学ぶ初めてのwebアプリ開発terahide
 
明日に繋がるふり返りのプラクティス
明日に繋がるふり返りのプラクティス明日に繋がるふり返りのプラクティス
明日に繋がるふり返りのプラクティスterahide
 
ふりかえり
ふりかえりふりかえり
ふりかえりterahide
 
データモデルは時空を越える
データモデルは時空を越えるデータモデルは時空を越える
データモデルは時空を越えるterahide
 
ももたろう
ももたろうももたろう
ももたろうterahide
 
Vbaでもtdd
VbaでもtddVbaでもtdd
Vbaでもtddterahide
 
Sierのアジャイルとジレンマとパラダイムシフト
SierのアジャイルとジレンマとパラダイムシフトSierのアジャイルとジレンマとパラダイムシフト
Sierのアジャイルとジレンマとパラダイムシフトterahide
 
脱Java初心者を目指すときに読むといいと思う本を考える会
脱Java初心者を目指すときに読むといいと思う本を考える会脱Java初心者を目指すときに読むといいと思う本を考える会
脱Java初心者を目指すときに読むといいと思う本を考える会terahide
 
再入門!RESTとSpringMVC
再入門!RESTとSpringMVC再入門!RESTとSpringMVC
再入門!RESTとSpringMVCterahide
 
SGT2014 横浜道場 始めよう!インセプションデッキ
SGT2014 横浜道場 始めよう!インセプションデッキSGT2014 横浜道場 始めよう!インセプションデッキ
SGT2014 横浜道場 始めよう!インセプションデッキterahide
 
Tdd keyword
Tdd keywordTdd keyword
Tdd keywordterahide
 
ゆるぎー
ゆるぎーゆるぎー
ゆるぎーterahide
 
マシュマロチャレンジ
マシュマロチャレンジマシュマロチャレンジ
マシュマロチャレンジterahide
 

More from terahide (20)

オレオレになりがちなテスト計画を見直した話
オレオレになりがちなテスト計画を見直した話オレオレになりがちなテスト計画を見直した話
オレオレになりがちなテスト計画を見直した話
 
和服を普段着にするようになって気づいたアジャイルの心
和服を普段着にするようになって気づいたアジャイルの心和服を普段着にするようになって気づいたアジャイルの心
和服を普段着にするようになって気づいたアジャイルの心
 
Management3.0のワークを受けてから会社の偉い人へ M3.0のワークショップをするまでにやったこと
Management3.0のワークを受けてから会社の偉い人へM3.0のワークショップをするまでにやったことManagement3.0のワークを受けてから会社の偉い人へM3.0のワークショップをするまでにやったこと
Management3.0のワークを受けてから会社の偉い人へ M3.0のワークショップをするまでにやったこと
 
一番アジャイルな料理人はソーマくんだと思うんだ
一番アジャイルな料理人はソーマくんだと思うんだ一番アジャイルな料理人はソーマくんだと思うんだ
一番アジャイルな料理人はソーマくんだと思うんだ
 
Att
AttAtt
Att
 
オフショアだから失敗したの?~誤解だらけのオフショアと、アジャイルの再発見~
オフショアだから失敗したの?~誤解だらけのオフショアと、アジャイルの再発見~オフショアだから失敗したの?~誤解だらけのオフショアと、アジャイルの再発見~
オフショアだから失敗したの?~誤解だらけのオフショアと、アジャイルの再発見~
 
Springのプログラムモデルと動く仕様~テスト編~
Springのプログラムモデルと動く仕様~テスト編~Springのプログラムモデルと動く仕様~テスト編~
Springのプログラムモデルと動く仕様~テスト編~
 
Spring bootで学ぶ初めてのwebアプリ開発
Spring bootで学ぶ初めてのwebアプリ開発Spring bootで学ぶ初めてのwebアプリ開発
Spring bootで学ぶ初めてのwebアプリ開発
 
明日に繋がるふり返りのプラクティス
明日に繋がるふり返りのプラクティス明日に繋がるふり返りのプラクティス
明日に繋がるふり返りのプラクティス
 
ふりかえり
ふりかえりふりかえり
ふりかえり
 
データモデルは時空を越える
データモデルは時空を越えるデータモデルは時空を越える
データモデルは時空を越える
 
ももたろう
ももたろうももたろう
ももたろう
 
Vbaでもtdd
VbaでもtddVbaでもtdd
Vbaでもtdd
 
Sierのアジャイルとジレンマとパラダイムシフト
SierのアジャイルとジレンマとパラダイムシフトSierのアジャイルとジレンマとパラダイムシフト
Sierのアジャイルとジレンマとパラダイムシフト
 
脱Java初心者を目指すときに読むといいと思う本を考える会
脱Java初心者を目指すときに読むといいと思う本を考える会脱Java初心者を目指すときに読むといいと思う本を考える会
脱Java初心者を目指すときに読むといいと思う本を考える会
 
再入門!RESTとSpringMVC
再入門!RESTとSpringMVC再入門!RESTとSpringMVC
再入門!RESTとSpringMVC
 
SGT2014 横浜道場 始めよう!インセプションデッキ
SGT2014 横浜道場 始めよう!インセプションデッキSGT2014 横浜道場 始めよう!インセプションデッキ
SGT2014 横浜道場 始めよう!インセプションデッキ
 
Tdd keyword
Tdd keywordTdd keyword
Tdd keyword
 
ゆるぎー
ゆるぎーゆるぎー
ゆるぎー
 
マシュマロチャレンジ
マシュマロチャレンジマシュマロチャレンジ
マシュマロチャレンジ
 

受託開発でテストファーストしたらXXXを早期発見できてハイアジリティになったはなし

  • 1. 東京オフィス(本社) 〒106-0041 東京都港区麻布台2-3-5 ノアビル3F Tel. 03-5114-6171(代表) ベトナム開発センター 15F Ladeco Building, No.266, Doi Can Street, Ba Dinh District, Hanoi Vietnam 札幌オフィス 〒060-0001 北海道札幌市中央区北一条西3-3 敷島プラザビル4F Tel. 011-206-1914 シリコンバレーオフィス 3350 Scott Blvd. #29 Santa Clara, CA 95054 受託開発で テストファーストしたら XXXを早期発見できて ハイアジリティになったはなし #jsug #sf_8C 2019年12月18日 寺島 秀樹
  • 2. 2Copyright © 2019 BTC Corporation All Rights Reserved. このラーメンは美味しいか?
  • 3. 3Copyright © 2019 BTC Corporation All Rights Reserved. 迅速な意思決定と契約 • ITサービスがビジネスの中心 • 競合との差別化のため経営は意思決定の迅速化が求められる • ITサービス開発におけるアジリティは意思決定に大きく影響 • 日本のソフトウェア産業における構造 – 請負契約 62.1% – 準委任契約 27.6% – 自社開発 10.3% • ※「ユーザ企業ソフトウェアメトリクス調査2018」 P27 図表NE2-6-1-1 開発体制 より 請負契約・受託開発は意思決定に十分迅速?
  • 4. 4Copyright © 2019 BTC Corporation All Rights Reserved. 品質と納期の遅れ • 全体の品質の評価 – 欠陥は少なく稼働後も安定 55.4% – 欠陥の発生は想定内に収まり稼働後もほぼほぼ安定 32.1% – 欠陥が多数発生し対応に追われた 7.1% – 欠陥が多く発生し混乱が発生した 3.6% – 欠陥が多く発生し大きな混乱が発生した 1.8% • ※「ユーザ企業ソフトウェアメトリクス調査2018」 P32 図表NE3-1-1 全体の品質 評価 より • 全体の納期の評価 – 計画より早く稼働 1.8% – 計画通り稼働 76.4% – 少し遅れたが大きな問題はなかった 14.5% – 納期が大きく遅れ要員を多く投入した 1.8% – 納期が大幅に遅れプロジェクトの見直しを余儀なくされた 5.5% • ※「ユーザ企業ソフトウェアメトリクス調査2018」 P32 図表NE3-1-2 全体の納期 評価 より 87.5%が品質は安定。 21.8%に納期の遅れ
  • 5. 5Copyright © 2019 BTC Corporation All Rights Reserved. 会社概要 社名 株式会社ビッグツリーテクノロジー&コンサルティング (BTC Corporation) 設立 2002年2月7日 所在地 〒106-0041 東京都港区麻布台2-3-5 ノアビル3階 代表取締役社長 杉山 健 社員数 264名(連結、2019年4月1日時点。内、ベトナムオフィス22名) 売上高 40億6900万円(2018年11月決算) 事業内容 システム開発およびコンサルティング デジタルマーケティング領域におけるコンサルティングと制作 RPA・クラウドなど最新技術の提供サービス
  • 6. 6Copyright © 2019 BTC Corporation All Rights Reserved. 拠点 東京を中心に札幌・ベトナムに開発拠点を、シリコンバレーに研究拠点を有しております
  • 7. 7Copyright © 2019 BTC Corporation All Rights Reserved. 提供サービス SI・デジタル・RPAを組み合わせ、デジタルトランスフォーメーション(DX)時代において、お客様のビジ ネスを総合的に支援いたします • お客様満足度の向上・売上向 上を目的とする「攻めのIT」では、 経営戦略に則したシステムを瞬 時に構築することが重要です • BTCは、単に「システムを作る」の ではなく、いかに課題を解決する かに主眼を置き、変化に柔軟な システムをスピーディに構築し、お 客様のビジネスを成功へ導きます • 成長し続けるインターネット業界 の中で、デジタルマーケティング戦 略の立案・構築・最適化を行い ます • BTCでは、主にユーザー体験、テ クノロジー活用、データ解析の3つ の観点を中心に、ウェブサイト、 メール、ソーシャルメディア等、 様々なデジタルチャネルの最適化 を支援します • RPAとは”Robotics Process Automation”の略で、PC上で 行われるさまざまな事務処理をソ フトウェアロボットに代行させること で、ホワイトカラーのさまざまな業 務を自動化させる仕組みです • BTCは企業のさらなる業務効率 向上を支援するために、RPAのイ ンテグレーションをトータルでサポー トします SI事業 デジタル事業 RPA事業 デジタルマーケティング支援ITコンサルティング・システム開発 RPAコンサルティング
  • 8. 8Copyright © 2019 BTC Corporation All Rights Reserved. Profile • 株式会社ビッグツリーテクノロジ&コンサルティング – DX事業部 シニアアーキテクト • CSP-SM/CSP-PO • Java/Spring/Groovy/Spock/Geb/Sitimi • 酒/アニメ/ラーメン • テスト駆動飲み会 – https://tddrinking.connpass.com/ 寺島 秀樹 @terahide27
  • 9. 9Copyright © 2019 BTC Corporation All Rights Reserved. 今からする話 • Project A – 某機材製造メーカー – 統計をもとにした予約サービス – チーム構成:7人(うちベトナムと社内オフショア3人) – Spring Bootを使ったAPIを製造 – Spring Bootを使ったWebサービス(前述のAPIをサーバ サイドで使用) • Project B – 某薬局チェーン – 店舗統制サービス – チーム構成:2人 – Spring Bootを使ったAPIを製造 – ReactによるSPA ここ数年で行ったプロジェクト • Project C – 某公共図書館 – 蔵書管理サービス – チーム構成:7人 – Spring Bootを使ったAPIを製造 – C# .NET によるGUI
  • 10. 10Copyright © 2019 BTC Corporation All Rights Reserved. 早期発見
  • 11. 11Copyright © 2019 BTC Corporation All Rights Reserved. いつ気が付く? 課題に気が付く (遅すぎる)
  • 12. 12Copyright © 2019 BTC Corporation All Rights Reserved. いつ気が付く? Sequential Process Iterative Process 課題に気が付く (十分早い) 課題に気が付く (遅すぎる)
  • 13. 13Copyright © 2019 BTC Corporation All Rights Reserved. 早期発見
  • 14. 14Copyright © 2019 BTC Corporation All Rights Reserved. TDD - テスト駆動開発 1イテレーションの中で 課題に気が付く (遅すぎる)
  • 15. 15Copyright © 2019 BTC Corporation All Rights Reserved. TDD - Test Driven Development • まずレッドになる(失敗する)自動テストを書く • 一番早い方法でグリーンにする(成功させる) • リファクタする • 以上を繰り返えし目標に向かう テスト駆動開発のサイクル Red Green Refactor
  • 16. 16Copyright © 2019 BTC Corporation All Rights Reserved. 2つのサイクル イテレーション TDD 実装・設計における テストファースト
  • 17. 17Copyright © 2019 BTC Corporation All Rights Reserved. 振舞駆動開発 - Behavior Driven Development(BDD) • “振舞駆動開発とは、ソフトウェアの相互作用に着目し、ソフトウェアがどのように振る舞う(動作 する)かを定義することを起点とした開発手法” – 「JUnit実践入門」より • 振る舞いはシナリオで定義する。これをスペック(テスト仕様)と呼ぶ • テストファーストであるかどうかより、スペックを自然言語で表現できるかを重要視する テスト仕様の語彙 JUnit実践入門 ISBN978-4-7741-5377-3 従来の3A Pattern(Arrange/Action/Assert) BDD ( GWT:Given/When/Then ) //JUnit4 with Groovy @Test void ”電卓を起動して9+9を計算すると結果は18であるべき”(){ def sut = new Calc() def actual = sut.add(9,9) assert actual == 18 } //Spock with Groovy def ”単純な足し算のシナリオ”(){ given: ”電卓を起動” def sut = new Calc() when: ” 9+9を計算する” def actual = sut.add(9,9) then: ”結果は18であるべき” actual == 18 }
  • 18. 18Copyright © 2019 BTC Corporation All Rights Reserved. 仕様の明確度と遅延の関係 • 要求仕様の明確度と後期遅延度(予定より早い+予定通 り) – 非常に明確 76.2% – かなり明確 77.8% – ややあいまい 67.1% – 非常にあいまい 55.8% • ※「ユーザ企業ソフトウェアメトリクス調査2018」 P59 図表NE6-5-36 要求仕様の明確度と後期遅延度より 要求仕様が明確でないと遅延が大きくなる傾向
  • 19. 19Copyright © 2019 BTC Corporation All Rights Reserved. 仕様の明確度と満足度の関係 • 仕様明確度別のプロジェクト全体満足の割合 – ※「ユーザ企業ソフトウェアメトリクス調査2018」 P60 図表NE6-5-40 仕様明確度別のプロジェクト全 体満足の割合 より 仕様が明確でないとプロジェクト全体の満足度が下がる傾向 87.7 76.4 51.8 37.2 0 10 20 30 40 50 60 70 80 90 100 非常に明確 かなり明確 ややあいまい 非常にあいまい
  • 20. 20Copyright © 2019 BTC Corporation All Rights Reserved. 仕様はどこに書く? ドキュメントに記載した場合 • 動くプログラムは修正されたが、ドキュメントは後回しにされたり、修正されなかったりする • 結果、ドキュメントと実装が乖離していく 自動テストに記載した場合 • 自動テストに仕様を記載した場合、動くプログラムと同時に自動テストが修正され続ける – 自動テストが陳腐化しないための心の強さは前提(CIでグリーンを保ち続けるなど) • 現在動いているプログラムに対して、自動テストが成功することでその仕様が実装されていることが 検証できる • 結果、記載された仕様と実装の乖離は少ない よくある話: 実装とドキュメントの乖離
  • 21. 21Copyright © 2019 BTC Corporation All Rights Reserved. 早期発見
  • 22. 22Copyright © 2019 BTC Corporation All Rights Reserved. 2つのサイクル ATDD TDD・BDD イテレーションにおける テストファースト 実装・設計における テストファースト ※ATDD: Acceptance Test Driven Development
  • 23. 23Copyright © 2019 BTC Corporation All Rights Reserved. 受入テスト駆動開発 - Acceptance Test Driven Development (ATDD) • ATDDは受入テスト仕様を用いたBDD • 受入テストレベルで行うテストのユーザがアプリケーション・サービスに行う操作をシナリオ化 • シナリオをBDDの語彙で自動テストに記載する • イテレーションの計画時に受入テストの仕様を確認しイテレーションの中で自動化 受入テストのテストファースト • トップページでキーワードで簡易検索を行うと一覧ページに遷移する • 一覧ページでタイトルリンクをクリックすると、対象の書誌の書誌詳細画面に遷移する • 書誌詳細ページで関連資料を表示をクリックすると関連資料が表示される • さらに閉じるボタンをクリックすると関連資料が非表示になる ・・・ ①イテレーション計画で テスト仕様を確認 ②イテレーション中に BDDで自動化
  • 24. 24Copyright © 2019 BTC Corporation All Rights Reserved. テストのピラミッド 「初めての自動テスト」より 初めての自動テスト ISBN978-4-87311-816-1 UI 統合 ユニット メソッドレベルの小さなテスト 複数の層を一つにつなげるテスト全般 アプリケーションをエンドユーザーが操作するのと 同じようにテストするスクリプト サービス
  • 25. 25Copyright © 2019 BTC Corporation All Rights Reserved. アプリケーションの構造 弊社の典型的なアプリケーションの構造 初めての自動テスト ISBN978-4-87311-816-1 A. Server Side Rendering B. SPA + API C. GUI + API HTML JSON/XML/etc. JSON/XML/etc.
  • 26. 26Copyright © 2019 BTC Corporation All Rights Reserved. アプリケーションの構造とテストのピラミッド Auto Test Framework ※Sitimi は後述 ユニット 統合 UI (E2E) サーバ フロント サーバ フロント A. Server Side Rendering Spock (+ Spring Test) - Spock + Spring Test - Geb + SpockB. SPA + API - Cypress C. GUI + API - ー Sitimi* + Spock ATDDに取り組み始めたら、あまりやらなくなった
  • 27. 27Copyright © 2019 BTC Corporation All Rights Reserved. アプリケーションの構造とテストのピラミッド Auto Test Framework ※Sitimi は後述 ユニット 統合 UI (E2E) サーバ フロント サーバ フロント A. Server Side Rendering Spock (+ Spring Test) - Spock + Spring Test - Geb + SpockB. SPA + API - Cypress C. GUI + API - ー Sitimi* + Spock
  • 28. 28Copyright © 2019 BTC Corporation All Rights Reserved. 皮下テスト(Subcutaneous Test) • “皮下テストは、アプリケーションのUIのすぐ下で 動作するテストを意味します” – martinFowler.comより (Google翻訳) • Spring Boot でAPIを実装することが多い • SpringTest(MockMVC)とSpockを使って APIのテストを行っている • テスト対象が「外部サービスを使う」などのスタブ 化は考えるが、サービスや永続化のレイヤをスタ ブにすることはしないことが多い • HTMLを返す場合は(皮下テストではないが) このテストはほぼ書かない Spock + Spring Test @SpringBootTest @Transactional class ExampleSpec extends Specification{ MockMvc mockMvc @Autowired WebApplicationContext wac def setup(){ mockMvc = webAppContextSetup(wac).build() } def "例を取得すると期待されるjsonであるべき"() { def expected = '{"id":1,"name":"example"}' when: def json = mockMvc.perform( MockMvcRequestBuilders .get('/v1/api/example')) .andExpect(status().isOk()) .andReturn().response.contentAsString then: json == expected } } https://martinfowler.com/bliki/SubcutaneousTest.html
  • 29. 29Copyright © 2019 BTC Corporation All Rights Reserved. アプリケーションの構造とテストのピラミッド Auto Test Framework ※Sitimi は後述 ユニット 統合 UI (E2E) サーバ フロント サーバ フロント A. Server Side Rendering Spock (+ Spring Test) - Spock + Spring Test - Geb + SpockB. SPA + API - Cypress C. GUI + API - ー Sitimi* + Spock
  • 30. 30Copyright © 2019 BTC Corporation All Rights Reserved. Selenium と Cypress Browser Automation & Stubbing Response Browser Seleniumはブラウザ上の操作の 自動化のソリューション Browser Cypressもブラウザ上の操作の 自動化のソリューション ただしSeleniumに非依存 HTTP通信のスタビングが可能 HTTP Request Response (Stubbing) HTTP Request Response
  • 31. 31Copyright © 2019 BTC Corporation All Rights Reserved. アプリケーションの構造とテストのピラミッド Auto Test Framework ※Sitimi は後述 ユニット 統合 UI (E2E) サーバ フロント サーバ フロント A. Server Side Rendering Spock (+ Spring Test) - Spock + Spring Test - Geb + SpockB. SPA + API - Cypress C. GUI + API - ー Sitimi* + Spock
  • 32. 32Copyright © 2019 BTC Corporation All Rights Reserved. Geb – Very Groovy Browser Automation • WebDriverの機能、jQueryセレクタの便利さ、 Page Objectモデリングの堅牢さ、Groovyの 表現力を統合します(意訳) • It brings together the power of WebDriver, the elegance of jQuery content selection, the robustness of Page Object modelling and the expressiveness of the Groovy language. Geb is a browser automation solution. https://gebish.org/ import geb.Browser Browser.drive { go "http://myapp.com/login" assert $("h1").text() == "Please Login" $("form.login").with { username = "admin" password = "password" login().click() } assert $("h1").text() == "Admin Section" }
  • 33. 33Copyright © 2019 BTC Corporation All Rights Reserved. Spock + Geb • Spockは、Gebで使用するのに最適な革新的 なテストフレームワークです。 Spock + Gebを 使用すると、非常に明確かつ簡潔で、理解しや すいテスト仕様をわずかな労力で提供できます。 (Google翻訳) • Spock is an innovative testing framework that is a great match for using with Geb. Using Spock + Geb gives you very clear, concise and easy to understand test specifications with very little effort. Page Object modelling import geb.Page import geb.spock.GebSpec class LoginSpec extends GebSpec { def "login to admin section"() { given: to LoginPage when: loginForm.with { username = "admin" password = "password" } and: loginButton.click() then: at AdminPage } } https://gebish.org/
  • 34. 34Copyright © 2019 BTC Corporation All Rights Reserved. アプリケーションの構造とテストのピラミッド Auto Test Framework ※Sitimi は後述 ユニット 統合 UI (E2E) サーバ フロント サーバ フロント A. Server Side Rendering Spock (+ Spring Test) - Spock + Spring Test - Geb + SpockB. SPA + API - Cypress C. GUI + API - ー Sitimi* + Spock
  • 35. 35Copyright © 2019 BTC Corporation All Rights Reserved. Sitimi – Very Groovy is a GUI Automation • SikuliXの機能、Page Objectモデリングの堅 牢さ、Groovyの表現力を統合します。そう、そ れはGebのように! • It brings together the power of SikuliX, the robustness of Page Object modelling and the expressiveness of the Groovy language. so. It's like Geb! Sitimi is a Windows Automation Solution. https://github.com/terahide/sitimi import sitimi.spock.SitimiSpec import sample.CalcWindow class SimpleCalcSpec extends SitimiSpec{ def "a simple scenario"(){ given: start Calc expect: shown CalcWindow when: add(9, 9) then: "result is" (18) } } 操作したい部分をキャプチャします。 src/test/imgs/9_button.png Package sample import sitimi.Window class CalcWindow extends Window{ def add(i, j){ click "src/test/imgs/${i}_button.png" click "src/test/imgs/plus_button.png" click "src/test/imgs/${j}_button.png" click "src/test/imgs/equal_button.png" } // snip
  • 36. 36Copyright © 2019 BTC Corporation All Rights Reserved. スペックの相似 - Movable Specification BDDの語彙で表せない部分はCompose Method(Page|Window Object)に隠蔽 import geb.Page import geb.spock.GebSpec class LoginSpec extends GebSpec { def "login to admin section"() { given: "ログインページを表示する" to LoginPage when: "ユーザ名とパスワードを入力する" loginForm.with { username = "admin" password = "password" } and: "ログインする" loginButton.click() then: "管理者ページが表示されるべき" at AdminPage } } import sitimi.spock.SitimiSpec import sample.CalcWindow class SimpleCalcSpec extends SitimiSpec{ def "a simple scenario"(){ given: "電卓を起動する" start Calc expect: "電卓が表示されるべき" shown CalcWindow when: "9+9を計算する" add(9, 9) then: "結果は18であるべき" "result is"(18) } } Geb Sitimi
  • 37. 37Copyright © 2019 BTC Corporation All Rights Reserved. Spock is a Very Groovy BDD Framework.
  • 38. 38Copyright © 2019 BTC Corporation All Rights Reserved. ご参考: ある新人のはなし 自動テスト難しいです • 初めてテストを書いたのでspecが何をしているかわからなかった。それを把握するのに苦労した • でも日本語が多いので「うわぁ!英語しか書いてない!見たくない!」的なアレルギー反応は少なかった SitimiというかSikuliX • SikuliXは色の区別や似た文字の判別が難しいらしい – アイデンティティのある箇所を探してスクリーンショットを取るのが難しい、というか面倒 – SikuliXが見分けられない画像は人間にもフレンドリーではないUIなのかもしれない – SikuliXが識別できないものは似たようなボタンや画面が複数ある場合が多い? • 時折何をしても動かないことがある、そして次の日には何事もなかったかのように動く。気まぐれなのかもしれない Sitimi • なにより書いていて楽しい! • 簡単なコードですぐに動かせるので、達成感が得やすい • 自分の書いたテストがアプリを動かすのを見ているのが面白い • ゲーム感覚 世界“唯一”のSitimiのパワーユーザである、Aさんの感想
  • 39. 39Copyright © 2019 BTC Corporation All Rights Reserved. ご参考: ある新人のはなし • Aさん「なぜかテストが落ちるんです」 • 寺島「機械の方がだいたい人間より正確だから、あなたの書いたテストコードに問題があるので は?」 • ー 数分悩み何かを修正 ー • Aさん「直りました」 • 寺島「おっけー。じゃあ、全部動かしてみて」 • ー 数分後 ー • Aさん「1件なぜか落ちました。単体で実行すると成功します。。。」 • 寺島「自動テストは、リピータブルで独立してないとダメよ」 日常の会話 その1
  • 40. 40Copyright © 2019 BTC Corporation All Rights Reserved. ご参考: ある新人のはなし • 寺島「このテスト文学的じゃない」 • Aさん(ぶ、文学?) • 寺島「自動テストのスペックは読んだときに、文学作品のようにストーリーがないと」 • Aさん(何か言い出しおった。。。) 日常の会話 その2
  • 41. 41Copyright © 2019 BTC Corporation All Rights Reserved. Continuous
  • 42. 42Copyright © 2019 BTC Corporation All Rights Reserved. BTC Code Base テスト管理 自動テスト 情報集約基盤 自動デプロイビルドコントロールソースコントロール AWS CodeCommit(Git) AWS CodeDeployAWS CodeBuild AWS Device Farm 開発者 開発環境 ソースコード テストコード(JUnit) テストコード(Selenium) ビルドファイル(Gradle) 構成ファイル(Docker) ClonePush ビルド(Gradle) 単体テスト(Junit) メトリクス取得(Sonarプラグイン) AWS CodePipeline 継続的デリバリーとリリースの自動化 Amazon EC2 サービス提供基盤 デプロイスクリプト サーバ 資材 デプロイ モバイル デバイス 資材 テスト実行 テストログ プロジェクト コード 機械学習・予測分析 AmazonMachine Learning テスト ログ コミットログ BTC Code Base powered by 1 4 3 2 MicrosoftAzureフィード バック データ格納・分析(BI, DWH) 格納 格納 分析 AIによって進化し続けるDevOps基盤
  • 43. 43Copyright © 2019 BTC Corporation All Rights Reserved. アプリケーションテンプレート on Spring Boot 「Spring Boot2徹底活用」 ISBN978-4-8026-1185-5
  • 44. 44Copyright © 2019 BTC Corporation All Rights Reserved. BTC Code Base • マージリクエスト • チケット • ドキュメント • コミット • ビルド/デプロイ • テスト • コメント • 時間帯別/曜日別/作業者別 • etc. 開発の営みの可視化 ふりかえりでマージリクエストの大きさに注目 マージ数を5倍にする取り組みを行う 次のイテレーションで消化したポイントが6倍に!
  • 45. 45Copyright © 2019 BTC Corporation All Rights Reserved. 早期発見 繰り返しのプロセスとテストファースト BTC Code Base アプリケーションテンプレート イテレーション ATDD ふりかえり CI・CD TDD・BDD ・・・
  • 46. 46Copyright © 2019 BTC Corporation All Rights Reserved. 取り組みがもたらしたもの • 仕様の可視化・タスクの可視化・実績の可視化 • 予実などの予測がしやすくなった • トラブルが起きても収束が早くなった • コマンドコントロールが減ってきた • プロジェクトの運営が円滑に 私は、 • 仕事が増えた • 今年度が始まった時は1チームだったのが、現在5チームに所属 • 間接的に関わるチームも増えてきた
  • 47. 47Copyright © 2019 BTC Corporation All Rights Reserved. 「私」がこれから取り組んでいきたいこと • テストの並列化 • CCPM • お客様が行う受入テストのATDD • テストの削減(テストしない品質保証)
  • 48. 48Copyright © 2019 BTC Corporation All Rights Reserved. よくある質問 • YesでありNoです – 自動テストは社内のほとんどのプロジェクトで実行しています • JUnit • Spock • Geb • Cypress • Sitimi • etc. – BTC Code Baseはまだ開発中です – が、標準的なDevOps基盤の構築は終わり、実案件へ導入が始まっています – Scrumは社内の一部のプロジェクトで行われています – BDD・ATDD に取り組んでいるのは自分のプロジェクトだけです Q. 社内全体で取り組んでいるのですか?
  • 49. 49Copyright © 2019 BTC Corporation All Rights Reserved. https://github.com/terahide/sitimi
  • 50. 50Copyright © 2019 BTC Corporation All Rights Reserved. ご清聴ありがとうございました