ネットワークにおけるOSI参照モデルや、アプリケーション実行環境におけるハードウェア→OS→ミドルウェア→アプリケーション→UI(ブラウザ・モバイル)というレイヤ(こういうのに名前あるのかな。「フルスタックエンジニア」という言葉があることからして「技術スタック」とでもいうのだろうか)のように、ある技術的まとまりを、フラットにではなく階層をなすものとして考える習慣が存在する。それぞれのレイヤの独立性・簡潔性を担保するためだ。
今日、いろんなひとと話をしていて、こういう風にも考えられるよなと思ったことがあったので、以下にメモしておく。
それぞれについての贅言は必要なかろう(念のため、「デザイン」はいわゆる設計のこと)。また、抽象度が高低に、なにかしら技術的な優劣があるというわけでももちろんない。単に、階層を成しているものとして捉えると整理がつくだろうというだけのこと。ただし、上述の例とは異なり、このレイヤはそれぞれの階層に独立性があるというものではない。特に、第1階層から第3階層あたりまでは、依存関係にあるだろうと思う。