システム構成技術
下の動画はこの節の解説ではありません。 解説動画の雰囲気を知っていただくための見本として、「AI・機械学習」の動画を再生します。
この節の解説動画はプレミアム限定です。プレミアムなら全科目・全節が見放題!
プレミアムで見るアーキテクチャとは、コンピュータやシステムの仕様や設計概念を指す言葉です。クライアントサーバシステムでは、アプリケーションがもつ機能をどこに置くかという設計判断が性能と保守性を左右します。この節では、まず2層と3層のアーキテクチャを比べ、「クライアントを重くするか軽くするか」という選択の意味を確かめます。後半では、ソフトウェアの機能を部品とみなして組み合わせるSOAと、それをさらに推し進めたマイクロサービスアーキテクチャを扱います。令和7年度にはRESTとJSONが、令和3年度には3層アーキテクチャとSOAが出題されました。
簡単にいうと
アプリの機能は3つの層に分けられるの。それをサーバとクライアントにどう割り振るかで、2層か3層かが決まるよ。クライアント側に仕事を持たせすぎると、太ったクライアント=ファットクライアントになるんだ。
① アーキテクチャとは
クライアントサーバシステムでは、3層アーキテクチャという構成技術が用いられることが多くなっています。
なお、アーキテクチャとは、コンピュータやシステムの仕様や設計概念を指します。
ここでは、3層アーキテクチャの特徴を2層アーキテクチャと比較して見ていきます。
② 3つの層の定義
アプリケーションソフトウェアがもつ機能は、次の3つに分けられます。
| 名称 | 内容 |
|---|---|
| データベース層 | データベースへのアクセスを行う |
| ファンクション層 | データの処理および加工を行う |
| プレゼンテーション層 | ユーザインタフェースを提供する |
③ 3つの層を身近な例で
具体例
100台の端末を抱える会社で何が起きるか
営業支援システムを2層アーキテクチャで構築した会社を想定します。
導入時
| 項目 | 内容 |
|---|---|
| クライアント台数 | 100台 |
| 各PCに必要な性能 | 業務処理を実行できる水準 |
| 1台あたりの費用 | 高性能機が必要なため割高 |
機能を追加したとき
| 作業 | 負担 |
|---|---|
| サーバ側のプログラムを更新 |

2層アーキテクチャとファットクライアント(1/2)

