Article
Hinode LaboBlogプロジェクトマネジメントアジャイル型プロジェクトマネジメントを成功に導くために

アジャイル型プロジェクトマネジメントを成功に導くために

アジャイル型のプロジェクトマネジメントは、柔軟性と高速にイテレーションを回すことを重視したプロジェクト管理手法が必要となります。
プロジェクトを成功に導くための具体的な業務フローや、資料フォーマット、使用ツールについてまとめます。

業務フロー

プロジェクトの立ち上げ

アジャイルプロジェクトは、プロジェクトの目的や開発範囲を明確にした上で、関係者が共有できるプロジェクトビジョンを作成します。
このとき、プロジェクトチャーターやビジョンステートメントなど、プロジェクト全体をまとめた短い文書を作成することが一般的です。

プロダクトバックログの作成

プロダクトオーナーが、プロジェクトの要件や機能を優先順位付けしてリスト化したものをプロダクトバックログと呼び、これの作成を行います。
プロジェクトの進行に合わせて随時更新されるため、変更要求に対する柔軟性を意識する必要があります。

スプリントプランニング

チームは、定期的に開催されるスプリントプランニングMTGで、次のスプリントで取り組むタスクを決定します。
このとき、プロダクトバックログから選ばれたタスクを、チームが実行可能な細かくタスクに分解し、スプリントバックログに追加します。

スプリントの実行

スプリントは通常1~4週間の期間で設定され、チームはその間、スプリントバックログのタスクをこなしていきます。
毎日のスタンドアップミーティングでは、進捗状況や問題点を共有し、必要に応じてタスクの優先順位を調整します。
弊社ではこのとき、1on1の進捗確認MTGにならないようファシリテーターに意識させており、最も大切なことは、「問題点を報告させること」だと考えています。
他の人の状況確認でも全体を巻き込んでMTGをする姿勢が大切だと考えており、問題点を報告させやすい会議を心がけるようにしています。

スプリントレビュー

スプリントの終了後、チームはスプリントレビューを開催し、成果物をステークホルダーにデモンストレーションするのが一般的です。
そこでフィードバックを受け取り、プロダクトバックログを更新することで、プロジェクトの方向性を適切に調整します。
ただし、これは一般的な流れであり、チームによってはデモンストレーションを無理強いすることはしていません。

スプリントレトロスペクティブ

スプリント終了後には、チーム内でスプリントレトロスペクティブを開催し、改善点や学びを共有します。
このフィードバックを次のスプリントに活かすことで、プロジェクトの効率性と品質を向上させることができます。具体的な改善アクションをリスト化し、次のスプリントで実施することが重要です。
また、場合によっては賞金を割り振るなど、ちょっとしたゲーム感覚を取り入れて、チーム全体で鼓舞し合う空気も大切だと思っています。
面白いのは、これは回数を重ねると、賞金の額面というよりも、何度も受賞する人が表れ、そういう人にチームからの尊敬や信頼が集まり、チームの求心力をあげることに寄与することがあります。

リリース計画

プロジェクト全体のリリース計画を作成し、プロダクトの完成予定日やリリースする機能を明確にします。
リリース計画はプロジェクトの進捗状況に応じて柔軟に変更されるため、定期的な見直しが必要です。
また、このときテストの自動化が進んでいることが望ましく、人力で何度も全体的なテストを行っていては高速にイテレーションを回すことができません。
テスト自動化については技術系ではない経営層の方々に、予算を理解してもらうのが難しいところですが、それもアジャイルプロジェクトを円滑に進めるために必要なことだと考え、スクラムマスターも協力しながら、経営層への説明責任を諦めてはいけません。

評価とフィードバック

アジャイル型プロジェクトマネジメントでは、定期的にプロジェクトの評価とフィードバックを行います。
これには、KPI(主要業績評価指標)やバーンダウンチャートなどの定量的指標を用いて、プロジェクトの進捗や品質を評価することが一般的です。

プロジェクトのクロージング

プロジェクトが完了した際には、プロジェクトの成果物や達成度を評価し、ステークホルダーと共有します。また、プロジェクトのレッスンレポートを作成し、今後のプロジェクトに活かすための知見を蓄積します。

資料フォーマット

アジャイル型プロジェクトマネジメントでは、以下のような資料フォーマットが用いられます。

プロジェクトチャーター/ビジョンステートメント

プロジェクトの目的、スコープ、関係者を明確化する概要ドキュメントです。

プロダクトバックログ

要件や機能を優先順位付けしてリスト化した資料です。優先順位づけはプロダクトオーナーが決めます。

スプリントバックログ

該当スプリントで取り組むタスクをリスト化した資料です。

バーンダウンチャート

スプリントの進捗状況を可視化するためのグラフです。

KPIレポート

プロジェクトの業績評価指標をまとめたレポートです。

リリース計画

プロジェクト全体のリリーススケジュールや機能を明確化する資料です。

レッスンレポート

スプリント終了後に改善点や学びを共有するための資料です。

プロジェクトレビュー報告書

プロジェクトの成果物や達成度を評価し、ステークホルダーと共有する資料です。

レッスンレポート

プロジェクトの終了後に、今後のプロジェクトに活かすための知見を蓄積する資料です。

手法、ツール

アジャイル型プロジェクトマネジメントは、以下のような手法やツールを活用してプロジェクトを効果的に進めます。

スクラム

