Part 1 オリエンテーション
第2章 価値から機能を考える
第1章では、研修全体を一つの仕事の流れとして見るための地図を作った。 第2章では、その地図の最初の地点へ進む。 つまり、作る前に価値を見る。
実務では、依頼が最初から整理された要件として届くとは限らない。 むしろ多くの場合、最初に届くのは「一覧画面がほしい」「通知を出したい」「CSVを出せるようにしたい」のような、作りたいものの名前である。 しかし、作りたいものの名前は、まだ問題そのものではない。
エンジニアが最初に考えるべきことは、画面やボタンの形ではない。 誰が、何に困っていて、作った後に何が良くなれば成功なのかである。 ここを確認しないまま作り始めると、動くものはできても、役に立つものにならないことがある。
この章でできるようになること
この章のゴールは、一人で事業判断を背負えるようになることではない。 小さな機能要求を受け取ったときに、すぐ実装名へ飛ばず、確認すべきことを自分の言葉で分けられるようになることである。
この章を読み終えたら、次のことができる状態を目指す。
- 相手の要望から、ユーザー、課題、期待する成果を分けて書ける。
- 直接使う人と、影響を受ける人を分けて考えられる。
- 作るものと、作った後に起きてほしい変化を分けられる。
- 成功状態を、あとで確認できる言葉にできる。
- 時間、データ、権限、運用、既存システムの制約を書き出せる。
- 初回リリースでやること、やらないことを説明できる。
- 案を一つだけ出すのではなく、価値、コスト、リスク、運用負荷で比べられる。
- Decision Memoに、採用案、見送った案、理由、確認事項を残せる。
最初から完全な答えを出す必要はない。 大事なのは、分かっていること、まだ確認していないこと、仮に置いている判断を混ぜないことである。
要望と課題を分ける
第1章で見た依頼をもう一度使う。
「メンターが担当受講者の支援ステータスを一覧で見られるようにしたい」
この文には、すでに一つの実装案が含まれている。 「一覧で見られるようにしたい」という部分である。 しかし、ここですぐに一覧画面へ項目を追加する話へ進むと、重要な確認を飛ばしてしまう。
まず分けるべきなのは、要望、課題、成果である。
- 要望:相手が最初に言った、作りたいものや変えたいもの。
- 課題:現在困っていること、時間がかかっていること、間違いや見落としが起きていること。
- 成果:作った後に、利用者の仕事がどう良くなるか。
似た言葉として、output と outcome もよく使われる。
- Output:作って提供するもの。画面、API、CSV、通知、ドキュメントなど。
- Outcome:作った結果として起きてほしい変化。見落としが減る、確認時間が短くなる、次の対応が早くなるなど。
- Success signal:その変化が起きたかを確認する手がかり。確認にかかった時間、見落とし件数、問い合わせ件数、利用者の観察結果など。
要望、課題、成果を分けると、同じ「一覧で見たい」という要望でも、まったく違う機能になる可能性が見えてくる。
たとえば、課題が「支援が必要な受講者を見落としやすい」なら、ステータスの表示や絞り込みが効くかもしれない。 課題が「上長への週次報告に時間がかかる」なら、一覧よりも集計やエクスポートが重要かもしれない。 課題が「メンター同士で判断がずれる」なら、ステータスの定義や更新ルールの整備が先かもしれない。
要望は入口である。 課題は理由である。 成果は、作った後に確認する変化である。 この三つを混ぜないことが、価値から考える第一歩になる。
価値を確認する質問
価値を見るとは、抽象的なビジネス用語を並べることではない。 相手の仕事がどう変わればよいのかを、具体的に聞くことである。
支援ステータスの依頼を受けたら、たとえば次のように確認する。
- 誰がこの一覧を見るのか。
- いつ見るのか。毎日なのか、週次なのか、面談前なのか。
- 何を判断するために見るのか。
- 今はどうやって支援が必要な受講者を見つけているのか。
- 今の方法では、何に時間がかかっているのか。
- 見落としが起きると、誰にどんな影響があるのか。
- 作った後、何が減れば成功と言えるのか。確認時間か、見落とし件数か、報告作業か。
これらの質問は、相手を問い詰めるためのものではない。 作るものを小さくし、最初に確認すべき成果を明確にするためのものだ。
たとえば、確認の結果、次のように整理できたとする。
- 利用者:メンター。
- 現在の課題:担当受講者の状態を複数の場所で確認していて、支援が必要な人を見つけにくい。
- 期待する成果:支援が必要な受講者を早く見つけ、声かけや面談につなげられる。
- 候補機能:担当受講者一覧に支援ステータスを表示する。ステータスで絞り込める。ステータスを更新できる。
ここまで整理できると、依頼は単なる「一覧に項目を追加する」ではなくなる。 目的は、支援が必要な受講者を早く見つけ、次の対応へつなげることだと分かる。
成功状態を、見て確かめられる言葉にする
「便利にする」「見やすくする」「効率化する」は、方向としては間違っていない。 しかし、そのままだと実装後に成功したかどうかを判断しにくい。 価値を扱うときは、成功状態をあとで確認できる言葉に近づける。
たとえば、次の表現だけではまだ弱い。
メンターが受講者の状況を見やすくする。
少し具体化すると、確認しやすくなる。
メンターが担当受講者の最終ログ日時、困っていること、提出状況を一覧で確認し、
当日声をかける受講者を選べるようにする。
さらに、観察する手がかりも置ける。
初回確認では、メンターが一覧を見て支援が必要そうな受講者を選べるかを確認する。
可能なら、確認にかかった時間と、見落とした受講者がいなかったかも記録する。
数字を必ず置かなければならないわけではない。 ただし、成功状態が「気持ち」だけで終わると、テストやレビューやリリース判断につなげにくい。 観察できる行動、減らしたい手間、避けたい失敗のどれかに近づけて書くと、後の章で扱いやすくなる。
制約を見る
価値が見えても、すべてを一度に作れるとは限らない。 実務には制約がある。
制約とは、実装範囲を決めるときに無視できない条件である。 時間、データ、権限、セキュリティ、運用、既存システムとの関係などが含まれる。
支援ステータス機能なら、次のような制約が考えられる。
- 時間の制約:初回リリースまでに使える日数が限られている。
- データの制約:既に受講者データはあるが、支援ステータスを保存する場所はまだない。
- 権限の制約:メンターは担当受講者だけを見られるべきかもしれない。
- 運用の制約:ステータスの更新ルールを誰が決めるのかがまだ曖昧かもしれない。
- 既存システムの制約:現在の一覧画面の構成やAPIの形を大きく変えられないかもしれない。
支援状況や困っている内容には、受講者本人にとって慎重に扱うべき情報が含まれることがある。 そのため、価値が高そうに見える機能でも、誰が見てよいか、どこまで表示してよいか、ログやCSVに残してよいかを確認する必要がある。 価値の確認と、権限やセキュリティの確認は別の話ではない。 役に立つものほど、見せ方と扱い方を間違えると影響が大きくなる。
制約は、やる気を削ぐために書くものではない。 安全に小さく始めるために書く。 制約が見えていれば、今回やることと、今回はやらないことを説明しやすくなる。
MVPは、何を確かめるかで決める
MVPは Minimum Viable Product の略である。 日本語では、最初に価値を確かめるための最小構成と考えるとよい。
MVPを「機能を削った版」と考えてはいけない。 MVPは、何を確かめたいのかから決める。
支援ステータス機能で最初に確かめたいことが、「メンターが支援の必要な受講者を早く見つけられるか」だとする。 その場合、初回MVPは次のようにできる。
- 担当受講者一覧に、現在の支援ステータスを表示する。
- ステータスの意味を画面上で分かるようにする。
- 支援が必要な受講者が一覧で見つけられるかを確認する。
一方で、次のものは初回から入れない判断もできる。
- ステータス更新履歴の詳細表示。
- Slackやメールへの通知。
- CSV出力。
- 複雑な集計ダッシュボード。
これらが不要だという意味ではない。 最初に確かめたい成果に対して、今すぐ必要ではないという意味である。 MVPは、価値を小さくするのではなく、確認する順番を決めるための考え方である。
また、小さく作ることと、雑に作ることは違う。 初回MVPでも、次のような条件は後回しにしにくい。
- 見てはいけない人に情報が見えないこと。
- 表示されるステータスの意味を利用者が誤解しにくいこと。
- 既存の一覧画面やAPIを壊さないこと。
- 確認したい成果に必要な最低限のデータがそろっていること。
「あとで直す」は、価値検証に関係ない飾りを後回しにするときには有効である。 しかし、権限、個人情報、データの正しさ、利用者の誤解に関わる部分まで雑にすると、価値を確かめる前に信頼を失う。
Must、Should、Could、Won’tで期待値をそろえる
初回リリース範囲を決めるときは、Must、Should、Could、Won’tで分けるとよい。 この分け方は MoSCoW と呼ばれることがある。 ただし、ここでは名前を覚えることより、関係者の期待値をそろえる道具として使うことが大事である。 単なる優先順位表ではなく、今回の目的に対して何が必要で、何を後回しにするのかを合意するために使う。
- Must:今回入れなければ、目的を確認できないもの。
- Should:できれば入れたいが、初回確認の必須条件ではないもの。
- Could:余裕があれば入れたいもの。
- Won’t:今回はやらないと明示するもの。
初学者が特に書きにくいのは Won’t である。 やらないことを書くと、消極的に見える気がするからだ。 しかし実務では、Won’tを書かない方が危ない。 今回やらないことが曖昧なままだと、レビュー中やリリース直前に期待のずれが表面化する。
支援ステータス機能なら、たとえば次のように分けられる。
- Must:担当受講者一覧に支援ステータスを表示する。
- Should:ステータスで一覧を絞り込める。
- Could:ステータスごとの件数を表示する。
- Won’t:初回では通知、CSV出力、詳細な更新履歴は扱わない。
この分け方があれば、作る範囲だけでなく、作らない理由も説明できる。
案を比べて選ぶ
実装案は、一つだけとは限らない。 最初に思いついた案が悪いとは限らないが、他の案と比べていないと、なぜそれを選んだのかを説明しにくい。
支援ステータス機能なら、たとえば次のように比べられる。
| 案 | 内容 | 価値 | コスト | リスク | 運用負荷 |
|---|---|---|---|---|---|
| A | 担当受講者一覧に支援ステータスを表示する | メンターが毎日確認しやすい | 中 | 権限設計と表示定義が必要 | 低 |
| B | CSV出力を先に作る | 既存の表計算や週次報告に使いやすい | 低から中 | 最新状態が分かりにくい。ファイルの扱い方に注意が必要 | 中 |
| C | 自動通知まで作る | 支援が必要な受講者に早く気づける | 高 | 誤通知、通知疲れ、通知条件の調整が必要 | 高 |
ここでのコストは、実装時間だけではない。 レビュー、テスト、データ移行、権限確認、運用後の問い合わせ対応も含めて考える。 リスクも、コードが難しいかだけではない。 見せてはいけない情報が見える、古い情報で判断する、通知が多すぎて無視される、といった利用者側の失敗も含める。
案比較の目的は、完璧な採点表を作ることではない。 今回の目的に対して、なぜその案から始めるのかを説明できるようにすることである。
判断をDecision Memoに残す
価値、制約、MVPを考えたら、判断を短いメモに残す。 これがDecision Memoである。
Decision Memoは、立派な設計書ではない。 なぜその範囲にしたのか、何を採用し、何を今回は見送ったのかを、後から読めるようにするためのメモである。
たとえば、次のように書ける。
背景: メンターが担当受講者の状況を確認するとき、支援が必要な人を見つけにくい。
ユーザーと課題: メンターが、担当受講者の支援状況を短時間で把握したい。 現在は複数の情報を見比べる必要があり、見落としが起きやすい。
期待する成果: メンターが担当受講者一覧を見て、当日声をかけるべき受講者を選べるようにする。 初回確認では、支援が必要な受講者を一覧上で見つけられるか、ステータスの意味を誤解しないかを見る。
比較した案:
- A: 一覧に支援ステータスを表示する。
- B: CSV出力を先に作る。
- C: 自動通知まで作る。
採用する案: 案A。担当受講者一覧に支援ステータスを表示する。 初回では、支援が必要な受講者を一覧上で見つけられるかを確認する。
今回やらないこと: 通知、CSV出力、詳細な更新履歴、複雑な集計は初回では扱わない。
理由: 初回の目的は、支援対象を見つけやすくなるかを確認することだからである。 通知や集計は、一覧表示の利用状況と運用方法を確認してから判断する。
確認方法: メンターが担当受講者一覧を見て、支援が必要な受講者を見つけられるかを確認する。 支援ステータスの意味が画面上で誤解なく読めるかも確認する。
リスクと確認事項: メンターが担当受講者以外の情報を見られないようにする必要がある。 支援ステータスの定義と更新ルールが曖昧なままだと、メンターごとに判断がずれる可能性がある。 困っている内容を一覧に出す場合は、表示してよい範囲を確認する。
この程度の短いメモでも、後の章で大きな意味を持つ。 第9章でユースケースを書くとき、第13章でテスト観点を作るとき、第23章で本番前確認をするとき、ここで決めた成果と範囲へ戻れるからである。 新しい事実が分かったら、Decision Memoは更新してよい。 ただし、過去の判断を消すのではなく、何が分かって判断を変えたのかを残すと、後から経緯を追いやすい。
価値整理で起きやすい誤解
- 要望の表現をそのまま実装チケット名にする。
- 利用者を確認せず、依頼者と利用者を同じだと思い込む。
- OutputとOutcomeを混ぜて、作るものを成果だと思い込む。
- 成果を決めずに、画面やデータの設計へ進む。
- 未確認のことを、都合よく決まった事実として書く。
- Won’tを書かず、今回やらないことを曖昧にする。
- MVPを、価値を確かめる範囲ではなく、単なる機能削減版として扱う。
- 小さく作るという理由で、権限や個人情報の確認を後回しにする。
Decision Memoで確認すること
feature-value-breakdown.md と decision-memo.md を作り、作る理由と今回作らない範囲を説明する。
feature-value-breakdown.mdでは、要望、ユーザー、現在の課題、期待する成果、候補機能、制約、不明点を分ける。 特に、分かっている事実、まだ聞けていないこと、自分が仮に置いた前提を混ぜないようにする。
decision-memo.mdでは、採用する案、採用しない案、理由、確認方法を短く書く。 案を比べるときは、価値、コスト、リスク、運用負荷を見る。 採用しなかった案にも、なぜ今は選ばないのかを書く。 リスクと確認事項には、権限、扱うデータ、利用者の誤解、運用で続けられるかを書く。
大切なのは、きれいな文章にすることではない。 作る前の判断を、後から読み返せる形にすることである。
価値から機能を考える章で持ち帰ること
第2章で身につけるべきことは、機能名の前に価値を見ることである。 価値を見るとは、誰の何がどう良くなるのかを確認することである。
要望、課題、成果を分ける。 OutputとOutcomeを分ける。 制約を見る。 MVPで何を確かめるかを決める。 案を価値、コスト、リスク、運用負荷で比べる。 やることだけでなく、今回はやらないことも書く。 そして、その判断をDecision Memoに残す。
この流れができると、後の章で要件、ドメイン、テスト、リリース判断を考えるときに、何のために作っているのかへ戻れる。
AI利用と検証の章へ
次章では、AIを学習と実務の流れに入れる。 AIに相談するときも、価値の整理は先に必要である。 目的、制約、期待する成果が曖昧なままAIへ依頼すると、もっともらしいが使えない答えが返ってくる。