要件定義

5年試行錯誤して見つけた要件定義で使える4つのツールを課題別に紹介

  • このエントリーをはてなブックマークに追加

「要件定義を効率的に進められるツールが欲しい。」

こんなふうに思ったことはないだろうか。

筆者はある。要件定義は多数のステークホルダーと抽象的な内容を幅広く決めていく必要がある。そのため、いざ要件定義が終わって設計に入ってみると、要件定義の決定事項では具体性が乏しく決め直しが発生したことが幾度かあった。

筆者はこの要件定義における課題の原因は4つあると思っている。

1つ目は、プロジェクトの目的と背景の認識をしっかり統一できていないことだ。

構造化して認識を揃えることができていないために、プロジェクトの途中で発注者から想定外の要望が発生したり、自分の検討漏れが発覚することがある。その結果、不適切なタイミングで検討事項が急激に増えてしまい、必要な場所に必要なだけの検討時間を当てられずに全体として質の高いアウトプットが出せなくなってしまう可能性がある。

2つ目は、同じようなことを2回もフォーマットを変えて定義する必要があり、単純に機能の検討に十分に時間を使えていないことだ。

これは「システム利用フロー」の図と「機能一覧」のリストが該当する。つまり、システム利用フローと機能一覧ではほぼ同じようなことを定義していると思っている。それぞれを図解かテキストかで変えて記載をする必要があり、作成コストも管理コストも余計にかかっている。

3つ目は、機能に直結する部分以外での検討に必要以上に時間を取られてしまっていることだ。

これは非機能要件の定義が該当する。非機能要件の定義に必要以上に時間を取られてしまっているために、より検討に時間を当てるべきである機能の検討に十分に時間を使えていない可能性がある。

4つ目は、プロジェクト管理全体に対して無駄が多いことだ。

本来の要件を決める作業に集中する代わりに、管理に多くの時間を取られていたり、タスクを適切な順番で適切なタイミングで完了させることができていない可能性がある。

そこで、これらを解決するためのツールをそれぞれ紹介する。この記事が同じような悩みを抱えている読者の方の手助けになると幸いだ。

それでは、本文で詳しくその使い方についてみていく。

1 目的と背景をわかりやすく整理できてない。効果的なフィードバックをもらえてない時に使えるツール

要件定義においては、目的と背景の認識を合わせる必要がある。その際には、自分の認識をわかりやすく整理し、それを発注者に共有し、適宜フィードバックをもらいながら修正したい時がある。

こんな時に使えるツールを紹介する。

1-1 MindMeister

HP: https://www.mindmeister.com/

目的と背景をわかりやすく整理し、それを効果的に共有するにはMindMeisterがおすすめだ。

これはオンライン上でマインドマップの作成ができるツールだ。特におすすめな点が、他の人を招待することで一緒に作業ができる共有機能がある点だ。

以下の画像はあるプロジェクトで背景・目的をマインドマップを使って整理した例だ。このプロジェクトではざっくりと複数あるサービスを統合したいという要求があった。その際に、要件をより具体的に決めるために、俯瞰した課題の整理と当該プロジェクトでの対応すべき範囲をこれを使って認識合わせをした。

目的と背景をわかりやすく整理し、それを効果的に共有しフィードバックをもらうには、筆者は以下の2点が重要だと考えている。
1 物事の階層構造を視覚的に表現できるか
2 自分の作業しているものを共有できるか

一つ目は、物事を整理する際に「原因・結果」や「課題・打ち手」などを階層構造で表現する必要があるということだ。つまり、ロジックツリーやマインドマップのようなものが有効だ。逆に、階層構造で示されておらずフラットに文章で表現してしまうと、読み手は読解するのに時間と集中力を大幅に取られてしまう。

例えば、この章の冒頭に挙げたロジックツリーの内容を箇条書きで示すと以下のようになる。全体像をを把握する労力が格段に上がることが実感いただけると思う。

二つ目は、フィードバックをしてくれる人と同じものを見て、一緒に作業ができるかということだ。なぜなら、実際にフィードバックする人にも認識をアウトプットしてもらえると認識の統一が効率的に行えるからだ。逆に、フィードバックする側が言葉だけでしか認識を伝えられない場合、適切に認識を統一するのが難しかったり、時間が余計にかかったりする。そのため、同じ作業スペースを共有して修正を実演してもらえるかが大切なのである。

これら2つのポイントをMindMeisterはクリアしているので、かなりおすすめだ。

2  利用フローと機能一覧を作成するのに時間がかかる時に使えるツール

