「要件定義は終わったが、システム構成をどう組み立てるか決め手がない」 「どこまでが要件定義で、どこからが方式設計なのか線引きが曖昧だ」 「パフォーマンスや連携方式の裏付けが弱く、後から問題が出ないか不安だ」

プロジェクトの現場で、こんなモヤモヤを抱えていませんか?

システム方式設計を曖昧なまま進めてしまうと、開発の終盤になってからの致命的なパフォーマンス劣化や、本番環境での障害多発を引き起こします。結果として、膨大な手戻りによるコスト超過スケジュール遅延という最悪の事態に直面することになります。

この記事では、要件定義との違いや「システム方式設計で決めるべき5つの領域」と判断基準など、現場で迷わないための基礎知識を具体的に解説します。これを読めば、曖昧になりがちな設計プロセスを確実なものにし、自信を持って開発フェーズへ橋渡しができるようになります。

本記事は、システム方式設計の全体像を解説する基礎編です。 実際の進め方(5ステップ)や、現場の失敗事例・必須の成果物テンプレートなどを具体的に知りたい方は、実践編である「システム方式設計の進め方5ステップ|なぜ失敗する?現場事例と回避チェックリスト」の記事もあわせてご覧ください。

システム方式設計とは?一発で理解する全体像

システム方式設計とは、一言で言えば「What(何を作るか)」を「How(どう実現するか)」に変換し、システムの骨組み(アーキテクチャ)を決める工程です。

要件定義で決めたビジネス上の要求や業務フローを実現するために、どのようなハードウェア、ソフトウェア、ネットワークの構成にするのか、全体的な方針を定めます。家づくりに例えるなら、要件定義が「間取りや部屋の用途を決めること」だとしたら、システム方式設計は「木造にするか鉄骨にするか、配管や配線をどう通すかを決める基本設計」にあたります。

要件定義との決定的な違い

現場でよくある悩みが「要件定義と方式設計の境界線が分からない」というものです。明確な違いは「視点」にあります。

比較項目要件定義システム方式設計
視点業務視点(ユーザー・ビジネス)システム実現視点(IT・エンジニア)
主語「システムは〇〇の機能を提供する」「システムは〇〇の技術で機能を実現する」
関心事業務課題の解決、必要な機能、画面イメージアーキテクチャ、技術選定、パフォーマンス、可用性
主な担当者   業務SE、ITコンサルタント、ユーザー部門インフラSE、アーキテクト、テックリード

要件定義が「要求をまとめる」工程であるのに対し、システム方式設計は「実現方法を確定させる」工程です。

要件定義は「What(何を作るか)」、方式設計は「How(どう実現するか)」を決めます。

なぜシステム方式設計が必要なのか?

「要件定義が終わったら、すぐに画面設計や詳細設計に入りたい」と考える人もいるかもしれません。しかし、方式設計を飛ばすとプロジェクトは確実に炎上します。

全体の方針がないまま各開発者が個別に設計を進めると、「A機能はAWSのPaaSを使っているのに、B機能はオンプレミス前提の作りになっている」といったチグハグな状態になります。結果的に、結合テストの段階で「システム同士が連携できない」「想定したパフォーマンスが全く出ない」といった致命的な手戻りが発生するのです。

よくある失敗例:DB構成の検討不足による大炎上】
例えば、初期の方式設計でデータベースの負荷分散を考慮せず「単一構成」のまま実装を進めてしまったとします。本番稼働後、想定以上のアクセスが集中して性能が出ず、慌てて「参照用DB(リードレプリカ)を追加して負荷を分散しよう」と構成を変更することに。 しかし、インフラ構成を変えるだけでは済みません。アプリケーション側のソースコードを洗い出し、参照系と更新系のSQLの接続先をすべて書き分けるという、膨大な改修と再テストの手戻りが発生する……これは現場では決して珍しくない話です。

システム方式設計の段階で「性能要件」と「それを実現するアーキテクチャ」をしっかり決めておけば、このような悲劇は未然に防げます。このような手戻りを防ぐための具体的な進め方については、実践編である「システム方式設計の進め方5ステップ|なぜ失敗する?現場事例と回避チェックリスト」で詳しく解説します。