2層アーキテクチャとファットクライアント(2/2)
試験のポイント
簡単にいうと
ファンクション層をサーバ側に移すと、クライアントが軽くなる!これがシンクライアント。「シン」は thin(薄い)で、「新」じゃないよ。そして3層は「論理的な概念」であって物理構成の話じゃない、という点も大事。
① 3層アーキテクチャ
3層アーキテクチャとは、仕事を3つに割って別々の機械に持たせる作りです。データの保管はデータベースサーバ、処理の中身はアプリケーションサーバ、画面はクライアント——この3つが連携して1つの処理を進めます。
| 配置 | 担当する層 |
|---|---|
| データベースサーバ | データベース層 |
| アプリケーションサーバ | ファンクション層 |
簡単にいうと
ソフトウェアの機能を「部品」とみなして、組み合わせてシステムを作る——それがSOA!部品だから、他のシステムでも使い回せるし、入れ替えもできる。ビジネスの変化に素早く対応するための設計手法なんだ。
① Webアプリケーションとは
Webアプリケーションとは、HTTPを通じて、Webサーバ上で稼働するサービスをWebブラウザから利用するアプリケーションを指します。
Webアプリケーションを構成する設計手法としてSOA、SOAを実現する具体的な技術基盤としてWebサービスがあります。
| 用語 | 位置づけ |
|---|---|
| SOA | 設計手法(考え方) |
簡単にいうと
SOAという考え方を、実際に動かすための技術がWebサービス!かっちりしたSOAPと、軽いREST。いまのWeb APIの主流はRESTのほうだよ。
① Webサービスとは
SOAを実現する具体的な技術基盤がWebサービスです。
Webサービスとは、ネットワーク上に存在する異なるWebアプリケーションを連携する技術を指します。
② SOAPとREST
Webサービスでは、Webアプリケーション同士が相互にXML形式のメッセージを送受信します。このメッセージのやり取りに必要な規約をまとめたプロトコルをSOAPといいます。
また、SOAPに対して、よりシンプルで軽量な設計思想に基づく方式をRESTといいます。HTTPを利用して主にJSON形式のデータをやり取りする点を特徴とします。Web APIの主流として広く採用されています。
③ 旅行予約を例に
たとえば、Web上で旅行を予約しようとした場合、従来であれば、チケット予約、時刻表、観光地情報、旅館予約などの各種サービスを利用してひとつひとつ検討する必要がありました。
簡単にいうと
SOAをさらに突き詰めたのがマイクロサービスアーキテクチャ!小さくて独立したサービスを組み合わせる形だよ。対になるのがモノリシック——英語で「一枚岩」という意味なんだ。
① 登場の背景
アジャイル開発やDevOpsによる高速開発を支えるため、アプリケーションアーキテクチャとして近年注目されているものがマイクロサービスアーキテクチャです。
アジャイル開発(第9章で学びます)は、短い期間で開発と改善を繰り返す開発手法です。DevOpsは、開発(Development)と運用(Operations)を密に連携させる考え方を指します。
どちらも速く、頻繁に変更を反映することを目指しています。そのためには、システムの構造そのものが変更しやすくなっていなければなりません。
② マイクロサービスアーキテクチャとは
マイクロサービスアーキテクチャとは、小規模かつ軽量で互いに独立した複数のサービスを組み合わせて、システムを実現するという開発コンセプトです。
動画・テキスト・過去問・AI添削まですべて網羅!
予備校代の1/10以下で、独学の不安をまるごと解決できます
通販サイトで「在庫のある商品を一覧表示する」という処理を、3層に分けてみます。
| 層 | この処理での役割 |
|---|---|
| データベース層 | 商品テーブルから在庫数が1以上の行を取り出す |
| ファンクション層 | 取り出したデータを並べ替え、表示用に整える |
| プレゼンテーション層 | 一覧を画面に描画し、利用者の操作を受け付ける |
下から上へ、データが加工されながら流れていくという構造です。
④ 2層アーキテクチャ
2層アーキテクチャとは、アプリケーションソフトウェアがもつ機能をデータベース層/ファンクション層/プレゼンテーション層の3つに分割し、サーバ側にデータベース層を、クライアント側にファンクション層およびプレゼンテーション層の役割をもたせ、2層構造で連携処理するシステムを指します。
| 配置 | 担当する層 |
|---|---|
| サーバ側 | データベース層 |
| クライアント側 | ファンクション層+プレゼンテーション層 |
機能は3つに分かれているが、物理的な配置は2か所——だから「2層」です。
⑤ 2層アーキテクチャの問題点
2層アーキテクチャでは、クライアント側にファンクション層の役割をもたせるため、以下の問題点があります。
| 問題点 |
|---|
| クライアントに高性能なPCを要求し、クライアント数が多い場合にはコスト高となる |
| サーバのプログラムに変更がある場合、すべてのクライアントPCに搭載されているファンクション層のプログラムを変更する必要があり、保守作業の負担が大きい |
⑥ 2つの問題点の根っこは同じ
どちらも、クライアント側に処理の中身を置いていることから生じています。
| 置いたもの | 生じる負担 |
|---|---|
| 処理を実行する機能 | 高性能なPCが必要 |
| 処理のプログラム | 変更のたびに全台を更新 |
クライアントが100台あれば、100台すべてに高性能なPCを用意し、100台すべてのプログラムを更新することになります。台数が増えるほど負担が膨らみます。
⑦ ファットクライアント
このように、稼働するアプリケーションソフトウェアが増え、保守が困難になったクライアントをファットクライアントとよびます。
fat は「太った」という意味です。機能を抱え込んで重くなったクライアント、というイメージです。
⑧ なぜ2層が使われたのか
一見すると欠点ばかりですが、登場した当時には理由がありました。
| 当時の事情 | 結果 |
|---|---|
| ネットワークが遅かった | クライアント側で処理したほうが速かった |
| サーバが高価だった | クライアントのPCに処理を任せたかった |
| 台数が少なかった | 更新の負担が現実的だった |
ネットワークが速くなり、台数が増えたことで、前提が崩れた——これが次のテーマで学ぶ3層アーキテクチャが主流になった背景です。
第5章で学んだAjaxや、第2章で学んだWebアプリケーションの広まりも、同じ流れの上にあります。
| 100台すべてのプログラムを更新 | 100回 |
更新作業の現実
| 起きること | 内容 |
|---|---|
| 全台を一斉に更新できない | 外出中の端末、電源を切っている端末がある |
| 新旧が混在する期間が生じる | 古い版のクライアントがサーバと不整合を起こす |
| 更新漏れが発生する | 1台でも漏れると、その利用者だけ不具合が出る |
この負担が、3層アーキテクチャを生んだ
「サーバ側だけを更新すれば済む」——この一点だけでも、3層にする価値があります。
第2章の内容とつなげる
第2章の応用ソフトウェアの節で、「Webアプリケーションにすれば更新が1か所で済む」という利点を見ました。これはまさに、プレゼンテーション層だけをクライアントに残し、ファンクション層をサーバに移した結果です。
| 方式 | 更新の手間 |
|---|---|
| 2層(ファットクライアント) | 全台を更新 |
| 3層(Webアプリケーション) | サーバ1か所を更新 |
確認してみましょう
> 次の記述の正誤を判定せよ。
> a プレゼンテーション層は、ユーザインタフェースを提供する層である。
> b 2層アーキテクチャでは、サーバ側にデータベース層とファンクション層を、クライアント側にプレゼンテーション層をもたせる。
> c ファットクライアントとは、稼働するアプリケーションソフトウェアが増え、保守が困難になったクライアントである。
解答 a:○ b:× c:○
| クライアント | プレゼンテーション層 |
② 2層との違いは1点だけ
| 2層 | 3層 | |
|---|---|---|
| データベース層 | サーバ | サーバ |
| ファンクション層 | クライアント | サーバ(アプリケーションサーバ) |
| プレゼンテーション層 | クライアント | クライアント |
ファンクション層がどちら側にあるか——これだけが違います。
③ 論理的な概念であること
> なお、3層アーキテクチャは「どの層にどの機能をもたせるか」という論理的な概念であり、3層の物理的な構成を規定したものではありません。
>
> たとえば、データベース層とファンクション層は、同一のコンピュータ上で動作させてもよいし、そうでなくてもよいのです。
これは重要な注意点です。「3層=サーバが3台」ではありません。
| 物理構成 | 3層アーキテクチャか |
|---|---|
| DBサーバ1台+APサーバ1台+クライアント | ○ |
| 1台のサーバでDBとAPの両方を動かす+クライアント | ○(論理的には3層) |
| DBサーバ3台+APサーバ5台+クライアント | ○ |
機能の分け方の話であって、機械の台数の話ではない——この区別を押さえてください。
④ 3層アーキテクチャのメリット
3層アーキテクチャでは、クライアント側にファンクション層の役割をもたないため、以下のメリットがあります。
| メリット |
|---|
| クライアントPCは比較的低性能でよく、クライアント数が多い場合にも低コストが実現する |
| 各層の独立性が高く、層間の依存度が低いため、開発作業を並行して行うことができ、開発生産性が高い |
| サーバ上のデータベース構造やデータ加工ロジックを変更してもクライアント側のプログラムに与える影響が小さく、保守性が高い |
⑤ 3つのメリットを整理する
| メリット | 何が改善したか |
|---|---|
| 低コスト | 2層の問題点①(高性能なPCが必要)が解消 |
| 開発生産性が高い | 層ごとに並行して作れる |
| 保守性が高い | 2層の問題点②(全台の更新)が解消 |
2層の2つの問題点がそのまま解消され、さらに開発面の利点が加わっている——という構造です。
⑥ なぜ開発を並行できるのか
各層の独立性が高く、層間の依存度が低いためです。
| 担当 | 作業 |
|---|---|
| Aチーム | プレゼンテーション層(画面)を作る |
| Bチーム | ファンクション層(業務処理)を作る |
| Cチーム | データベース層(データ構造)を作る |
層と層の間の受け渡し方だけを先に決めておけば、中身は互いに独立して作れます。
第2章の3層スキーマ、第5章のOSI参照モデルでも見た「層に分けると変更の影響が閉じ込められる」という原則が、ここでも働いています。
⑦ シンクライアント
このように、稼働するアプリケーションソフトウェアが限定的であり、保守性が高いクライアントをシンクライアントとよびます。
thin は「薄い、やせた」という意味です。ファット(太った)の対義語として名づけられました。
| 名称 | 英語 | 意味 |
|---|---|---|
| ファットクライアント | fat(太った) | 機能を抱え込んで重い |
| シンクライアント | thin(薄い) | 機能が限定的で軽い |
「シン」を「新(新しい)」と誤解しないこと——カタカナだけを見ていると起こりやすい誤りです。
⑧ 取り違えが出題された
令和元年度の本試験では、次の記述が出されました。
> 「クライアントサーバシステムのクライアントで、データの処理や保管などの多くの機能を担うように構成したシステムをシンクライアントシステムという。」
解答:×(ファットクライアントの説明)
「多くの機能を担う」=太っている=ファット——意味から考えれば取り違えません。
⑨ Webアプリケーションは3層の典型
現在のWebアプリケーションは、3層アーキテクチャそのものです。
| 層 | 担当 |
|---|---|
| プレゼンテーション層 | Webブラウザ |
| ファンクション層 | Webサーバ/アプリケーションサーバ |
| データベース層 | データベースサーバ |
第2章で学んだLAMP(Linux+Apache+MySQL+PHP等)を当てはめると、
| 層 | LAMPでの担当 |
|---|---|
| プレゼンテーション層 | ブラウザ |
| ファンクション層 | Apache+PHP |
| データベース層 | MySQL |
ブラウザさえあれば使える——これが、クライアントが「薄い」ということの具体的な姿です。
具体例
設例1 シンクライアントとファットクライアント
> 次の記述の正誤を判定せよ。(令和元年度第7問 改題)
> クライアントサーバシステムのクライアントで、データの処理や保管などの多くの機能を担うように構成したシステムをシンクライアントシステムという。
解答 ×
ファットクライアントの説明です。
設例2 3層クライアントサーバシステム
> 次の記述の正誤を判定せよ。(令和2年度第4問 改題)
> 3層クライアントサーバシステムとは、プレゼンテーション層、ファンクション層、データベースアクセス層という機能的に異なる3層で構成するシステムをいう。
解答 ○
3つの層の名前を正確に答えられるかが問われています。
社内システムをWebアプリケーション化する
従業員60名の会社で、営業支援システムを刷新する場面を考えます。
現状:2層アーキテクチャの専用ソフト
| 課題 | 内容 |
|---|---|
| PCの更新時に困る | 専用ソフトが新しいOSで動かない |
| 外出先から使えない | 社内のPCにしか入っていない |
| 更新のたびに全台作業 | 情報システム担当者の負担が大きい |
| 端末が高価 | 一定以上の性能が必要 |
刷新後:3層アーキテクチャのWebアプリケーション
| 改善 | 内容 |
|---|---|
| ブラウザがあれば使える | OSや端末を選ばない |
| 外出先からも使える | VPN経由で社外から |
| 更新はサーバだけ | 担当者の負担が激減 |
| 端末は低性能でよい | 買い替え費用を抑えられる |
とくに3つ目の効果が大きい
情報システム担当者が1名しかいない中小企業では、100台を回って更新する作業は現実的ではありません。月1回の機能追加があれば、それだけで業務が埋まってしまいます。
「保守性が高い」という言葉の中身
教科書では「保守性が高い」と一言で書かれますが、実務では次のような差になります。
| 2層 | 3層 | |
|---|---|---|
| 不具合の修正を反映するまで | 数日〜数週間(全台を回る) | 数分(サーバを更新するだけ) |
| 更新漏れ | 起こりうる | 起こらない |
| 新旧の混在 | 起こりうる | 起こらない |
不具合を見つけてから直るまでの時間が、桁違いに短くなる——これが利用者にとっての意味です。
3層にしても残る課題
| 課題 | 内容 |
|---|---|
| サーバへの負荷が集中する | 処理がすべてサーバで行われる |
| サーバが止まると全員が使えない | 単一障害点になる |
| ネットワークに依存する | 回線が遅いと使えない |
これらへの対策が、第5節・第6節で学ぶ冗長化や、本節で後に学ぶスケールアウトです。
確認してみましょう
> 次の記述の正誤を判定せよ。
> a 3層アーキテクチャでは、ファンクション層をアプリケーションサーバに役割分担させる。
> b 3層アーキテクチャは3層の物理的な構成を規定したものであり、データベース層とファンクション層を同一のコンピュータ上で動作させることはできない。
> c 3層アーキテクチャでは、各層の独立性が高く層間の依存度が低いため、開発作業を並行して行うことができる。
解答 a:○ b:× c:○

