フレームワークとは何なのか
先日の日記にてそもそもの言葉の意味からアーキテクチャの定義を考えてみた訳ですが、知り合いから突っ込みを頂きました。
要約すると、
- フルスタックフレームワークを構築することは、アプリケーション・アーキテクチャを確定することの一部である。
- 何故ならば、フレームワークが担うのはあくまで汎用的な機能や処理パターンだからである。
- システム独自の機能というのは別途開発しなくてはならないはずであり、その独自の機能のところの構造まで確定させて初めて、アーキテクチャの確定と言えるのでは無いだろうか。
ということみたいです。
なるほど。
これは色々解釈が分かれるところかもしれませんが、私の解釈的には、
- フルスタックフレームワーク=(業務)アプリケーションとして基本的に必要な問題領域の全てをカバーしたフレームワーク
という認識で、問題領域には当然汎用的な問題領域もある要件に固有の問題領域も含んでおり、
- インターフェースで下位のクラスの挙動を束縛したり、UML等で概要だけ決めたり、代表的なところだけ作って後はそれを模倣させたり、と構造を確定させる手段は色々とあると思います。
こういうところもある程度含んでいるつもりでした*1。
しかし
「システムに固有の*2機能」というと、それは広義の意味においては「ビジネスロジック」であり、「システムに固有の機能の構造を決める」とは、「ビジネスロジックのモジュール設計」という解釈も成り立つと思うので、ビジネスロジックの設計は設計者がやるべきという解釈も成り立つような気もします。もちろん、
- インターフェースで下位のクラスの挙動を束縛したり、UML等で概要だけ決めたり、代表的なところだけ作って後はそれを模倣させたり、と構造を確定させる手段は色々とあると思います。
この辺の指針をアーキテクトが出した上でですけど。
では、フレームワークっていったいなんでしょう。IT用語辞典には、以下のように書かれています。
- 枠組み、下部構造、構造、組織という意味の英単語
・・・
アーキテクチャと非常に似ていますね。
しかし、私が日本人だからかIT業界の人間だからかJavaerだからかは分かりませんが、「アーキテクチャ」と言われるのと「フレームワーク」と言われるのとでは微妙にニュアンスが違います。
そこで
また、勝手に俺解釈をしてみます。
- アーキテクチャとは、基本構造の設計である。
- フレームワークとは、あるアーキテクチャを実装したものである。
- よって、アプリケーション・アーキテクチャの確定とは、アプリケーションの基本構造を設計し、それを実装することであり、即ちフルスタックフレームワークを作成することである。
うーむ・・・
やはり微妙に違和感は抜けませんが、後悔はしていません。異論は認めます。