できるエンジニアの「仕様書の読み方」:読む前に“誤読しない型”を作ろう
設計書・仕様書って、読むだけで疲れますよね。しかも、ちょっとした読み違いがそのまま実装ミスになって、手戻りや障害につながる。だからこそ、できるエンジニアほど「読むテクニック」より先に「誤読しないための型」を持っています。
この記事では、設計書・仕様書を短時間で正確に読み解き、実装とテストに落とし込むまでの手順をガイドとしてまとめます。難しい話より、現場でそのまま使える形に寄せます。
0. まず結論:仕様書は“文章”ではなく“決まりごと”として読む
仕様書を真面目に全部読もうとすると、だいたい迷子になります。
ポイントは、文面を追うのではなく、次の順番で「決まりごと」に変換することです。
最初に、目的と範囲を確定して「書いてあること」と「書いてないこと」を分ける。
次に、全体地図を作って、詳細を読んでも迷わない状態にする。
そのうえで、振る舞いを「条件→結果」の規則として抜き出す。
最後に、非機能(性能やセキュリティなど)と曖昧さを拾い、質問と作業とテストに落とし込む。
この型を持っていると、文書の出来が多少イマイチでも、安定して誤読を減らせます。
1. 目的と範囲を確定して「書いてある/書いてない」を分ける
仕様書と一口に言っても、中身は色々です。要求(何を実現するか)、外部仕様(画面やAPIの振る舞い)、内部設計(構造や処理の流れ)で、読み方も、確認すべき粒度も変わります。
ここで最初にやるのは、表紙・改訂履歴・対象機能・対象外の確認です。大事なのは「この文書が決めていること」と「この文書が決めていないこと」を分けることです。
要求や仕様を扱う標準(たとえば ISO/IEC/IEEE 29148)でも、要求は後工程の誤解を生まない形で整理し、管理することが重要だとされています。だから、読み手側も「この文書が何を決める文書か」を最初に固定したほうが安全です。
実務でよく効くチェックの仕方は、次の2行を自分のメモの一番上に書くことです。
「この文書で確定していること:___」
「この文書では未確定(要確認)のこと:___」
この2行が空っぽのまま読み始めると、書いてないことを脳内で補完して、誤読が起きやすくなります。
2. いきなり詳細に入らない:まず「全体地図」を1枚で作る
次にやるのは、全体像を先に作ることです。詳細から入ると迷子になりがちです。
ここでおすすめは、A4 1枚に「利用者の流れ」「データの流れ」「担当境界」をざっくり描くことです。
具体的には、登場人物(利用者の種類、管理者、外部システム)、主要な操作、主要なデータを箱にして、矢印でつなげば十分です。この“地図”があると、細部を読んでも迷子になりません。
地図を先に作るだけで、読み取りの精度が上がります。
ここまでできたら、ようやく詳細に入ります。
3. 仕様の核心は「振る舞い」:文章を「条件→結果」に変換して読む
仕様の核心は「振る舞い」です。振る舞いとは、入力に対して何が起きて、何が返るかです。
画面・API・バッチのどれでも、「入力」と「結果」と「例外」をセットで抜き出すイメージです。
このパートでやるべきことは、文章を眺めるのではなく、全部「条件→結果」の規則にして抜き出すことです。たとえば、次のような形です。
未ログインのとき、ログイン画面へ誘導する。
権限がないとき、操作を拒否してエラーを返す。
必須が欠けたとき、入力エラーとして扱う。
ここで地味に効くのが、仕様の言葉の強さを揃えることです。IETF の RFC 2119 では MUST(必須)や SHOULD(推奨)といった“要求の強さ”の解釈が定義されています。仕様書に「必ず」「なるべく」「してよい」などが混ざっていたら、読み手の頭の中で勝手に強さが変わって誤読が起きます。
読み取るときは、メモ上で「必須/推奨/任意」のどれかに寄せて書くと混乱が減ります。
読み取った規則は、次のテンプレに入れてメモすると整理しやすいです。
条件:
結果:
補足(例外や優先順位):
4. 手戻りの多くは「非機能の見落とし」:決まってないなら“未確定”として拾う
多くの手戻りは、非機能の見落としから起きます。非機能というのは、機能そのものではなく「品質や制約」の話です。たとえば、速さ、落ちにくさ、セキュリティ、運用のしやすさ、互換性などです。
ISO/IEC 25010 の品質モデルでも、性能効率、信頼性、保守性、セキュリティなど、複数の品質特性として整理されています。仕様書に明記がない場合でも「決まっていないこと」として扱い、確認対象に入れるのが安全です。
表にして拾うと早いです。
| 分類 | 例 | まず確認すること |
|---|---|---|
| 性能 | 画面表示、API応答 | 目標時間、ピーク時、計測方法 |
| 可用性 | 障害時の復旧 | 復旧目標、冗長化、復旧手順 |
| セキュリティ | 認証・権限、ログ | 誰が何をできるか、監査要件 |
| 運用 | 監視、アラート | 何を監視し、誰が対応するか |
ここでのコツは、答えがまだないなら「未確定」と書いてしまうことです。未確定を見える化できる人ほど、後工程の事故を減らせます。
5. 曖昧さの棚卸し:質問は「思いつき」ではなく「型」で出す
仕様書は完全ではありません。だからこそ、ここで差が出ます。質問は思いつきで投げるより、分類して短く出すと通りやすいです。
よくある曖昧さは、前提が不明、境界が不明、例外が不明、優先順位が不明の4つに集約できます。
質問を出すときは、次の4点セットにすると強いです。
現状の理解:私は〇〇だと理解しました。
不明点:ただ、△△が文書から読み取れません。
選択肢:選択肢はA/B/Cが考えられます。
推奨:私は理由(運用、監査、コスト等)からBを推奨します。
この形にすると、相手は「何を決めればいいか」が一目で分かります。結果として返事も速くなり、合意形成が前に進みます。
6. 読んだらすぐ落とす:実装とテストは“同時に”作る
仕様を読んだら、その場で「作業の分割」と「テスト観点」まで作ります。コツは、正常系より先に異常系を拾うことです。
たとえば画面機能なら、部品(コンポーネント)、状態管理、API連携、入力チェック、表示分岐の単位に分けます。APIなら、入力検証、権限確認、保存、例外処理、ログという単位に分けます。
テスト観点は、次の表を埋めるだけでも十分に強くなります。
| 観点 | 例 | 期待する結果 |
|---|---|---|
| 必須欠落 | 必須が空 | 入力エラーになる |
| 権限なし | ロール違い | 拒否される |
| 境界値 | 最小、最大 | 正常またはエラーが明確 |
| 二重送信 | 連打 | 重複しない、または扱いが仕様通り |
この段階で「テストで何を見るか」が見えると、実装の品質はかなり安定します。
7. 最後に“共有できる形”で残す:自分のメモで終わらせない
読めたとしても、頭の中にしかないと、チームは確認できません。設計書が読める人は、読んだ内容を「他人が検証できる形」に変換できます。
最低限、「要約」「未確定事項」「影響範囲」の3点があれば十分です。
テンプレにすると、毎回ラクです。
要約:
未確定:
影響範囲:
これがあるとレビューが速くなり、認識ズレが減ります。結果として、自分が一番ラクになります。
まとめ:仕様書読みは「誤読しない型」を作る作業
設計書・仕様書の読み解きは、文面を丁寧に追う作業ではなく、目的と範囲を確定し、全体地図を作り、振る舞いと非機能を規則として抜き出し、曖昧さを質問に変換し、実装とテストに落とし込む作業です。
この手順を型として持てば、ドキュメントの質が多少低くても、安定して成果を出せるようになります。次に仕様書を読むとき、まずは「地図を1枚作る」から試してみてください。読むスピードと安心感が変わります。
参考文献
ISO/IEC/IEEE 29148:2018 Requirements engineering(概要)
https://www.iso.org/standard/72089.html
RFC 2119: Key words for use in RFCs to Indicate Requirement Levels
https://datatracker.ietf.org/doc/html/rfc2119
Google Engineering Practices Documentation
https://google.github.io/eng-practices/
ISO/IEC 25010(品質モデルの概要)
https://iso25000.com/en/iso-25000-standards/iso-25010