概要
会社の評価項目に「プロジェクト管理」という項目がありますが、実際にプロジェクトを管理する業務が少ないケースが多いです。一部のメンバーだけがプロジェクト管理を担当しており、他のメンバーもプロジェクト管理の観点で評価できる仕組みが必要になりました。
今回のブログポストでは、この課題を解決するためのPnP(Project in Project)概念と導入方法について紹介します。
PnPとは
PnPはProject in Projectの略で、現在進行中のプロジェクトのタスクを別のプロジェクトとして切り出して運用する概念です。

- メインプロジェクト(Main Project): チームが管理するサービスレベルのプロジェクトです。Agileではテーマ(Theme)レベルに当たります。
- PnP: メインプロジェクトの中でプロジェクト化して管理できる大きなタスクです。Agileではエピック(Epic)レベルに当たります。
例えば、メインプロジェクトが「サービスA」であれば、PnPとして管理できるタスクは以下のようなものがあります。
- Google Analyticsの導入(データ分析、A/Bテスト)
- テストの導入(Unitテスト、E2Eテスト)
- Sentryの適用(エラー・例外処理)
このようにPnPを活用すれば、プロジェクトの中でさらにプロジェクトを作って運用することができます。
導入の理由
PnP概念を導入する理由は、メンバーの認識を合わせて、開発プロセスの一部として体系化するためです。PnPを通じて、より多くのメンバーがプロジェクト管理の経験を積むことができ、評価にも反映できる仕組みを作ることができます。
進め方
PnPを導入すると決めたら、チームレベルとPnP担当者として、以下のように進めることができます。
チームレベル
- PnPとして進められるプロジェクトをリストアップします。
- その中からPnPプロジェクトを選定します。
- メンバーに割り当てます。
- プランニング時にPnPのタスクも含めるようにします。
PnP担当者
- プロジェクトの目標を設定します。
- プロジェクト概要
- プロジェクト目標
- 範囲
- 方針決定や検討が必要な事項
- スケジュール
- 目標をメンバーに共有して認識を合わせます。
- プロジェクトを細分化します。Agileではユーザーストーリー(User Story)レベルに分けます。
- バックログにチケットを作成します。
- プランニング時に、作成したチケットの中から必須チケットと急ぎでないチケットを区分してスプリントに入れます。
- 開発を進めます。
PnP専用の朝会や定例ミーティングを作る必要はなく、メインプロジェクトに載せる形で進めます。
注意点
- PnPを担当するメンバーもメインプロジェクトのチケットを処理します。
- メインプロジェクトとPnPタスクの量やスケジュールをうまく管理する必要があります。
- PnPはプロジェクト管理スキルの向上と評価のためなので、あまり多くの時間を使わないようにする必要があります。
- メインプロジェクトに必須な機能は必ず処理する必要があるため、優先順位の調整が重要です。メインプロジェクトの担当者とPnP担当者が認識を合わせることが大切です。
PnPの例
サービスAにテスト(Unit、E2Eテスト)を導入するPnPの例です。
- プロジェクト概要
- サービスのバグを事前に発見してバグ発生率を減らす。
- 追加開発によるリグレッションを減らす。
- プロジェクト目標
- UnitテストとE2Eテストの方針を決める。
- UnitテストとE2Eテストを作成する。
- 範囲
- 複雑なロジックを持つコンポーネントや関数に対してUnitテストを作成する。
- ページ単位のテストケースを参考にしてE2Eテストを作成する。
- GitHub Actionsでテストコードを実行する。
- 方針決定・検討事項
- バグやリグレッションが発生した場合、必ずテストケースを書いてから修正する。
- テストケースをベースにE2Eを作成する。
- 複雑なコンポーネントや関数を選定して追加する。
- 開発時に複雑だったり条件が多い場合、テストケースを作成する。
- コードにコメントを入れる必要がある場合、その部分に関するテストケースを作成する。
- スケジュール
- 26ページ、6ヶ月(24週)=1スプリント: 2〜3ページ
- バグ・リグレッション発生時にテストコード作成
- 複雑なコンポーネントや関数: 1スプリントあたり1〜2個
期待される効果
PnPを導入すると、以下のような効果が期待できます。
- PnPを通じて、より多くのメンバーがプロジェクト管理スキルを学ぶことができます。
- メンバーのプロジェクト管理能力を評価しやすくなります。
- PnPを担当したメンバーは、そのプロジェクトをより深く見ることができて、より質の高い機能や製品が生まれます。
完了
これでPnP(Project in Project)の概念と導入方法について見てきました。PnPを活用すれば、メインプロジェクトを進めながらチームメンバーがプロジェクト管理の経験を積むことができ、開発プロセスも体系化できます。チームに合ったPnPプロジェクトを選定して、ぜひ導入してみてください。
私のブログが役に立ちましたか?下にコメントを残してください。それは私にとって大きな大きな力になります!
アプリ広報
Dekuが開発したアプリを使ってみてください。Dekuが開発したアプリはFlutterで開発されています。興味がある方はアプリをダウンロードしてアプリを使ってくれると本当に助かります。