読者です 読者をやめる 読者になる 読者になる

SideCI Blog

継続的インテグレーションツール(CI)のSideCIが運営しています。コード品質向上や生産性向上など、ソフトウェアエンジニアに役立つCI全般について記事を投稿しています。

まだ出せる状態じゃないんです!じゃぁ間に合わせろ!デスマと品質

プログラマーデスマーチが多くて辛い、みたいなイメージが世の中には存在しています。しかし、デスマーチじゃないところも多いです。これは「アジャイル」によるところが大きいと思います。

リリースと品質

「ペイジン」という小説を皆さんは読んだことがありますか?

ベイジン〈上〉 (幻冬舎文庫)

ベイジン〈上〉 (幻冬舎文庫)

冒頭、中国の原発を舞台にしたフィクション小説で、安全が保証できる状態じゃないからシステム(核融合炉)を正式稼働させないで欲しい!と叫ぶ技術責任者、北京オリンピックに合わせてリリース(原発の稼働開始)をしたい核開発責任者との口論、から物語が始まる小説です。

この時、機能要件的には稼働可能な状態なものの、品質面での安全性に問題があるため、このような状態になってしまっています。

もちろん、エンジニアはそのことをリリース日より前に知っていましたから、デスマーチしまくってました。しかし、間に合わなかった。

核融合炉を動かすのか、動かさないのか。。。

それは本を読んでのお楽しみ!

閑話休題

リリース日に合わせてリリースするためには、手段は限られています。

  • 品質を無視する
  • リリース日に大幅な余裕を持たせ、何が起こっても大丈夫なようにしておく
  • 物が出来てからリリース日を決める
  • リリースにあわせて頑張る
  • リリースに間に合うようリソースを追加する
  • リリースの内容を変更する

リリースの内容を変更する、のがアジャイル。常にリリース出来る状態をキープしておき、いつでもリリース出来る。改善版のアップデートなどは出来次第リリースする。

品質も最高とまではやるかどうかはさておき、リリース可能な品質を常に担保する。

品質だけはリリースした後じゃどうしようもないですからね。。。 (核融合炉がメルトダウンしたら大変!)

常にリリース出来る状態をキープするために

大事なポイントは3つあります。
1つ目は、リリースする対象を細かめに区切り、明確化しておくこと
2つ目は、リリースする対象の区切りの時点では品質のチェックをしっかり行っておくこと
3つ目は、アジャイルについてビジネス・エンジニアの間で調和し、常に少なくてもリリースフラグについては、理解を同期しておくこと

アプリやWebサイトはインターネットを通じていつでも更新可能になりました。そのため、不完全なソフトウェアもリリース可能になりました。

不完全だけれども、特定のユーザにとっては十分な機能を有している、という状態を、BizDev間で把握しておく必要があります。

その状態ごとにリリース可能なようテストなどを行い品質チェックを行う必要があります。

そして、それらをいつリリースするかは、リリース自体はエンジニアの手もなきゃ、Bizだけじゃ出来ませんので、予定はしておかなければなりません。

この三つが達成されれば、多くの場合、いつでもリリース出来るでしょう。

アジャイルの中でネックになるのはテスト

アジャイルの中ではテストが非常にボトルネックになります。頻繁に受け入れテストをしなければならないからです。受け入れテストを手でやるのはハンパなく疲れます。

最近ではCapybaraなどの受け入れテストフレームワークも普及してきました。テストをマシンが代わりにやる時代の到来です。やっとテスト可能な状態になってきたか、と思われます。

アジャイルの普及はこれからもっと進むでしょう。

さぁアジャイルとテストを始めよう

おそらく、アジャイルをやったことがない人は一旦つまりまくると思います。BizDevの緻密な連携が必要になるので、当然で、頑張って!としか言えません。。

テストも、本番環境に等しいテスト環境を用意するなど、高い導入ハードルがあります。

私たちが開発しているSideCIもこの課題に対するソリューションです。まだリリース要件を満たしていないので、これを使ってもらうことは出来ないのですが、Jenkinsなど、その他のCIツールもいくつかあります。

もしアジャイルやるぞ!でもやり方が分からない、という方はこっそりご連絡ください。 @sumyapp

アジャイルは誰の為のものか?

ここまで書いておいてなんですが、納品型のプロジェクトの場合には意味ないですね。アジャイルの導入自体が難しいですから。。。

アジャイルが最も活きるのは、自社サービス提供会社、チーム、スタートアップ企業などだと思います。

画面遷移全部書いてガンガン実装していくぜー!な方はアジャイルもぜひ検討してみては?と思います。

まとめ

「まだ出せる状態じゃないんです!じゃぁ間に合わせろ!デスマと品質」な過激目のタイトルに対するまとめとしては、
アジャイルしようよ!
アジャイルのために受け入れテスト自動化しようよ!
品質はダメな状態でリリースはダメだよ!
アジャイル無理だー!なら人力でカバーするか賢く生きるかしかないよ!

といったところです。