2層と3層のアーキテクチャ
試験のポイント
| 具体的な技術基盤(実現手段) |
② SOA(Service Oriented Architecture:サービス指向アーキテクチャ)
SOAとは、ソフトの機能ひとつひとつを「サービス」という部品として切り出し、その部品を組み上げてシステムを作る考え方です。
ここでの「サービス」とはアプリケーションの処理単位を論理的に記述したものです。
③ サービスの4つの特徴
サービスは、以下の特徴を有します。
| 特徴 |
|---|
| 呼び出し口がはっきり決まっていて、外から呼べる |
| インターネット越しに、どこからでも届く |
| 処理がその中で完結していて、単体で動く |
| どう作ったか、どこで動かすかは問わない |
④ 4つの特徴を読み解く
| 特徴 | 何を意味するか |
|---|---|
| 明確なインタフェース | 使い方さえ知っていれば、中身を知らなくても呼び出せる |
| どこからでもアクセス | 物理的な置き場所を意識しなくてよい |
| 独立して稼働 | 1つが止まっても他は動く |
| 実装方法を問わない | 中身が何で作られていても構わない |
「中身を知らなくても使える」——これがサービスという考え方の核心です。
電気製品にたとえると、コンセントの形と電圧さえ合っていれば、発電所の仕組みを知らなくても電気が使えるのと同じです。インタフェース(コンセント)が決まっていれば、中身(発電方式)は問われません。
⑤ サービスの粒度
サービスは、ビジネス・プロセスを実行できる粒度で作られます。
| 粒度の例 |
|---|
| 在庫確認 |
| 注文処理 |
「データベースに1行追加する」のような細かすぎる単位でもなく、「販売管理システム全体」のような大きすぎる単位でもない——業務上の意味のあるひとまとまり、というのが適切な粒度です。
⑥ SOAのイメージ
| 順番 | 動き |
|---|---|
| ① | アプリケーションA・B・Cがそれぞれ存在する |
| ② | それぞれをサービスに分解する |
| ③ | サービスの組み合わせで新しいアプリケーションを構築する |
既存のシステムを部品に分解し、組み替えて新しいものを作る——これがSOAの発想です。
⑦ SOAの2つのメリット
SOAを導入することにより、以下のメリットを享受できます。
1 柔軟性の向上
各サービスは自由に他のサービスと組み合わせることが可能なため、外部環境の変化や事業戦略の変更など、ビジネス環境の変化により迅速に対応できます。
2 再利用性の向上
サービスは他のさまざまなシステムから呼び出して再利用することが可能なため、システムごとに類似したアプリケーションを開発および運用する無駄を削減できます。
新たなシステムを開発する場合、既存のIT資産の再利用が可能になり、ROI(Return On Investment:投資対効果)の向上が見込めます。
⑧ ビジネス部門とIT部門から見たメリット
| 観点 | ビジネス部門 | IT部門 |
|---|---|---|
| 再利用性 | 既存のIT資産の最大限の活用が可能となりROIが向上 | 開発期間の短縮、開発コストの削減 |
| 柔軟性 | ビジネス環境の変化に対し、より迅速に対応可能 | サービス・コンポーネント単位の組み立てや組み換えが容易 |
また、
⑨ 疎結合という言葉
疎結合とは、部品どうしのつながりが緩いことを指します。対義語は密結合です。
| 疎結合 | 密結合 | |
|---|---|---|
| つながり | 緩い | 強い |
| 片方を変えると | 他への影響が小さい | 他にも影響する |
| 組み換え | 容易 | 困難 |
部品を入れ替えやすくするには、つながりを緩くしておく——この考え方は、第9章で学ぶモジュール設計にも通じます。
⑩ レガシーシステムのラッピング
レガシーシステムとは、古くから使われ続けている基幹システムのことです。
SOAでは、レガシーシステムの機能をサービスとして包み直す(ラッピングする)ことで、新しいシステムから呼び出せるようにできます。
| 方法 | 内容 |
|---|---|
| 作り直す | 費用も期間も膨大 |
| ラッピングする | 中身はそのままで、外から呼べるようにする |
「動いているものは壊さず、外側を整える」——限られた資源でシステムを刷新する現実的な手法です。中小企業への助言としても実用的な視点になります。
具体例
SOAを部品の考え方で理解する
製造業の受注から出荷までのシステムを、サービスに分解してみます。
分解前:1つの大きな販売管理システム
| 含まれる機能 |
|---|
| 顧客の登録・照会 |
| 在庫の確認 |
| 受注の登録 |
| 与信の確認 |
| 出荷の指示 |
| 請求書の発行 |
分解後:6つのサービス
| サービス | 他から呼び出せるか |
|---|---|
| 顧客照会サービス | ○(営業支援システムからも使える) |
| 在庫確認サービス | ○(ネット通販サイトからも使える) |
| 受注登録サービス | ○ |
| 与信確認サービス | ○(見積システムからも使える) |
| 出荷指示サービス | ○ |
| 請求書発行サービス | ○ |
再利用の効果
ネット通販サイトを新たに作る場面を考えます。
| SOAでない場合 | SOAの場合 | |
|---|---|---|
| 在庫確認の機能 | 新たに作る | 既存のサービスを呼ぶ |
| 顧客照会の機能 | 新たに作る | 既存のサービスを呼ぶ |
| 与信確認の機能 | 新たに作る | 既存のサービスを呼ぶ |
| 開発期間 | 長い | 短い |
| 在庫データの整合性 | 2つのシステムで別々に持つ危険 |
最後の行が重要
類似したアプリケーションを別々に開発すると、データが二重になり、食い違います。
| 起きること | 例 |
|---|---|
| 店舗の在庫とネットの在庫が違う | 二重に売れてしまう |
| 顧客情報が2か所にある | 住所変更が片方だけ反映される |
第3章で学んだ正規化——同じデータを2か所に持たない——という原則が、システムの単位でも当てはまります。SOAは、システムの世界における正規化といえるかもしれません。
中小企業でSOAを考える
「SOAを導入する」という大がかりな話にする必要はありません。次のような場面で、考え方だけを借りられます。
| 場面 | SOA的な判断 |
|---|---|
| 新しい業務システムを検討している | 既存システムのデータを呼び出して使えないか |
| 同じデータを複数のシステムが持っている | 1か所にまとめて、他は呼び出す形にできないか |
| クラウドサービスを追加したい | 既存システムと連携できるか(APIがあるか) |
3つ目がとくに実務的
クラウドサービスを選ぶとき、APIが用意されているかどうかは重要な判断材料です。APIがあれば、既存システムと連携できます。なければ、データを手作業で移すか、二重入力することになります。
「つながるかどうか」を導入前に確認する——これは診断士として必ず助言すべき点です。
確認してみましょう
> 次の記述の正誤を判定せよ。
> a SOAとは、ソフトウェアの機能をサービスという部品とみなして、サービスのモジュールを組み合わせてシステムを構築する設計手法である。
> b SOAにおけるサービスは、稼働するプラットフォームが限定される。
> c SOAの導入により、柔軟性の向上と再利用性の向上というメリットが得られる。
解答 a:○ b:× c:○

