フレームワークとは何か(1)

世の中にはフレームワークと言うのがある。とにかくいっぱいある。http://www.google.co.jp/search?sourceid=navclient&hl=ja&ie=UTF-8&rls=GGLC,GGLC:1970-01,GGLC:ja&q=%E3%83%95%E3%83%AC%E3%83%BC%E3%83%A0%E3%83%AF%E3%83%BC%E3%82%AF
何をするべきものなのか、何をしたいものなのか。そのあたりについて少し書いてみたいと思う。
フレームワークと言うのは、世の中の「単純作業」について、その単純さゆえに画一的な手法で取り組んでみよう、というものだ。つまりは、食事をする前に手を洗って、頂きますと言ってから食べる、というのは一つのフレームワークということが出来るだろう。
プログラム開発の場合には、フレームワークはもう少し狭い意味となる。単純作業の共通部分を一箇所にまとめて、その枠組みの中から出ることが難しい状態を作ることである。前述の例で言うならば、例えば手を洗っていただきますといわないと、そもそも食べられないというような存在だ。この場合だと、親は生活上のフレームワークの地位を担っているということが出来るだろう。
では、プログラムのフレームワークはどのように作ればよいのだろうか。また、どのようなフレームワークが使いやすいのだろうか。どの程度の一般化が望ましいのだろうか。そのようなことを考えていきたい。が、しかしながら全ての分野のプログラムについてそのような作業を行なうことはほぼ不可能に近い。ここでは、僕自身が深く(とはいっても大したことは無いのだが)関わっている、Web Serviceについてのある程度の一般化とフレームワークの設計を行ってみたい。
言語については、もちろんどのような言語にも対応したいと考えている。一般化というのはそういうものだから。ただもちろん、各言語には特徴があるので、その言語のよさをなるべく消さない方向にはしたいと思う。
とりあえず扱う言語としては、PerlPHPJavaあたりで。それ以外の言語にも特徴があったりして面白いとは思うけれども、ある程度の部分まではこれから書く内容で対応できるとは思う。
(続く。続きは1ヶ月くらい後かも)