利用フローと機能一覧はほとんど同じことを伝えるだけである。しかし、表現方法が異なるためそれぞれを作成・更新するのに2倍近いコストが必要になる。

理想的にはこの時間を半減させることで、より洗練されたユーザーストーリーを考えたい。そうすることで、設計時の手戻りの可能性を削減することができる。

2-1 ChatGPT + PlantUML

この二つを作成するツールとして、ChatGPTとPlantUMLを使うことをお勧めする。

ChatGPTについては今更説明する必要もないと思う。

一方、PlantUMLは作図ツールというか、作図するための記法だ。例えば、以下のような内容を専用の描画ツールに入力すると、図を作成してくれる。

入力するテキスト

@startuml
|マネージャー|
start
:チケットアサイン;

|エンジニア|
:作業;
:レビュー依頼;

|マネージャー|
:修正依頼;

@enduml

描画ツール

PlantUML Web Server: https://www.plantuml.com/plantuml/uml/SyfFKj2rKt3CoKnELR1Io4ZDoSa70000

ChatGPTの具体的な利用方法は以下の通りだ。要点は、担当者とChatGPTとで役割分担を行い、担当者は徹底的に磨き込まれたユーザーストーリーを考えることだけに専念することだ。それ以外はChatGPTにお願いし、レビューしながら品質を向上させていく。
1 要件定義の担当者がなるべく詳細にユーザーストーリーを箇条書きする
2 ユーザーストーリーをもとにChatGPTにシステム利用フロー図を作成してもらう
3 ユーザーストーリーをもとにChatGPTに機能一覧を作成してもらう
4 上記二つのChatGPTに作成してもらった成果物をレビューし、修正する

以下に実際に利用してみた際の画像を共有しておく。これはコンテンツマーケティング用の社内ツールの要件定義をしていた時のものだ。筆者がユーザーストーリーを考え、それをもとにChatGPTにシステム利用フロー図と機能一覧を出してもらった。

以下に示すユーザーストーリーをPlantUMLのActivity図のスイムレーンで表現してください。
これは全く別のストーリーですが、サンプルとして記法を紹介します。

|マネージャー|
start
:チケットアサイン;

|エンジニア|
:作業;
:レビュー依頼;

|マネージャー|
:修正依頼;

・レビュアーが執筆者にキーワードを提供する
・執筆者はペルソナを設定し、システムに書き込む
・執筆者はレビュアーにレビュー依頼をし、システム上のWebページを共有する
・レビュアーは供されたページを見て、レビューを実施し同一ページにコメントを残す。
・システムがレビュアーのコメントから、内容を把握し、過去に似たコメントがあれば過去の事例をサジェストする(ナレッジのシェアの目的)
・レビュアーは執筆者に対してシステム上からレビュー修正依頼をお願いする
・執筆者はレビューに基づいて内容を修正する
・執筆者は再度システム上からレビュアーに対してレビュー依頼をする
・レビュアーは修正された内容などの差分をチェックし、OKを出す。
・執筆者は合意が取れたペルソナをもとに章立てを検討する。
・執筆者はシステムに対して、ペルソナをもとに章立てをサジェストするように依頼する
・システムは執筆者に対して複数の章立てをサジェストする
・執筆者はその結果をもとにしてもしなくてもよく、章立てを作成する。
・執筆者はレビュアーにレビュー依頼をシステム上で出す。
・レビュアーはレビューする。(ここはペルソナ設定時のレビューと同じ展開)
・レビュアーがOKを出す。
・執筆者は本文を執筆する。
・執筆者は要素を箇条書きして、本文の上手いまとめかたのサジェストをシステムに依頼する
・システムは箇条書きをもとに、文体をいくつか提示してまとめかたをサジェストする
・執筆者はシステムからの援助をもとに文章を仕上げる。
・執筆者はレビュアーにレビュー依頼をシステム上で出す。
・レビュアーはレビューする。(ここはペルソナ設定時のレビューと同じ展開)
・レビュアーがOKを出す。
・レビュアーはシステムからWPに入稿する。

執筆者のユーザーストーリーをもとに機能一覧を作ってください。

3 非機能要件を決定するのに時間がかかる

そもそも非機能要件は、非常に項目が多いため以下の2つを実施するのに非常に時間がかかる。つまり、時間がかかるだけであまりクリエイティブな部分がないタスクだ。
1 網羅的にリストアップし、
2 それぞれの要否を判定する

これを効率的に行うのに効果的なツールを紹介する。

3-1 ChatGPT

非機能要件を決定するのにもChatGPTを活用することをお勧めする。