SOA(サービス指向アーキテクチャ)(1/2)

SOA(サービス指向アーキテクチャ)(2/2)
試験のポイント
しかし、Webサービス上では、これらのサービス(チケット予約から旅館予約まで)がネットワーク上で組み合わさることで、1つのサービスとして構築されます。
つまり、Webサービスは、アプリケーションをリンクする機能であるともいえます。
④ 動きを追う
| 順番 | 動き |
|---|---|
| ① | Webブラウザ(クライアント)がWebサーバA(旅行予約サービス)にHTTPで要求する |
| ② | WebサーバAがWebサーバB(チケット予約サービス)にSOAP(XML)で問い合わせる |
| ③ | WebサーバAがWebサーバC(旅館予約サービス)にSOAP(XML)で問い合わせる |
| ④ | WebサーバAが結果をまとめてHTTPでブラウザに返す |
利用者は1つのサイトを見ているだけですが、裏では複数のサービスが連携しています。これが「アプリケーションをリンクする機能」ということの意味です。
⑤ SOAP(Simple Object Access Protocol)
SOAPは、Webアプリケーションの連携に必要なメッセージ交換を行うためのプロトコルです。
SOAPでは、メッセージをXML形式で記述し、データをHTTPで伝送します。
| 項目 | 内容 |
|---|---|
| データ形式 | XML形式 |
| 伝送 | HTTP |
⑥ WSDL(Web Services Description Language)
WSDLは、主にSOAPベースのWebサービスに使われます。プログラムからWebサービスを呼び出すインタフェースを記述するための仕様です。
それぞれのWebサービスがどのような機能をもつのか、それを利用するためにはどのような要求をすればいいのかなどを記述する方法が定義されています。
前のテーマで学んだ「明確に定義されたインタフェース」を、実際に書き表すための言語がWSDLです。
⑦ REST(Representational State Transfer)
RESTは、リソース(データ)をクライアントとサーバ間でやり取りする仕組みです。
RESTでは、データを主にJSON形式で記述し、データをHTTPで伝送します。
JSON(JavaScript Object Notation)は、サーバとWebアプリケーション間でデータを伝送するために使用する一般的なデータ形式です。JSONは、シンプルで軽量なデータ表現フォーマットであり、WebアプリやAPI、設定ファイルなどに用いられます。
⑧ SOAPとRESTを比べる
| SOAP | REST | |
|---|---|---|
| データ形式 | XML形式 | JSON形式(主に) |
| 伝送 | HTTP | HTTP |
| 設計思想 | 厳密で規約が多い | シンプルで軽量 |
| インタフェース記述 | WSDL | — |
| 現在の主流 | — | Web APIの主流 |
⑨ なぜRESTが主流になったのか
| 理由 | 内容 |
|---|---|
| 記述が簡潔 | XMLよりJSONのほうが短く書ける |
| 扱いやすい | JavaScriptとの相性がよい |
| 学習しやすい | 規約が少なく、HTTPの知識があれば使える |
| 通信量が少ない | 軽量なぶん、モバイル環境に向く |
第3章で学んだ半構造化データの話を思い出してください。XMLもJSONも半構造化データですが、JSONのほうが簡潔です。第5章で触れたAjaxでも、実際にはXMLよりJSONが使われることが多くなっている、と述べました。
⑩ RESTはHTTPメソッドを使う
令和7年度の本試験では、「RESTはHTTPメソッドを用いることなく」という誤りの選択肢が出されました。
正しくは、RESTはHTTPメソッドを用いるWebアーキテクチャーです。
HTTPには、GET(取得)、POST(作成)、PUT(更新)、DELETE(削除)といったメソッドがあり、RESTはこれらを使い分けてリソースを操作します。
| HTTPメソッド | 操作 | 第3章のCRUDでいえば |
|---|---|---|
| GET | 取得 | Read(SELECT) |
| POST | 作成 | Create(INSERT) |
| PUT | 更新 | Update(UPDATE) |
| DELETE | 削除 | Delete(DELETE) |
第3章で学んだCRUDと、きれいに対応していることが分かります。RESTは、データベース操作の考え方をWebの世界に持ち込んだ設計思想だといえます。
⑪ Web APIという言葉
API(Application Programming Interface)は、プログラムから別のプログラムの機能を呼び出すための約束事です。
Web APIは、それをWeb(HTTP)経由で行うものを指します。
| 場面 | Web APIの例 |
|---|---|
| 地図を自社サイトに埋め込む | 地図サービスのAPI |
| 決済を組み込む | 決済事業者のAPI |
| 配送状況を取得する | 配送事業者のAPI |
| 会計ソフトと連携する | 会計クラウドのAPI |
前のテーマで触れた「APIがあるか」という確認は、この節で学んだ技術が実際に使えるかどうかを問うものです。
具体例
設例 RESTとJSON
> 次の記述の正誤を判定せよ。(令和7年度第4問 改題)
> a RESTは、HTTPメソッドを用いることなく、Webアプリケーションを通じてサーバOSが提供する各機能を利用する仕組みである。
> c JSONは、Webアプリケーションのデータ交換に使用されているデータ形式の1つである。
解答 a:× c:○
aの誤りの構造
「HTTPメソッドを用いることなく」という部分が、RESTの定義と正反対です。RESTはHTTPを土台にした設計思想なので、HTTPメソッドを使わないということはありえません。
中小企業がWeb APIを活用する
ネット通販を行う小売業が、業務を効率化する場面を考えます。
連携前:手作業でつないでいる
| 作業 | 手間 |
|---|---|
| 通販サイトの注文を見る | 画面を開いて確認 |
| 販売管理システムに転記する | 手入力 |
| 配送業者のサイトで伝票を作る | 再度入力 |
| 会計ソフトに売上を入力する | 三度目の入力 |
同じデータを3回入力している——これが手作業の実態です。
連携後:APIでつなぐ
| 連携 | 効果 |
|---|---|
| 通販サイト → 販売管理(API) | 自動で取り込まれる |
| 販売管理 → 配送業者(API) | 伝票が自動で作られる |
| 販売管理 → 会計ソフト(API) | 売上が自動で計上される |
得られる効果
| 効果 | 内容 |
|---|---|
| 入力の手間がなくなる | 3回が0回に |
| 転記ミスがなくなる | 人の手が入らない |
| 即時に反映される | 在庫や売上がリアルタイムで分かる |
| 担当者が本来の仕事に集中できる | 入力作業から解放される |
導入時に確認すること
| 確認項目 | なぜ |
|---|---|
| APIが公開されているか | なければ連携できない |
| 連携の費用 | 無償のものも有償のものもある |
| 連携ツールがあるか | 自社で開発しなくて済む場合が多い |
| 障害時の対応 | 連携が止まったときに手作業に戻せるか |
3つ目が現実的
中小企業がAPIを直接扱うプログラムを書くのは現実的ではありません。近年は、プログラミングなしでサービス同士をつなぐ連携ツールが多数あります。
「APIがある」=「自社でプログラムを書く必要がある」ではない——この点を伝えられると、導入のハードルが下がります。
確認してみましょう
> 次の記述の正誤を判定せよ。
> a SOAPでは、メッセージをXML形式で記述し、データをHTTPで伝送する。
> b WSDLは、プログラムからWebサービスを呼び出すインタフェースを記述するための仕様である。
> c RESTは、データを主にXML形式で記述する。
解答 a:○ b:○ c:×

