階層化はショートケーキ作りと同じ?

[voice icon=”https://tomslifestylelab.com/wp-content/uploads/2019/05/tom0212.png” name=”この記事を書いている人” type=”l”]

ネットワークエンジニア
Tom

Tomとかいうやつが何者なのか知りたい方は下のプロフィールをご覧ください。

プロフィール

[/voice]

こんにちは、Tomです。

ネットワークの勉強を始めると、必ずと言って良いほど、

「OSI参照モデル」「TCP/IP」

の解説から入ります。

それだけ大切だということなのですが、OSI参照モデルやTCP/IPを勉強する前に、
あることについて理解しておく必要があります。

それは、

「階層化」

です。

「階層化」がどう言ったものなのか理解せずに、OSI参照モデルやTCP/IPを勉強しても、

「どうして階層に分かれているの?」

ということになってしまいます。

そんなことにならないよう、今回はOSI参照モデル、TCP/IPを勉強するための前提知識である、「階層化」について解説していきます。

1.ショートケーキ作りは階層化

階層化はOSI参照モデル、TCP/IPを勉強するための前提知識だと言いましたが、
では、なぜOSI参照モデルやTCP/IPでは、階層化しているのでしょうか?

それはもちろん、階層化すれば良いことがあるからです。

 

その“良いこと”について、順を追ってご説明します。

 

まず、階層化とは、仕事に例えるなら、

「一つの仕事を作業ごとに独立させて役割分担する」

ということです。

例えば、ケーキをつくるとしましょう。ショートケーキにしましょうか。

 

ショートケーキには何が必要ですか?
スポンジ?生クリーム?果物?

じゃあショートケーキを作るときにも、

  • スポンジを作る階層
  • 生クリームを作る階層
  • 果物を調達する階層

がありますね。下の図のようになります。

スポンジは土台なので一番下にしましたが、ショートケーキの場合、順番はあんまり関係ないかもしれません。

これを三人のパティシエで役割分担して行うとしましょう。

このとき、三人の作業はそれぞれ独立して行えます。

スポンジを作る人はスポンジ作りに、生クリームを作る人は生クリーム作りに、果物を調達する人は調達に専念できます。

 

スポンジ作りが順調だからって、生クリーム作りが早くなるわけではありません。

生クリームがうまく作れないからって、果物の調達が遅れることはありません。

 

それぞれの仕事は独立して行うことができ、それぞれが仕事を終えたら最後に組み立てて、ショートケーキが出来上がります。

 

では、できあがったショートケーキを食べて、

  • スポンジがボロボロこぼれてマズイ
  • 生クリームが甘すぎてダメ
  • 果物の中が腐っていた

といった問題が起きたとき、どうすればいいでしょうか?

簡単ですね。それぞれの仕事を見直せばいいんです。

スポンジがボロボロならもっとフワフワに作ればいいし、生クリームが甘いなら砂糖を少なくすればいいし、果物が腐っていたなら別の店から買えばいいのです。

他の仕事に与える影響はほぼありません。それに、それぞれの仕事でもっと改善したい部分は、簡単に改善できます。
(まあ、生クリームの甘さと果物の甘さは考えなければいけないかもしれませんが)

一つの仕事を独立して役割分担を行ったときに、なにか問題があれば、その部分だけ見直せばいいのです。

言ってしまえば、他の階層の仕事なんて「無視」して、自分の仕事だけちゃんとこなせばいいのです。

この、

「他の階層の仕事は無視できる」

というのが、階層化における最も重要なメリットです。

ショートケーキ作りにしても、各階層のパティシエが自分の仕事をちゃんとこなせば、美味しいショートケーキが完成します。

階層化していれば、各階層では自分の仕事だけちゃんとこなせばいいのです。

2.コンピュータにおける階層化

ショートケーキの例をお話しましたが、これはコンピュータでも同じです。

コンピュータのシステム(仕事)を階層ごとに役割分担したときに、どこかの階層で不具合が起こったら、その階層だけ修正すればいいのです。

例えば、3層からなるAシステムについて考えてみます。

3層のシステムのうち、第二層に不具合が発見され、改修しなければならないとき、

上の図のように階層化していれば、第二層のみを改修することができ、他の層に与える影響を最小限に抑えることが出来ます。

また、他の層に与える影響が少ないため、層ごとの開発が容易になります。

ショートケーキ作成モデルと同じですね。

ショートケーキ作成モデルでは、メリットについて、「他の階層の仕事を無視できる」と説明しました。

これをコンピュータの世界の話に近づければ、階層化するメリット(良いこと)は、

「各階層を独立なものとして扱うことができる」

と言うことです。

各階層を独立なものとして扱うことができれば、階層ごとの機能の変更・開発を容易に行うことが可能となるのです。

また、階層間のデータの受け渡しだけしっかり決めれば、各階層が自分の仕事に集中するだけで、システム全体としてちゃんと機能するものになります。

3.まとめ

いかがでしたでしょうか?

階層化がどんなものなのかお分りいただけたでしょうか?

階層化について理解していれば、OSI参照モデルの勉強を進めることができます。

 

OSI参照モデルについては下の記事にまとめましたので、そちらをご覧ください。

ゼロから始めるOSI参照モデル基礎講座

それでは最後まで読んでくださり本当にありがとうございました。