(Photo by:WorldSkills UK)
はじめに
プロジェクトにムダな作業が発生していませんか?
ムダな作業は、コストを増大させる要因のひとつです。
もちろん、納期にも大きな影響を与えます。なぜムダな作業が発生してしまうのでしょうか?その原因は、プロジェクトの進め方にあります。これから紹介する「リーンソフトウェア開発」では、ムダを排除することを中心に、プロジェクトを円滑に進めるための原則が定義されています。
この記事では、プロジェクトのムダな作業を減らしたいエンジニアの方のために、リーンソフトウェア開発の7つの原則をお伝えしていきます。ぜひご一読して、ムダの削減に役立ててください。
リーンソフトウェア開発の概要
リーンソフトウェア開発とは
リーンソフトウェア開発は、トヨタ生産方式(TPS)を参考に考案された開発手法のひとつです。TPSは、ムダを削減することに重点を置いています。TPSの背後には、トヨタウェイと呼ばれる基本理念があり、これがトヨタを世界一の自動車製造企業へ導いたといってもいいでしょう。リーンソフトウェア開発では、ムダを排除することを中心にした7つの原則とそれを実現するための22のツールが定義されています。
次項から、リーンソフトウェア開発の7つの原則を順番に解説していきます。
リーンソフトウェア開発の7つの原則
原則1:ムダを排除する
ソフトウェア開発でのムダとは、顧客に価値を提供しないもの、および顧客が必要としていないものを指します。アメリカの調査会社によると、ソフトウェアの機能の内、64%はほとんど使われていないか、まったく使われていないという調査結果が出ています。これはムダ以外の何物でもありません。
なぜこんなことが起きるのでしょうか?それは、顧客も自分がどんなものが欲しいか分かっていないからです。実際に動くソフトウェアを見て初めて、自分が欲しいものではなかったと気づくのです。
また、顧客と開発チームとのコミュニケーションの問題で、要求が正しく理解されない場合もあります。そうなると、実際に顧客が必要としないものを作ってしまったり、作り込み過ぎてしまったりします。
他にも、過度なタスクの切り替えによるオーバーヘッドや不具合による手戻りなど、ムダが発生する箇所は多々あります。
この問題は、インクリメンタルに少しずつプロジェクトを進めていくことで解決できます。一気に進めるのではなく、必要な部分から顧客と協力しつつ進めていくのです。
原則2:知識を作り出す
ウォーターフォール型開発では、予定通りに進むことを前提としていますが、そううまくはいきません。ソフトウェア開発に同じプロジェクトは2つとなく、常に不確実性と隣り合わせです。いくら綿密に計画しても、スケジュール通りに進めるのは困難でしょう。
そのため、プロジェクトそのものから知識を生み出すことが重要になります。たとえば、顧客からのフィードバックや開発のノウハウ、チームの生産能力などのメトリクスです。プロジェクト固有の知識を早期に得て、プロジェクトの不確実性を最小限に抑えましょう。
原則3:決定をできるだけ遅らせる
ソフトウェア開発では、さまざまなトレードオフを選択しながら開発を進めていきます。場合によっては、決定をする際に十分な情報が得られていないこともあります。もし、その決断を先送りできるなら、より多くの情報を得た後で最善の決断を下せるでしょう。予測による決断ではなく、事実に基づいた決断であるほうが精度は高まります。このため、決定を遅らせることができる、変更可能なアーキテクチャにしておく必要があります。
原則4:できるだけ早く提供する
ムダを排除するためには、顧客からのフィードバックが欠かせません。ウォーターフォール型開発のように、プロジェクトの最終局面まで顧客からのフィードバックを得られないとしたら、大きなムダが発生することは容易に想像できます。そのため、できる限り早急に顧客にソフトウェアを提供する必要があります。
そのためには、CI(継続的インテグレーション)とCD(継続的デリバリー)を行い、定期的に顧客にソフトウェアを提供できるよう、開発フローを構築しなければいけません。少しずつインクリメンタルに作業を行い、顧客からのフィードバックを得て、修正を最小限に抑えましょう。
原則5:権限を移譲する
企業によっては、上級SEのみに権限が与えられ、PGには技術的な決定権がない場合もあります。しかし、本当にソフトウェアの詳細を理解しているのは、他ならぬPGなどの実際に作業をする人達です。そういった人達に決定権を与えることで、ソフトウェアの設計が良くなります。自己組織化されたチームこそが最高の結果を生み出すことができるのです。
原則6:全体を最適化する
最終的な目標は、ソフトウェアを完成させることではありません。完成したソフトウェアが価値を生まなければまったく無意味です。そのため、ソフトウェアのみを考えるのではなく、顧客のビジネスの一部としてソフトウェアを捉え、本当にビジネスに役立つものにしなければいけません。方法としては、「バリューストリームマップ」を作成して、どこを改善するべきなのか検討するとよいでしょう。
原則7:品質を作りこむ
不具合は発見が遅れるほど、修正するコストが増大していきます。実装してすぐの場合と運用を開始してからでは、修正するコストに6倍以上の差が生まれるという調査結果が出ています。早急に不具合を見つけることが、時間のムダを避けることにつながります。CIやTDD(テスト駆動開発)を行い、不具合を早急に発見して、品質を一定に保ちましょう。
まとめ
プロジェクトのムダを削減する方法が見つかりましたか?リーンソフトウェア開発は、アジャイル開発に共通する部分がありますが、源流は別のものです。リーンに興味を持ったなら、他のアジャイル開発も調べてみるとよいでしょう。また、同じくトヨタ生産方式から生まれた「かんばん」もソフトウェア開発に役立ちます。ソフトウェア開発も一種の製造業なので、製造業から生まれるプラクティスが適用できる部分があるのですね。
本ブログは、Git / Subversion のクラウド型ホスティングサービス「tracpath(トラックパス)」を提供している株式会社オープングルーヴが運営しています。
開発の効率化をしたい!もっと便利なツールを使いたい!そんなお悩みをtracpathで解決!
「tracpath(トラックパス)」は、企業内の情報システム部門や、ソフトウェア開発・アプリケーション開発チームに対して、開発の効率化を支援し、品質向上を実現します。
さらに、システム運用の効率化・自動化支援サービスも提供しています。
”つくる情熱を支えるサービス”を提供し、まるで専属のインフラエンジニアのように、あなたのチームを支えていきます。
No Comments