方式設計をサボると、テスト工程で致命的な手戻りとコスト超過が発生します。

【図解】システム構成図のイメージ

システム方式設計で目指すゴールの一つが、システムの全体像を可視化した「システム構成図」を作成することです。

【システム構成図(論理)イメージ】

このような図を描き、関係者全員で「これから作るシステムの形」の認識を合わせることが重要です。

システム方式設計で決める「5つの領域」と「具体的な判断基準」

システム方式設計では、検討漏れを防ぐために以下の「5つの領域」に分けて設計を進めます。

  1. システム構成(アーキテクチャ)
  2. 技術選定
  3. 非機能要件の設計
  4. データ連携・処理方式
  5. 運用・保守設計

それぞれの領域で「どこまで具体的に決めるのか」と、現場で迷わないための「判断基準」を解説します。

1. システム構成(アーキテクチャ)

システム全体の物理的・論理的な構成を決定します。

  • どこまで決めるか:
    • インフラ環境: 「AWSを利用し、東京リージョンのマルチAZ(複数データセンター)で構築する」といったレベルまで構成を具体化します。
    • サーバー構成: 「Web/APサーバーはコンテナ(ECS)を利用し、DBはマネージドサービス(RDS)を利用する」など、利用するサービス単位まで落とし込みます。
  • 判断基準:
    • コストとスケーラビリティ: 初期投資を抑え、アクセス増減に柔軟に対応したいならクラウド(AWS、Azureなど)。
    • チームの習熟度: 最新のマイクロサービスアーキテクチャは魅力的ですが、チームに経験者がいなければ、手堅いモノリス(単一アプリケーション)構成を選ぶのが現場の鉄則です。

迷ったら「チームが確実に扱える構成」を優先するのが現場の鉄則です。

2. 技術選定

システムを構築するための要素技術を選定します。

  • どこまで決めるか:
    • 言語・フレームワーク: 「バックエンドはJava (Spring Boot)、フロントエンドはReactを採用する」など、具体的な製品名や主要なバージョンまで指定します。
    • ミドルウェア: 「WebサーバーはNginx、DBはPostgreSQL 15系を採用する」といったレベルで決定します。
  • 判断基準:
    • 保守性とエコシステム: 「いま流行っているから」という理由での選定は非常に危険です。特に「新しい技術を採用したいが実績が少ない」といった場面では、この観点が重要になります。ライブラリの充実度(エコシステムの大きさ)、トラブルシューティング情報の多さ、そして数年後でも保守要員を確保しやすいかを最優先に判断します。

流行りの技術よりも「数年後に保守・要員確保できるか」を最優先に選びましょう。

3. 非機能要件の設計

要件定義で挙がった非機能要件を、システム構成としてどう実現するかを設計します。

非機能要件の実現方式を決めるためには、前提として「非機能要件が定量的に定義されていること」が必要です。「要件定義で非機能要件をどう決めるか(非機能要求グレードなど)」については、以下の記事も参考にしてください。非機能要件の進め方|炎上を防ぐ「実戦ヒアリング術」と顧客が納得する交渉のコツ

  • どこまで決めるか:
    • 性能: 「同時接続1,000ユーザー時に、主要画面のレスポンスを3秒以内にする」といった具体的な数値で定義します。
    • 可用性: 「単一障害点を排除し、Webサーバーが1台故障してもサービスが継続できる冗長構成とする」など、構成レベルで実現方法まで落とし込みます。
    • セキュリティ: 「外部公開APIにはWAFを導入し、DBに保存する個人情報はAES-256で暗号化する」といった具体的な対策レベルまで決定します。
  • 判断基準:
    • ビジネス要件とのトレードオフ: 「止まらないシステム」を作ろうとすれば、インフラコストは跳ね上がります。システムが1時間停止した場合のビジネスへの影響額と、冗長化にかかるコストを天秤にかけ、どこまで許容できるか(SLA)をステークホルダーと合意することが基準となります。

高可用性は高コスト。「どこまで許容できるか」のビジネス判断がキモです。

