階層化アーキテクチャとは何か?メリットと課題を解説

2021年6月15日

階層化アーキテクチャの概要

階層化アーキテクチャとは、1つのアプリケーションを複数の階層に分けて設計する手法や、その考え方を指す言葉です。
「多層アーキテクチャ」と呼ばれることもあります。

アーキテクチャとは

IT用語におけるアーキテクチャとは、基本的な「構造」「構成」を意味する言葉です。
もともと「アーキテクチャ」は建築の世界で使用される用語で、「建築構造」「建築様式」「設計思想」などを意味します。それが流入され、IT用語としても使われるようになりました。

階層化アーキテクチャの特徴

階層化アーキテクチャでは、アプリケーションは機能やハードウェアという単位によって分割されます。
分割された層はそれぞれがモジュール(部品)として扱われ、各々が他のモジュールとやりとりするためのインターフェイスを備えています。
独立したモジュールを最終的にインターフェイスによって結合させ、1つのアプリケーションとします。

階層化の基準

アーキテクチャを階層化する際の基準は、主に「論理的役割」と「物理的役割」があります。

論理的役割

アプリケーションを機能ごとに階層分けする考え方です。
たとえば計算ソフトであれば、「画面表示」「計算処理」「データベース」などをそれぞれ分けて階層化します。

物理的役割

主にサーバの扱いを主軸とした考え方です。
サーバマシンが複数存在する場合、ハードウェアは物理的に分割されているため、それぞれを階層として扱うことがあります。
また同じサーバ内であっても、サーバ内の各モジュールが階層化していた場合、物理的に分割されているものとして扱うこともあります。

階層化アーキテクチャのメリット

階層化アーキテクチャには「メンテナンスしやすい」「再利用しやすい」「拡張性が高い」といったメリットがあります。

メンテナンスしやすい

各モジュールが独立しているため、1つのモジュールをメンテナンスする際、他のモジュールに与える影響が最小限に抑えられます。

再利用しやすい

独立させたモジュールは、他のアプリケーションに利用しやすくなります。
別のアプリケーションを新規開発する際、過去に開発した階層の一部を流用することが可能です。

拡張性が高い

アプリケーションを保守する際、技術進化やユーザーの要求の変化に合わせたアップデートが必要となります。
階層化アーキテクチャは階層ごとに独立しているため、アップデートが必要なモジュールのみ新規モジュールに置換するといった方法が可能です。

階層化アーキテクチャの課題

ソースの全体量が多い

その性質上、階層化アーキテクチャは最終的なソースコードの量が多くなります。
小・中規模のプロジェクトでは、かえって複雑になってしまうこともあります。

並行開発の留意点

各層ごとに開発が可能ですが、最終的には全体を結合してのテストや確認が必要になるため、一箇所の開発遅れが全体の計画を遅延させてしまうことがあります。

参考