インクリメンタル開発に焦点を当てたアジャイル手法で、スプリントと呼ばれる短期間のイテレーション開発を行います。スクラムマスターがチームのファシリテーターとして、スプリントの進行をサポートします。

カンバン

タスクの進捗状況を可視化するための手法で、カンバンボードを使ってタスクの状態(例:未着手、進行中、完了)を一目で把握できるようにします。
このとき重要なことは一つのタスク(チケット)を左から右に流していくことで、右から左に差し戻すのはチームの士気が下がるため、弊社としてはなるべく避けるようにしています。
1つのタスクの中で例えば追加要望があった際には、新しいチケットを作成して左から右に流していく方が、開発者の精神的な負荷が低いと考えています。

デイリースタンドアップ

チームが毎日開催する短時間のミーティングで、前日の成果、今日の予定、問題点や障害について共有します。弊社は、問題の早期解決をこれの一番大切な目的と位置付けています。

ペアプログラミング

2人の開発者が1台のコンピュータで共同作業を行う手法で、コードの品質向上や効率的な知識共有が期待できます。
実際には中小企業でなかなかそこまでの人員を割けないため、これはケースバイケースかなと思いますが、大手企業でもペアプログラミングは実践されているため、効果は期待できます。
最近であればChatGPTをペアプログラミング相手代わりにすることで、開発者の生産性を大幅に向上できると考えており、弊社でもそれに取り組み始めています。

テスト駆動開発(TDD)

コードの品質を向上させる開発手法で、実装前にテストケースを作成し、そのテストにパスするコードを書くことで、バグの発生を抑えることができます。
弊社はあまりこれが得意ではありませんし、ケースバイケースだと考えています。
新規の0=>1のプロジェクトにおいては途中で大きく仕様が変わったり、開発者も(特に海外人材)まだあまり全体像がわかっていない中で「自身で書く」テストコードには多分に認識違いを含んだものを書いている可能性があります。
そのためウォーターフォール開発とアジャイル開発を組み合わせて、新規の0=>1のプロジェクトにおいてはややウォーターフォール開発のような進め方を行い、
ある程度コードが成熟してきた段階で、TDDを入れていくことがあります。

ツールの活用

アジャイル型プロジェクトマネジメントでは、プロジェクト管理ツール(例:Jira、Trello、Asana、Backlog)を活用してタスクの追跡や進捗管理を行います。また、コミュニケーションツール(例:Slack、Microsoft Teams)を使って、チーム内の情報共有を円滑に行います。

コンティニュアスインテグレーション(CI)/コンティニュアスデリバリー(CD)

開発プロセスの自動化を行う手法で、CIではコードの統合と自動テストを、CDではソフトウェアのリリースを自動化します。これにより、開発サイクルを短縮し、プロジェクトの効率性と品質を向上させることができます。
前述の通り、こうした取り組みを経営層に理解をしてもらうための説明責任から逃げてはこれが実現できないことがあります。

リーン開発

リーン思考を取り入れた開発手法で、無駄を排除し、効率的なプロセスを構築することを目指します。
リーン開発では、顧客価値に直結する機能の開発に集中し、不要な作業を最小限に抑えることで、プロジェクトの効率性を向上させます。
そのため、弊社の経験上はマーケティングの責任者もこのアジャイルチームに加わることが効果的だと考えており、常に顧客価値に直結する施策を、時に開発者からの知識も拾い上げながら考案していく必要があります。

まとめ

アジャイル型プロジェクトマネジメントの成功には、以下の要素が重要です。

・コミュニケーション: チーム内外のコミュニケーションが円滑であることが、アジャイル型プロジェクトマネジメントの成功に不可欠です。定期的なミーティングやレビューを通じて、情報共有やフィードバックの受け取りを大切にしましょう。
・イテレーション: プロジェクトを短期間の反復開発に分割し、ステークホルダーからのフィードバックを取り入れてプロダクトの改善を行います。この反復性が、プロジェクトの効率性と柔軟性を高める要素となります。
・フィードバックループ: プロジェクトの各段階でフィードバックを受け取り、適切な改善を行うことが重要です。スプリントレビューやレトロスペクティブを通じて、フィードバックを活用し、プロジェクトの品質向上に努めます。
・自己組織化されたチーム: チームが自己組織化され、問題解決や意思決定を自律的に行うことが求められます。チームメンバーがそれぞれの役割や責任を理解し、協力してプロジェクトを遂行することで、効率的かつ柔軟なプロジェクト進行が可能となります。また特に中小企業の場合は経営層がCPOやPOの権限を持っていることが多く、悪いことではありませんが現場に委ねるタイミングが、会社の成長フェーズによって必要になると思います。
・顧客価値の最大化: 顧客や利用者に価値を提供することを最優先に考えます。プロダクトバックログの優先順位付けやリリース計画の見直しを通じて、顧客価値に直結する機能の開発に焦点を当てることが重要です。
・継続的な改善: 継続的な改善を行い、プロジェクトの効率性や品質を高めることを目指します。スプリントレトロスペクティブやレッスンレポートを活用し、チームが学んだことを次のスプリントやプロジェクトに活かすことが求められます。

アジャイル型プロジェクトマネジメントを成功に導くためには、以上の要素を意識し、柔軟かつ効率的なプロジェクト進行を実現することが重要です。チーム全体、あるいは会社全体がアジャイルな思考を持ち、適切な手法やツールを活用しながら、プロジェクトの目標に向けて協力して取り組むことが求められます。