フレームワークとは何なのか

先日の日記にてそもそもの言葉の意味からアーキテクチャの定義を考えてみた訳ですが、知り合いから突っ込みを頂きました。

要約すると、

  1. フルスタックフレームワークを構築することは、アプリケーション・アーキテクチャを確定することの一部である。
  2. 何故ならば、フレームワークが担うのはあくまで汎用的な機能や処理パターンだからである。
  3. システム独自の機能というのは別途開発しなくてはならないはずであり、その独自の機能のところの構造まで確定させて初めて、アーキテクチャの確定と言えるのでは無いだろうか。

ということみたいです。

なるほど。

これは色々解釈が分かれるところかもしれませんが、私の解釈的には、

という認識で、問題領域には当然汎用的な問題領域もある要件に固有の問題領域も含んでおり、

  • インターフェースで下位のクラスの挙動を束縛したり、UML等で概要だけ決めたり、代表的なところだけ作って後はそれを模倣させたり、と構造を確定させる手段は色々とあると思います。

こういうところもある程度含んでいるつもりでした*1

しかし

「システムに固有の*2機能」というと、それは広義の意味においては「ビジネスロジック」であり、「システムに固有の機能の構造を決める」とは、「ビジネスロジックのモジュール設計」という解釈も成り立つと思うので、ビジネスロジックの設計は設計者がやるべきという解釈も成り立つような気もします。もちろん、

  • インターフェースで下位のクラスの挙動を束縛したり、UML等で概要だけ決めたり、代表的なところだけ作って後はそれを模倣させたり、と構造を確定させる手段は色々とあると思います。

この辺の指針をアーキテクトが出した上でですけど。


では、フレームワークっていったいなんでしょう。IT用語辞典には、以下のように書かれています。

  • 枠組み、下部構造、構造、組織という意味の英単語

・・・

アーキテクチャと非常に似ていますね

しかし、私が日本人だからかIT業界の人間だからかJavaerだからかは分かりませんが、「アーキテクチャ」と言われるのと「フレームワーク」と言われるのとでは微妙にニュアンスが違います。

そこで

また、勝手に俺解釈をしてみます。


うーむ・・・

やはり微妙に違和感は抜けませんが、後悔はしていません。異論は認めます。

*1: 汎用的なものと固有のものを一緒くたにするのは再利用性上問題はありますが、フレームワークの再利用を考えるのであれば汎用的な部分と固有の部分のパッケージを分けとけばいいと思いますし、あまり再利用を考えないのであれば別に一緒くたにしてしまっても構わないと思います。

*2: あえて、システム独自の機能→システムに固有の機能と言い回しをかえています。