Webサービスとシステムの分け方
試験のポイント
③ SOAとの関係
| SOA | マイクロサービスアーキテクチャ | |
|---|---|---|
| 考え方 | サービスの組み合わせ | 同じ(をより発展させた) |
| サービスの大きさ | ビジネス・プロセスの粒度 | より小規模かつ軽量 |
| 結合の度合い | 疎結合 | APIによる疎結合をより強く推し進めた |
マイクロサービスは、SOAの延長線上にあるという位置づけです。
④ 目的
マイクロサービスアーキテクチャは、「あるサブシステムでの変更が、他のサブシステムにおよびにくくする」ことを目的としたAPI(Application Programming Interface)による疎結合化を強く推し進めた形です。
変更の影響を閉じ込める——第2章の3層スキーマ、第5章のOSI参照モデル、本節の3層アーキテクチャでも繰り返し見てきた原則です。
⑤ 導入の狙い
マイクロサービスアーキテクチャの導入によってITシステム内部構造におけるアプリケーションの疎結合化を図り、個別のサービスの変更に伴う影響範囲を小さくすることにより、デプロイ(開発したソフトウェアを本番環境に配置し、利用可能な状態にすること)の柔軟性、拡張性を高める狙いがあります。
デプロイがやりやすくなると、システム開発のスピードが高まり頻繁な改修が可能になります。
⑥ デプロイという言葉
デプロイとは、開発したソフトウェアを本番環境に配置し、利用可能な状態にすることです。
| 場面 | デプロイの難しさ |
|---|---|
| 大きな1つのシステム | 全体を止めて入れ替える必要がある |
| 小さなサービスの集まり | 変更したサービスだけ入れ替えればよい |
⑦ 独立して起動や停止が可能
マイクロサービスアーキテクチャは、独立した機能を組み合わせることで1つの処理を実現するアーキテクチャです。個々のマイクロサービスは独立して起動や停止が可能です。
この性質が、頻繁な改修を可能にしています。
⑧ モノリシック(モノリス)
一方、モノリシック(モノリス)は英語で一枚岩を意味し、大きな単一機能という特徴を表現したものです。
モノリシックアーキテクチャでは、アプリケーションの一部の機能を変更しようとする場合、マイクロサービスアーキテクチャであれば変更不要な機能も含めて変更する必要があり、変更不要な機能も含めたテストが必要になるなど、機能変更に伴いより多くのリソースが必要になります。
⑨ 2つを比べる
| マイクロサービスアーキテクチャ | モノリシック | |
|---|---|---|
| 構成 | マイクロサービスの組合せでシステムが構築される | 1つのアプリケーションに必要な機能が含まれる |
| 起動/停止 | マイクロサービス単位で行う | アプリケーションの起動/停止で全機能が有効/無効となる |
| データモデル | マイクロサービス毎にデータモデルを持つ | 1つのデータベースを共有する |
| 一部の機能を変更するとき | そのサービスだけ変更・テスト | 全体を変更・テスト |
⑩ 一枚岩という比喩
monolith は「一枚岩」を意味します。継ぎ目のない巨大な塊というイメージです。
| 一枚岩の性質 | システムでの意味 |
|---|---|
| 頑丈で崩れにくい | 構造が単純で作りやすい |
| 一部だけ削ることができない | 一部だけ変更することが難しい |
| 運ぶには全体を動かす | 起動・停止は全体で行う |
⑪ どちらを選ぶか
マイクロサービスが常に優れているわけではありません。
| マイクロサービス | モノリシック | |
|---|---|---|
| 小規模なシステム | 過剰(管理が複雑になる) | 適切 |
| 大規模で変更が頻繁 | 適切 | 変更が重くなる |
| 運用の手間 | 多い(多数のサービスを管理) | 少ない |
| データの整合性 | 保つのが難しい(サービスごとにデータを持つ) | 保ちやすい |
⑫ 第1節とのつながり
この比較は、第1節で学んだ集中処理と分散処理の比較と同じ構造をしています。
| 集中/モノリシック | 分散/マイクロサービス | |
|---|---|---|
| 管理 | 楽 | 手間がかかる |
| データの一貫性 | 保ちやすい | 保つ手段が必要 |
| 変更の影響 | 全体におよぶ | 局所的 |
まとめるか分けるかというトレードオフは、処理形態でもアーキテクチャでも、同じ形で現れます。
中小企業の多くは、モノリシックで十分です。「新しいから」という理由でマイクロサービスを選ぶと、運用できる人がいないという事態に陥ります。
具体例
1つの機能を変更するときに何が起きるか
会員制サービスのシステムで、「認証の方法を変更する」場面を考えます。
モノリシックの場合
| 手順 | 内容 |
|---|---|
| ① | 認証部分のプログラムを変更する |
| ② | アプリケーション全体をビルドし直す |
| ③ | 変更していないユーザ管理、機器管理、分析の機能もテストする |
| ④ | 全体を停止して入れ替える |
| ⑤ | 全機能が同時に新しくなる |
③と④が負担
変更していない機能までテストするのは、変更の影響がどこに及ぶか分からないからです。同じアプリケーションの中でつながっている以上、「ここは関係ない」と言い切れません。
マイクロサービスの場合
| 手順 | 内容 |
|---|---|
| ① | 認証サービスのプログラムだけを変更する |
| ② | 認証サービスだけをビルドし直す |
| ③ | 認証サービスのテストを行う |
| ④ | 認証サービスだけを入れ替える(他は動いたまま) |
| ⑤ | 他の機能は影響を受けない |
他のサービスは止まらない
利用者から見れば、認証以外の機能は使い続けられます。全体を止める必要がありません。
この差が、開発速度を変える
| モノリシック | マイクロサービス | |
|---|---|---|
| 変更から反映まで | 数週間(全体テストが必要) | 数時間〜数日 |
| 1か月あたりの改修回数 | 1〜2回 | 何十回も可能 |
頻繁な改修が可能になる——これがマイクロサービスの狙いです。
ただし、代償がある
| 代償 | 内容 |
|---|---|
| サービス間の通信が増える | ネットワーク経由のやり取りが発生し、遅くなりうる |
| 障害の切り分けが難しい | どのサービスが原因か追いにくい |
| データの整合性 | サービスごとにデータを持つため、同期が課題 |
| 運用の手間 | 監視対象が10倍、100倍に増える |
中小企業への助言
| 状況 | 助言 |
|---|---|
| 従業員30名、システム1つ | モノリシックで十分。分ける必要はない |
| 複数の業務システムが乱立 | まずデータの持ち方を整理する(SOAの考え方) |
| クラウドサービスを組み合わせている | 実質的にサービス指向になっている |
3つ目に注目
会計はクラウド会計、販売管理は別のクラウド、勤怠は別のサービス——という構成は、実はサービス指向の形をしています。それぞれが独立して動き、APIでつながっているからです。
中小企業は、自社で作らずに「使う」ことで、結果的にサービス指向を実現している——という見方もできます。第12章で学ぶクラウドコンピューティングは、この流れの延長線上にあります。
確認してみましょう
> 次の記述の正誤を判定せよ。
> a マイクロサービスアーキテクチャは、小規模かつ軽量で互いに独立した複数のサービスを組み合わせてシステムを実現する開発コンセプトである。
> b モノリシックアーキテクチャでは、マイクロサービス単位で起動や停止を行う。
> c マイクロサービスアーキテクチャでは、デプロイがやりやすくなることでシステム開発のスピードが高まる。
解答 a:○ b:× c:○

マイクロサービスアーキテクチャ(1/2)

マイクロサービスアーキテクチャ(2/2)
試験のポイント
プレミアムプラン
¥9,800〜/ 買い切り・自動更新なし(税込)
決済はStripe(世界最高水準・PCI-DSS準拠)で安全に処理されます。カード情報は当サービスに保存されません。