具体的な活用方法は以下の通りだ。
1 ChatGPTに非機能要件をリストアップしてもらう
2 ChatGPTに各項目の要否・優先度・対応案を作成してもらう
3 ChatGPTの回答をもとにレビューし修正する

以下に実際に利用してみた際の画像を共有しておく。これは、前述のコンテンツマーケティング用の社内ツールの要件定義をしていた時のものだ。

IPAが定めている非機能要件の大項目以下6つと、それぞれの中項目をリストアップして表にまとめてください。
可用性
性能・拡張性
運用・保守性
移行性
セキュリティ
システム環境・エコロジー

上記の表の中項目単位で今回のサービスでの要否、対応内容の案、優先度を三段階で教えてください。また、その優先度になっている理由も他の項目と比較した上での見解を教えてください。

提示の方法としては、以下のような項目がある表形式でお願いします。また、中項目の数だけ表の行が作られることを想定しています。

・大項目、中項目、要否、優先度、対応内容の案、優先度の理由

4 プロジェクトの進捗管理がめんどくさい時に使えるツール

要件定義では、複数のタスクの実行順を意識しつつ個別のタスクを確実に終わらせていく事が必要だ。

なぜなら、複数のタスクが同時並行的に走ることがあり、それぞれのタスクの依存関係や締切はバラバラになりがちだからだ。

そこで、タスクの依存関係や締切を意識しつつ、タスクの内容も一括で管理できるツールを紹介する。

4-1 Notion

このような時に非常に便利なのがNotionだ。Notionは非常に柔軟な用途ができるが、今回はガントチャートとしての活用方法を紹介する。

プロジェクトの進捗管理をする場合において、筆者が重要だと思っていることは以下の2点だ。
1 ガントチャートが作れるか(タスクの締切と依存関係が把握できるか)
2 プロジェクト全体と個別のタスクの確認が同じツールで行えるか(使うツールを少なくできるか)

1点目の重要性は比較的理解してもらいやすいと思う。

2点目が重要だと考えているのは以下の点からだ。
A プロジェクト全体の進捗確認をする際に、それのもとになる個別タスクの進捗情報がすぐに確認できるため
B 情報の重複管理を防ぐことで、更新漏れや更新したことを周知する手間を省くため

例えば要件定義では「機能要件にOOを含めるか」という検討が発生する。この時、私が理想的だと思っている状況では、ガントチャート上のタスクをクリックした先に検討結果や状況が記載されていることになる。

これが実現されると、Aの観点からは次のような良いことが起きる。プロジェクトの管理者がふとしたタイミングでガントを見た時に、実際の進捗を成果物ベースで確認しやすい。これによって、作業者の状況をより把握しやすくなり、ヘルプが必要な箇所がないかなどこちらから声をかけやすくなるため、コラボレーションが進みやすいと考えている。

またBの観点ではタスクの作業をする側にとっては、コミュニケーションツールが絞られるためワークフローが簡略化されるという利点がある。そもそもガントチャートと同じツールで作業をすることによって何かの更新をした時にそれを周知するためにいろいろなツールを使わなくても済む。さらに、いろいろなツールのドキュメントを更新するという作業もないため、更新漏れがなくなりプロジェクト全体としてのコミュニケーションがスムーズになる。

逆に、以前あったプロジェクトではこんな事があった。タスク管理はガントチャートツールで行い、仕様検討はパワーポイントで行い、社内コミュニケーションはSlackを使っていた。

そのため、個別のタスクを開くとパワーポイントへのリンクが貼ってあった。検討内容を確認するためにはタスク管理ツールとパワポの両方を開く必要があったのでとても不便であった。

また、パワポの内容に変更を加えた場合に、Slackとガントチャートツールの両方で関係者に周知をするという作業も発生していた。

さらに、プロジェクトの管理者とタスクの作業者で、完全に使うツールが別れてしまってもいた。つまり、プロジェクトの管理者しかガントチャートツールを使っていなかったのだ。そのためプロジェクト管理者は頻繁に作業者に状況確認をしてガントを更新するという作業をしていた。これだと管理者はリアルタイムなプロジェクトの状況を把握できないし、貴重なプロジェクト全体の工数もステータスの確認というコミュニケーションに取られてしまっていて勿体無い。

Notionはガントチャートとしての使い方ができるため、1点目は問題なくクリアしている。2点目に関してもNotionは個別のページで非常に柔軟な表現ができるため問題がない。例えば、以下のような具合だ。

Notionを使った設計のサンプル

上記のように、検討内容と結果が記載されているため、Notionだけを開いていれば大枠を理解できる。

  • このエントリーをはてなブックマークに追加