部品をくみあわせると “プログラミングなしに” システムがつくりあげられるようにしようとこころみつつ,失敗におわっているとおもわれる例を 2 つあげることにします. それは ASP.NET と JMF (Java Media Framework) です.
サーバー・コントロールなしの ASP.NET に ASP.NET はサーバー・コントロールとよばれる部品をくみあわせても, おもうように Web インタフェースがつくれなくてハマったということを書きました. これはつまり,ASP.NET は部品をくみあわせてプログラムをつくるしかけをつくろうとして失敗した例のひとつだということになるとおもわれます.
おなじように部品化に失敗した例として JMF (Java Media Framework) をあげることができます. JMF は Java によって記述されたライブラリを パイプラインのようにつなぎあわせて,音声や動画などのさまざまなメディア 処理や通信などに関するプログラムがつくれるようにしようとしたものです. 部品をくみあわせるだけでデジタル・プレヤーやテレビ会議などの プログラムがつくれるようにしようという,うまく実現されれば すばらしいかんがえにもとづいたライブラリです. しかし,これも ASP.NET と同様に,あらかじめ想定された アプリケーションはたしかに部品をくみあわせればつくれるのですが, ちょっとちがうものをつくろうとすると,いろいろハックしないと うごきません. 部品のなかをのぞきみして,いろいろといじりまわす 必要がでてきます. 結局は,JMF を捨ててつくりなおさないと 必要な自由度を確保できないということになります. 私は JMF でもハマりました (仮想の “音の部屋” によるコミュニケーション・メディア voiscape の JMF と Java 3D を使用した実装).
それから,ここでもうひとつ書いておきたいことがあります. ASP.NET がそうであるように,この種の “ブロック化システム” ではよく,プログラミングがいらないということが強調されます. しかし,実はブロックをくみあわせるという操作は (簡易化されているとしても) プログラミングそのものです. 自由度が制限されていてプログラミングにはみえないとしても, 本質的にはプログラミングとかわりません. そして,上記のように, 自由度を制限したツケはちゃんとまわってくるのです. それを “プログラミングがいらない” と主張するのは適切でないとおもわれます.