Jakartaプロジェクト(現Apache Jakarta)は、Javaをもっともっと使いやすくするための「道具」を提供しているオープンソース団体です。当時の代表的なもは、Log4J、Commons、Tomcat・・。
その数々の道具の中の一つ、Webアプリケーションフレームワーク-Struts は、Java史上、最も世界中に影響を及ぼしたソフトウェアです(だと思います)。
Strutsが普及する以前は、J2EEの機能だけを使ってWebアプリケーションを開発していました。しかしすぐに、JSPとServletだけでは機能が足りないことに、誰もが気づきはじめます。例えば、画面の入力値を解析したり、入力エラー時に前の画面に戻ったりといった制御が、実際やってみると結構難しく、冗長なコードをたくさん書かなければなりませんでした。
2000年くらいまでは、J2EEだけでもずいぶん楽に感じたものですが、人は贅沢になるモノ。便利さに慣れてしまえば、もっともっと便利なものを要求してしまいます。このようなJ2EEへの不満がでてきたころに、彗星のごとく現れたStrutsは、その後5年もの間、常に世界中のプログラマから利用され続けるロングヒットになりました。
この入れ替わりの激しいソフトウェア業界で、5年は長い!
Strutsは、Webアプリケーションの作りにくさを解消すると同時に、Webアプリケーションの最良の作り方を提示しました。
その中の一つが、MVC(画面・業務ロジック・遷移制御の分離)です。Strutsのルールに従ってコードをかけば、自然にMVCになります。
MVCという言葉は、JSP/Servlet/EJBが登場したころから世間に認識されていたのですが、私はうまく使いこなせませんでした。
当時は、新しいプロジェクトに参加するプログラマが、J2EEを習得してることは、本当にマレな時代です。そのようなメンバーに対して、J2EEの個別の機能の他に、MVCやデザインパターンを教育する余裕はありません。だったら、「全部JSPだけで作っちゃえ。CGIと同じだよ。」という方針で作ってもらった方が、こっちは楽だったし、開発はすぐにスタートできたからです。
(・・・あとあと反省することになるのは言うまでもない・・・)
Strutsは、メンバー教育をとても楽にしてくれました。シンプルで覚えることもそんなに多くありません。
ソースコードのスケルトンを用意してあげる、ということも簡単にできるようになります。たとえば、システムに必要なFormBeanを全部作ってしまう。ひとりひとりのプログラマが個別に作ったとしたら、それに割かれる時間は未知数です。ひとりがまとめて作ってしまえば、どんな大きなシステムでも半日で終わるでしょう。ActionやValidatorでも同じことです。
こんなふうに、大枠やパーツは準備してしまってから、データーベースが得意な人にはEJBを、画面が得意な人にはJSPを教えればいいわけです。J2EEが理想としている「分業」を、Strutsは、より完全なものにしたのでした。
当時のオープンソースの認識はこんなものでした。
プロジェクトが立ち上がり、Strutsの導入を提案するたびに、ヒト悶着あります。これを説得するのは、大変なことでした。
Strutsに続け!とばかりに、本当に多くのベンチャー企業が有償フレームワークを発売しました。「どのフレームワークが使いやすいか検証してくれ」と、オカミからふってくる仕事も増えたりしましたが、そのころの製品で今残っているのは、何割あるのだろうか・・。
Strutsの機能は、入力データのハンドリング、ページ遷移、エラー処理、画面表示ロジックなど、十分かつシンプルな構成。この優れたソフトウェアは、たった一人のハッカーがわずかな時間(数日だったか数週間だったか)で作り上げたものだということは有名です。そして、さまざまな競合の登場にもビクともせずに、ほとんどバージョンアップもしていません。
一方で、多額の開発費用をかけて、使わない機能をたくさん盛り込んだ有償フレームワーク。
あれから5年たった今、オープンソースへの認識が変わったのも、うなずけます。