アジャイル開発
アジャイル開発とは?
アジャイル開発(アジャイルソフトウェア開発)とは、1990年代半ばに出現した、いくつかの軽量ソフトウェア開発プロセスの総称です。アジャイル開発が登場する以前は、ウォーターフォールと呼ばれる重量級の開発プロセスが用いられていました。とは、1990年代半ばに出現した、いくつかの軽量ソフトウェア開発プロセスの総称です。アジャイル開発が登場する以前は、ウォーターフォールと呼ばれる重量級の開発プロセスが用いられていました。
ウォーターフォールモデルでは、要件定義から設計、プログラム開発、テストといった工程を経て完成品が顧客に納品されていました。この手法のデメリットは、前工程が完了しないと次工程に進めないため、プロジェクト全体が長期化することや、その間に要求が変わっても後戻りできず、納品後にトラブルとなるケースが考えられます。その結果、満足度の低いシステムや使えないシステムになってしまうこともあります。
このような課題の解決策として、アジャイル開発が登場します。
アジャイル開発では、開発対象を小さな機能単位に分割し、短い期間で開発を行います。この短い期間の中で設計やプログラム開発、テスト、リリースまでを実施し、このサイクルを反復することで、手戻りを最小限に抑えながら、システムの価値を最大化し、ひいては顧客満足度の高いシステムを開発していきます。では、開発対象を小さな機能単位に分割し、短い期間で開発を行います。この短い期間の中で設計やプログラム開発、テスト、リリースまでを実施し、このサイクルを反復することで、手戻りを最小限に抑えながら、システムの価値を最大化し、ひいては顧客満足度の高いシステムを開発していきます。
例えば、代表的なアジャイル開発手法であるスクラムの場合、5~9名程度のチームを編成し全員が実装からテストまでを受け持ち、スプリントと呼ばれる開発サイクルを反復します。プロダクトオーナーは利用者代表であり製品やサービスに対する最終責任を負います。利用者を直接巻き込んで動く実物で確認しながら開発を進めるのです。
日本でなかなか普及しないアジャイル開発
アジャイル開発はシステム開発手法として世界的に広く普及し、日本国内でもネット関連企業やベンチャー企業ではアジャイル開発が主流となっています。しかしながら、日本の企業内システム、いわゆるエンタープライズの分野では部分的には導入されているものの、基幹系システムの開発など大規模開発にはなかなか導入が進みません。例えば、JUAS(一般社団法人 日本情報システム・ユーザー協会)が発行しているソフトウエアメトリックス2016年版の記事によれば、2016年度の会員の回答数ウォーターフォール102件に対し、アジャイル開発はたった4件でした。
日本ではシステム開発を顧客(ユーザ部門)がSIベンダーや情報子会社に一括請負契約で開発委託することが多く、まずは要件と予算を確定させ、受託者は要件を満たす成果物を納期通りに納品することが求められます。発注者の都合で要件を下流工程で変更することは想定されていません。
また、ユーザ部門ではこのような請負契約で外部に開発委託する文化が根付いているため、通常、ユーザ部門の業務を掌握しITにも知見があるプロダクトオーナーが務まる人財は多くはいません。ユーザ部門が主体となってアジャイル開発を実施しようとしてもすぐには難しいひとつの理由でしょう。
一方、開発を受託する側では永年続いたウォーターフォールに最適化されてきた分業体制、厳格な品質管理体制が確立されています。従来のSE、プログラマーではなく、一人で設計から実装、テストまで何役もこなす多能工(フルスタックエンジニア)が要求されるアジャイル開発にすぐには対応できないのが現実です。
このように日本のエンタープライズ分野ではアジャイル開発が普及する環境が整っていないのです。
ハイブリッドアジャイルとは?
そこで、我々が提唱しているのが、日本で主流のウォーターフォールモデルと海外で主流のアジャイル開発のメリットを融合させた「ハイブリッドアジャイル」です。
ハイブリッドアジャイルは要件変更に柔軟に対応できるアジャイル開発プロセスに、一括請負契約での開発に適したウォーターフォールのプロセスを取り入れたものです。ハイブリッドアジャイルは、要件変更にも柔軟に対応しながら、管理された範囲内に開発予算のブレを押さえることができます。一括請負開発にも対応することができるので、日本の企業に容易に導入することができるのです。
最大の特徴は要件定義を実施することです。アジャイル開発といえどもできる限り早期に要件を固めるのが理想です。ハイブリッドアジャイルの要件定義では、ある程度の要件変更を許容する前提で開発計画を立てます。要件変更を前提としているのでドキュメント作成は最小限にとどめます。ドキュメントは最終納品までに完成図書として作成します。また、品質の担保として総合テスト、受入れテストはウォーターフォールと同様に実施します。
それでは、ハイブリッドアジャイルプロセスを詳しく見ていきましょう。
楽々Framework3によるハイブリッドアジャイルプロセス
ここでは、アジャイル開発ツール楽々Framework3を使ったハイブリッドアジャイルプロセスについて説明します。アジャイル開発において生産性はアジャイル開発ツールにかかっています。超高速開発ツール楽々Framework3をハイブリッドアジャイルに適用することは極めて効果的です。通常、アジャイル開発は変更要求に柔軟に対応することで顧客満足度向上につなげることが目的であり、それだけでは生産性が向上することはありません。
しかしながら、楽々Framework3を適用することで生産性が向上するだけでなく、短期間でフィードバック可能な高速イテレーションによりアジリティ向上にもつながるのです。
要件定義
要件定義の手法はウォーターフォールと大きく変わりませんが曖昧さをある程度許容します。すなわち、開発イテレーションフェーズでの要件の追加・変更をある程度受け入れることとします。この「ある程度」を予算として顧客と合意しておくことが重要です。
要件定義のアウトプットとしては要件を記述した要件定義書及び、データモデル(概念レベル)と画面定義を作成します。データモデルを準備することで、開発イテレーションフェーズですぐさまプログラムを稼働させることが可能になります。
スパイク(アジャイル開発への移行準備)
ウォーターフォールの手法で定義された要件定義をアジャイル開発につなぐために、ストーリ(ユースケース)に変換しさらにシナリオ(ユーザストーリ)に落とします。ストーリは、例えば「顧客情報を登録する」、「顧客情報を検索する」というような粒度、シナリオではさらに「氏名はXXXX、住所はXXXX…」というような具体的なイメージです。
実はこの1ストーリが楽々Framework3の最大の特徴である機能部品パターンひとつに対応します。このほかに非機能要件のストーリも作成します。
このフェーズで楽々Framework3のパターンとのフィットアンドギャップ分析を行い、できる限り標準部品を活用するように工夫します。できないものは実現方法を検討します。こうすることで開発イテレーションがスムーズに進みます。
開発イテレーション
楽々Framework3を用いた場合の開発イテレーションの期間は通常2~4週間で、これを反復します。この開発イテレーション内で、要件定義で決めた優先順位の変更や要件変更を吸収します。
まず、イテレーション計画で、1回のイテレーションで実施するストーリを優先度順に選択し、実際のタスクに落とし込みます。タスクは画面作成、データベース(テーブル)作成、プログラミング、テスト用コード作成、ユニットテスト等です。それぞれのタスクをチケット(カンバン)として管理し開発を行います。開発を細かい粒度のタスクに分割してチケットで管理することで進捗管理や負荷分散が容易になります。
ツールとしては楽々Framework3にJUnit、Seleniumなどの自動テストツール、及びチケット管理のためにRedmineを活用します。楽々Framework3にはJUnit,
Selenium,
Redmineと連携して、チケット管理を支援する機能、テスト用コードやテスト仕様書を自動生成する機能が実装されており、開発イテレーションプロセスを強力にサポートします。
(効率的に開発を行う機能)
何より、1ストーリに対応した機能部品(パターン)が当該テーブルを読み込み動くプログラムを自動的に組み立てるため、まさに動くプログラムを見ながら細部を調整するような開発が可能となり、短期間、高速な開発イテレーションを実現します。
従来設計のみを担当していたシステムエンジニアも楽々Framework3を利用することで、実装やテストの敷居を下げ設計から実装、テストも行える多能工を実現させます。仕様確認レビューでは、ユーザ向けに成果物を披露する場を設け、振り返りでは、次のイテレーションに向け進め方に対するフィードバックを行います。
総合テスト・受け入れテスト
総合テストや受入れテストは従来通り日本の厳しい品質基準に沿ったテストを実施します。ソフトウェア開発に必要でない作業やドキュメントは可能な限り省略しますが、保守に必要となる保守ドキュメントをこのフェーズで生成します。楽々Framework3からはプログラム仕様書やデータベース仕様書等のドキュメントが自動生成されますので、この保守ドキュメント作成工数も大幅に削減します。
効果
楽々Framework3を利用してハイブリッドアジャイルを実践することで、次のようなメリットを享受できます。
日本のウォーターフォールによる一括請負文化にマッチします
日本の契約問題や品質の厳格さ、プロジェクト特有の開発標準などがあり、そのままのアジャイルプロセスでは適用が難しい日本の事情にマッチしています。
アジャイル開発の導入のための敷居を下げます
楽々Framework3を使ったハイブリッドアジャイルであれば、品質面や教育面で、アジャイル開発の適用に不安をお持ちのお客様にも、アジャイル開発を検討するきっかけにしていただけるのではないでしょうか。
イテレーションにより要件変更を柔軟に受け入れ、利用者が本当に望むシステムを提供します
要件定義で曖昧さをある程度許容しているため、イテレーション内で使い勝手や機能面の変更要求が受け入れられるようになり、システムの価値が最大化され、ひいては顧客満足度の向上につながります。
楽々Framework3による支援機能
超高速開発ツール楽々Framework3はハイブリッドアジャイル開発をサポートする機能が実装されています。ハイブリッドアジャイル開発と楽々Framework3を組み合わせることにより、高い生産性とアジリティを両立することが可能になります。
高速イテレーション開発
超高速開発ツールである楽々Framework3はストーリに対応したプログラムを1クリックで即座に自動組み立てします。開発者は動くプログラムを楽々Framework3の開発環境のGUIであるRakStudioを使って動きを確認しながらパラメータ変更主体のカスタマイズを行います。ここまでの作業でプログラムの90%程度が完成します。特にユーザ部門の確認が必要な画面のレイアウトや画面の動きはノンプログラミングです。これにより素早くユーザ部門のフィードバックを受けることができ、手戻りの少ない、ユーザ満足度の高い開発が可能となります。
チケット駆動開発
開発イテレーションのストーリーと楽々Framework3の機能部品であるパターンは一対一に対応します。ストーリーが決まれば使うパターンが決まります。パターンが決まれば設定項目やテストケースがある程度決まります。この特徴をうまく活用すれば、チケット単位に最も効率のよい開発者に仕事を割り振り、パターン毎に実装方法やテストケースのガイドラインを作成するなど、より効果的にチケット駆動開発を実践することが可能です。詳細は、アサヒビジネスソリューションズ株式会社様の事例、『楽々Framework3で「部品組み立て型開発」を極める』をご覧ください。
楽々Framework3はこのチケット駆動開発をサポートする機能も装備しています。具体的にはチケットの完了に連動して楽々Framework3のソースコード等をコミットする構成管理機能です。チケットがなければコミットされず、チケットの完了状況とソースコードの整合性を保ちます。
テストファースト
楽々Framework3はJUnitによるテストコード作成を支援します。具体的にはプログラム実行パラメータやデータベース処理のモック作成、結果の出力を行います。さらに、楽々Framework3は登録されたプログラム設計情報から、プログラムの機能を網羅したテストケースを自動生成します。さらに、テストケースを自動実行するためのテストスクリプト、すなわちSeleniumのスクリプトを生成します。開発者は自動生成されたScriptに追記していくだけなので、Script作成工数が大幅に削減されます。
(効率的に開発を行う機能)
ミニマムドキュメント
楽々Framework3は開発GUIであるRakStudioで設定した設計情報を画面で確認するだけでなく、あらかじめユーザがレイアウト定義したEXCELのレイアウトに合わせて設計情報を仕様書として出力することが可能です。さらに、ある項目の変更がどのテーブルやプログラムに影響を与えるかなどの影響範囲の分析もクリックだけで最新の状況を確認することができます。これらの機能により、保守用のプログラム仕様書やデータベース設計書を作成する手間を大幅に削減し、ドキュメント作成の手間をミニマムに押さえ込みます。
アジャイル開発についてさらに詳しく知りたい方へ
アジャイル開発の概要や代表的なアジャイル開発手法について、下記ページにて詳しく解説しています。さらに詳しく知りたいという方は、ぜひご覧ください。
アジャイル開発