当社のアジャイル開発手法をご紹介いたします  ~アジャイル開発を支える3本の柱とは~

 前回のブログで「アジャイル開発とは? そのメリット/デメリットとは」と題して、ITにおけるアジャイル開発の一般的な点をご紹介いたしました。

アジャイル開発とは? そのメリット/デメリットとは

 今回のブログでは、株式会社システムコンサルタントがアジャイル開発の手法を使ってシステム構築をする場合に重要視しているポイントと、アジャイル開発での進め方をご紹介いたします。

アジャイルで開発する目的

 下記の表の通り、システム構築の管理手法としてアジャイル開発をご要望されるお客様は、近年増加しています。当社へのご依頼もまた例外ではありません。

「2021年度アジャイルプロジェクトの実態」
PMI日本⽀部アジャイル研究会が実施したアンケート調査より

 一般的にアジャイル開発にむいていると言われているのが、ECサイトやスマートフォンアプリなど、状況によってニーズが大きく変化しやすい業務システムです。
 また、新たな事業を展開する場合など、業務システムをスモールスタートで構築する場合にも適しています。

 しかし、これらに該当するからといって、ご要望があればすべてアジャイル開発で、というわけではありません。

 アジャイル開発の目的は、「アジャイルソフトウェア開発宣言」にもあるように、顧客満足を最大化することです。言い換えれば、顧客満足を最大化するためにアジャイル開発があるが、それよりも最適な開発手法が見えているのなら、アジャイル開発にこだわる必要はない、という事にもなります。

 すなわち、お客様のシステム構築案件にとって最適なプロジェクト管理手法をご提案すること。
これが当社が重要視しているポイントです。

 当社では、お客様からシステム構築のご要望を伺う際、案件の内容、規模、スケジュール、コストなどあらゆる面から最適なプロジェクト管理手法が何かを検討しています。
その結果、アジャイル開発手法でシステム構築を行う場合について、以下にご紹介して参ります。

アジャイル開発の主な手法

 まずはアジャイル開発の主な手法を、いくつか簡単にご紹介します。

●スクラム

 スクラム開発は、お客様を含めた共同チームで開発を行います。チーム内のメンバー全員が協力して開発を進めていくことが特徴で、チーム内のコミュニケーションが非常に重要になります。コロナ禍でテレワークが浸透している現状では、コミュニケーションツールの選定も重要です。
 

●エクストリーム・プログラミング(XP、Extreme Programming)

エクストリーム・プログラミングは、プログラマーがペアを組み、「ペアプログラミング」を実施することが特徴です。プロジェクトの仕様や要件の変更に対して柔軟に対応できると言われています。
 

●ユーザー機能駆動開発(FDD、Feature Driven Development)

 ユーザー機能駆動開発は「顧客視点の単位での価値のある機能」を常に中心に据え、優先度の高い要件から開発を進めます。特徴は、他の手法よりもドキュメントを重視することで、情報の伝達は基本ドキュメントで行われることが多いです。

当社のアジャイル開発手法

 株式会社システムコンサルタントでは「スクラム」の手法を元に、アジャイル開発の標準プロセスを確立し、アジャイル開発プラットフォームを構築しています。

●自律分散型チーム

 スクラムの基本は、「チーム」です。

 チームが権限と責任を持ち、仲間と協力して与えられた問題と制約の解決を自律的に行う、自走可能な自律分散型チームを編成します。
 チーム内では明確な目標を立て、活発なコミュニケーションを行うことで、仲間意識や信頼関係を育みながら、本当の顧客満足を実現します。

●アジャイル開発標準プロセス

 当社のアジャイル開発では、
 「開発準備期」→「開発サイクル期」→「リリース準備期」
を標準プロセスと定義しています。

アジャイル開発標準プロセス概念図

「開発準備期」
要求の整理や全体設計、マスタスケジュールの設定を行い、開発サイクル期のためのタスク作成を行います。これによって、アジャイル開発で陥りがちな全体スケジュール管理のあいまいさを排除することができます。
 ・要求を整理し、マスタスケジュールや優先度を設定
 ・モデリングを通してビジネスを見える化し、機能を洗い出す
 ・要求を整理・分解してタスクを作成し、優先度順に並べ替える
 

「開発サイクル期」
 いわゆるアジャイル開発の工程です。
 優先度の高いタスクから順に、スプリントと呼ばれる約2週間単位での開発を行います。
 反復する開発サイクル間で成果物に対するフィードバックの結果や要望などをヒヤリングし、状況や要求の変化に合わせて、都度タスクの優先後の組み換え、分割、取り下げや新規追加に柔軟に対応します。
 

「リリース準備期」
 開発サイクル期ではスプリント単位に随時リリースを行っていきますが、開発のサイクルの中で実施するのが難しいタスクや、業務システム全体としての整合性確認等を、この期間に行います。
具体的には、
 ・回帰的な実施が難しい結合試験や運用試験、非機能検証
 ・最終的なユーザー受け入れ検証
 ・マニュアル作成や運用引継ぎ作業
が対象となります。

 当社のアジャイル開発の標準プロセスは、アジャイル開発のメリットを十分に活かしながら、デメリットはウォーターフォール型の要素を取り入れることで軽減を図っています。

●アジャイル開発プラットフォーム

 アジャイル開発の標準プロセスを実行するための開発プラットフォームも構築しています。

アジャイル開発プラットフォーム構成図

 アジャイル開発を実現する基盤には「Azure DevOps」を、基盤上でアジャイル開発を実現する要素として、
 「Azure Boards」 「Azure Repos」 「Azure Pipelines」
を使っています。

チケット/かんばんを使ったタスク管理ツール「Azure Boards」
 タスクの可視化をメンバーが主体的に行い、仕事の見える化と柔軟な計画の変更を可能にします。
 ボトルネック等が発生した場合でも、状況をチーム全体で共有することでチーム力、生産性の向上が図られ、継続的なカイゼンにつながります。

バージョン管理システム「Azure Repos」
 Azure Reposでは、継続的な構成管理によって安定したバージョン管理ができます。
・開発途中でバグやデグレが混入しないブランチ戦略の実現
・コードレビューの必須化による品質の確保
・誰が何をいつコミットしたかを記録するトレーサビリティの実現
これらが可能になります。

テストやデプロイの自動化ツール「Azure Pipelines」
 Azure Pipelinesでは、ビルド&テストを自動化して開発環境を常に正常に保ちます。また、テスト済の成果物を自動デプロイメントすることで、安全なリリースを可能としています。
・プッシュ時に自動でビルド&テストを実行し、インフラを含めた結合テストも自動化
・デプロイの操作・履歴はAzure DevOpsで集中管理され、属人化を排除

アジャイル開発を支える3本の柱

このように当社では、
 ・自走可能な自律分散型チームの編成
 ・メリットを享受しデメリットを軽減できるアジャイル開発標準プロセス
 ・スプリントを安全確実に実行できるアジャイル開発プラットフォーム
の3本の大きな柱で、お客様満足の最大化を実現しています。

お問い合わせはこちらまで

 「アジャイル開発に興味がある!」アジャイル開発について詳しく聞きたい!」アジャイル開発に着手してみたい!」などのご要望がございましたら、お気軽にお問い合わせください。担当よりご連絡させていただきます。

株式会社システムコンサルタント 第一営業部

最後までお読みいただき
ありがとうございました。