Baby Steps で始める Pipeline の作成
はじめに
テスト駆動開発(TDD)のフィードバックサイクル(Baby Stepsという原則に基づくフィードバックサイクル)がPipelineの作成にも適応できそうだったので
所感とともに、つらつらまとめてみようと思います。
TDDのサイクル
テスト駆動開発(TDD)のサイクルをおさらいすると、以下のようなステップになると思います。
- テストリストの作成
- テストコードの作成(レッド)
- テストが通るように実装を追加(グリーン)
- 必要に応じてリファクタリングを行う
- テストリストが空になるまで上記を繰り返す
詳細はこちらに記載されています。
Baby Steps
テスト駆動開発(TDD)はBaby Stepsという原則に従い進めます。
つまり、小さなステップを繰り返すことでオーバーヘッドを小さくしつつ
得られたフィードバックを高速に応用していくことにあると思います。
※Baby Stepsを適応することで、継続的な学習、適応、そして着実なペースでの提供を促してくれる話
Baby Steps are not a rigid recipe! Instead, baby Steps are about continuous learning, adaptation, and delivery at a steady pace.
pipelineの作成に適応してみる
今回の本題ですが、pipelineの作成にも同様のStepを適応してみます。
作成するpipeline → apiのe2eを実行するPipelineを作成するイメージ
実施するサイクル
- 作成したいpipelineの認識合わせ(これはテストリストの作成に近しい)
- pipelineを1ステップ毎に進める(ベイビーステップを元に小さく進める)
- 失敗すること もしくは 成功することを確認する(レッド→グリーン)
- 必要であればリファクタリングを行う(リファクタリング)
上記サイクルをpipelineが完成するまで繰り返していく。
このようにpipelineが実行される環境では
考え方によっては、成功もしくは失敗するというフィードバックをもらうことができるため
TDDのようなサイクルを当てはめやすい。
合わせて、pipelineもステップもしくはステージと呼ばれるような概念もあるため
段階的に実施しやすい事もあり
非常に適応しやすいのではないかなと思います。
pipeline {
...
stages {
steps {}
}
}
学びのサイクルの話
過去に、Kazuki Higashiguchi さんがTDDのサイクルを成長のサイクルに置き換えて考えることで
TDDが効果的に働いてくれていることを述べてくれています。
成長したい開発者にTDDが与える学習効果 / tdd makes you growth
最後に
今回はTDDのサイクルを他にも利用できないかという観点で
改めて深掘りをしてみたいなと思いつらつら書いてみましたが
TDD(テスト駆動開発)という言葉が、どうしても実装レベルでの話に閉じてしまうようなバイアスがかかるなと思いました。
実際は学習速度をより高速にするということが背景にあるのだろうなと。
そう捉えると学びのサイクルを進めるタイミングは至る所に転がっているような気がします。
フィードバックがもらえるところであれば、Baby Stepsという原則を適応していき
小さく進めることで、学びのサイクルを高頻度でかつ高品質に出せるよう心がけていきたいです。
Discussion