曖昧な要求
明確な要求

「曖昧な要求」にサヨナラ!
開発者のためのEARS入門

コードを書く前に、要求をハッキリさせるシンプルな方法

**対象**: ソフトウェア開発者

**発表者**: (ご自身のお名前)

こんな「要求」に困っていませんか?

「もっとユーザーに優しいUIにしてください」

...優しいって、具体的にどういうこと?

「システムは高速に応答すること」

...高速って、何秒以内?

通常時エラー時で処理を分けてほしい」

...通常時っていつ?どんなエラーを想定?

「この機能は、よしなに実装しておいて」

...仕様を読んでも、どうすればいいか不明...

これらの曖昧さが、手戻りやバグの原因になります。

なぜ「自然言語」の要求は難しいのか?

私たちが普段使っている言葉には、5つの「落とし穴」が潜んでいます。

曖昧さ

複数の意味に解釈できてしまう

曖昧性

「適切な」など基準が不明確

複雑さ

1文に複数の要求が混在

記述漏れ

エラー処理などが抜けている

検証不能性

要求を満たしたか確認できない

これらの問題が、開発終盤での「思っていたのと違う!」という悲劇を生み出します。

そこでEARSの出番です!

自然言語に“ちょっとしたルール”を加えるだけで、要求を明確にするフレームワークです。

学習が簡単

新しいツールは不要

解釈がブレない

誰が読んでも同じ理解

テストしやすい

要求がテストのヒントに

信頼性は折り紙付き

もともとは航空宇宙業界(ロールス・ロイス社)で、エンジンの制御システムなど、非常に高い安全性が求められる分野で生まれました。

EARSの基本構造

EARSの構文は、時間的な順序に基づいたシンプルな構造です。

While <状態>

〜である間

要求が有効になるための
継続的な**状態**や**モード**

When <きっかけ>

〜が起きたとき

システムの応答を引き起こす
特定の**イベント**

The <システム名>

〇〇は

応答する責任を持つ
**システム**や**コンポーネント**

shall <振る舞い>

〜しなければならない

システムが実行すべき
必須の**アクション**

この構造が、要求に必要な「いつ」「どんな状況で」「何が」「どうなる」を強制的に明確にします。

EARSの主要パターン①

まずは、最もよく使う3つの基本パターンを覚えましょう。

1. 遍在要求

Ubiquitous

常に有効なシステムの基本的な制約やルール。

構文:

The <システム名> shall <振る舞い>.

例:

システムは、患者データへの不正アクセスを防止しなければならない。」

2. イベント駆動要求

Event-Driven

何かの「きっかけ」に対するシステムの応答。

構文:

When <きっかけ>, The <システム名> shall <振る舞い>.

例:

「送信」ボタンがクリックされたときフォームデータ検証されなければならない。」

3. 状態駆動要求

State-Driven

特定の「状態」における継続的な振る舞い。

構文:

While <状態>, The <システム名> shall <振る舞い>.

例:

システムがメンテナンスモードである間すべてのユーザーアクセス制限されなければならない。」

EARSの主要パターン②

基本パターンに加えて、これらも非常に強力です。

4. 望ましくない振る舞い

Unwanted Behavior

エラーや障害など、予期せぬ事態への対応。

構文:

If <望ましくない条件>, then The <システム名> shall <振る舞い>.

例:

ネットワーク接続が失われた場合システムは自動的に再接続を試みなければならない。」

💡 Point: `When`ではなく`If`を使うことで、エラー関連の要求を明確に区別できます。

5. オプション機能

Optional Feature

特定の条件でのみ有効になる機能やバリエーション。

構文:

Where <機能が含まれる場合>, The <システム名> shall <振る舞い>.

例:

プレミアムサブスクリプションが有効な場合ユーザーは限定コンテンツにアクセスできなければならない。」

💡 Point: `Where`を使うことで、製品のバリエーションや機能フラグに応じた要求を管理できます。

Before / After: EARSで要求を改善!

Before: 曖昧な要求

「エラーをログに記録する」

(いつ? どんなエラーを?)

After: EARSで明確化

If データベース接続に失敗した場合, then システムshall エラーメッセージをログファイルに記録する。

→ いつ、何をするかが明確に!

Before: 曖昧な要求

「ユーザーはログインできる」

(失敗した場合は? アカウントがロックされていたら?)

After: EARSで明確化

When ユーザーが有効な認証情報を入力し「ログイン」ボタンをクリックしたとき, the システムshall ユーザーをダッシュボードにリダイレクトする。

If ユーザーが無効な認証情報を入力した場合, then the システムshall 「認証情報が正しくありません」と表示する。

→ 正常系と異常系の振る舞いが明確に!

EARSとアジャイル開発の相性

ユーザーストーリーの「受け入れ基準」をEARSで記述するのが非常に効果的です!

ユーザーストーリー

As a 顧客,

I want to ログインできるようにしたい,

so that 注文履歴を確認できる

...「何を」「なぜ」作るかは分かるが、「どう動くべきか」の詳細は曖昧になりがち。

受け入れ基準を
EARSで記述

明確な受け入れ基準

When ユーザーが有効なIDとパスワードでログインしたとき, the システムは注文履歴画面を表示しなければならない

If ユーザーが無効なIDまたはパスワードを入力した場合, then the システムはエラーメッセージを表示しなければならない

While アカウントがロックされている間, the システムは全てのログイン試行を拒否しなければならない

EARSが開発者にもたらすメリット

実装が明確になる

「何を」作るべきかがハッキリするので、コーディングに集中できます。

手戻りが減る

仕様の解釈違いによる「思ってたんと違う!」が激減します。

テストがしやすい

要求がテストケースのヒントに。「When」はトリガー、「shall」は期待結果です。

コミュニケーションが円滑に

POやQAと「同じ言葉」で話せるようになり、認識のズレを防ぎます。

まとめ

EARSは、自然言語の要求を「明確」で「検証可能」にするためのシンプルなフレームワークです。

5つの基本パターンを覚えるだけで、すぐに始められます。

曖昧な要求に悩んだら、この質問を投げかけてみましょう:

いつ(When/If)? どんな状態で(While)?
何が(The system)? どうなる(shall)のか?」

明日から使えるEARSで、開発をもっとスムーズに進めましょう!

ご清聴ありがとうございました

Q & A

(ご自身のお名前)

(メールアドレスやSNSなどの連絡先)