4. データ連携・処理方式

外部システムとのデータ連携や、システム内部でのバッチ処理などの方式を決定します。

  • どこまで決めるか:
    • 連携方式: 「AシステムとはREST APIでリアルタイム連携し、タイムアウト時は3回まで自動リトライする」といった具体的なシーケンスや異常時の挙動まで定義します。
    • 処理方式: 「他システムからのデータ取り込みは、毎日深夜2時に日次バッチ処理で一括反映する」といったスケジュールレベルまで落とし込みます。
  • 判断基準:
    • リアルタイム性とデータ量: 数秒以内の反映が必要ならAPI、夜間に大量データを一括処理するならバッチ処理・ファイル連携を選択します。また、連携先システムが古い場合は、相手側の制約(APIに対応していない等)に合わせる必要があります。
    • データの整合性と信頼性: システム間連携では、「途中で処理が失敗した場合にデータが不整合にならないか」を考慮することが重要です。例えば、API連携では冪等性(同じリクエストを複数回送っても結果が変わらない性質)を担保する、バッチ処理では途中失敗時のリカバリ手順を定義するなど、データの正しさを保つ仕組みを設計段階で検討します。

「リアルタイム性が本当に必要か?」を疑うことがコストと構成最適化の第一歩です。

5. 運用・保守設計

システムが本番稼働した後の、運用や保守のやり方を設計します。ここが抜け落ちるとリリース後に運用チームから大クレームが来ます。

  • どこまで決めるか:
    • 監視方式: 「CPU使用率が80%を超過した場合、運用チームのSlackに自動でアラート通知する」といった具体的な監視ルールを定義します。
    • バックアップ: 「DBのフルバックアップを毎日取得し、別リージョンのS3バケットで30日間保持する」といった具体的な運用手順レベルまで決定します。
  • 判断基準:
    • RPO(目標復旧時点)とRTO(目標復旧時間): 障害が起きた際、「いつの時点のデータまで戻す必要があるか(RPO)」「何時間以内に復旧させる必要があるか(RTO)」のビジネス要件から逆算して、バックアップの頻度やリストア方式を決定します。

運用担当者を設計段階から巻き込むことが、リリース後の平穏を守ります。

まとめ:システム方式設計はプロジェクトの成否を分ける羅針盤

システム方式設計は、要件定義という「What(何を作るか)」を、詳細設計以降の「How(どう実現するか)」へと橋渡しする、プロジェクトにおいて最も重要な転換点です。

今回解説した以下の「5つの領域」を曖昧なままにしてしまうと、後工程で取り返しのつかない手戻りやコスト超過を引き起こします。

  1. システム構成(アーキテクチャ)
  2. 技術選定
  3. 非機能要件の設計
  4. データ連携・処理方式
  5. 運用・保守設計

各領域における「判断基準」をしっかりと持ち、チーム全体でアーキテクチャの共通認識を持つことが、プロジェクト成功の第一歩となります。

【実践編へ続く】 本記事(基礎編)では、「何をどこまで決めるべきか」について解説しました。 続く実践編では、これらの構成を「実際にどういう手順で決めていくのか(5つのステップ)」、そして「現場でよく起きる3大失敗とその回避策」「そのまま使える必須の成果物テンプレート」について詳しく解説します。

システム方式設計の進め方5ステップ|なぜ失敗する?現場事例と回避チェックリスト

【完全保存版】要件定義の実践ガイド総まとめ|炎上と手戻りを防ぐプロジェクト成功のロードマップシステム開発の成否の8割を決める「要件定義」。本記事では、プロジェクトの炎上や手戻りを防ぐための実践ガイド(全9回)を一挙にまとめました。企画構想からWBS作成、業務フローの書き方まで、現場PMが絶対に知っておくべき成功のロードマップを大公開します。...
ABOUT ME
hidechi
メーカーに入社し、その後IT部門が分社独立、情報システムエンジニアとして30年以上勤務しています。これまで多くのプロジェクトに携わり、それらの経験から得た知見を覚え書きとして記録することで、厳しい現場で奮闘しているSEの皆さんの一助となれば幸いです。