WebObjects

WebObjects（ウェブオブジェクツ）は、Mac OS Xの開発環境に含まれていた、JavaによるWebアプリケーションサーバである。Appleが開発していた。
Webアプリケーション・Webサービスを開発・運用するための開発ツール・フレームワークを持ち、徹底したオブジェクト指向、強力なデータベース接続機能、ラピッドプロトタイピングが可能なツールが特徴である。WebObjectsでは、ウェブブラウザから使用できるウェブアプリケーション、Webサービスを提供するアプリケーションを開発することができる。
WebObjectsのサポートするプラットフォームは開発・運用環境共にMac OS Xのみだが、運用環境はJavaのみで開発されており、JavaをサポートしているプラットフォームであればWebObjectsアプリケーションを運用できる（バージョンによってはMac OS X Serverを購入して運用ライセンスを得ることが必要）。また、JBoss、Apache Tomcat、BEA WebLogic、IBM WebSphereといったサードパーティーのJava EEアプリケーションサーバでも運用できる。
現在AppleはApple Store オンライン、App Storeをはじめとした自社オンラインサービスをWebObjectsで構築している。中でもiTunes Storeは最も利用者の多いWebObjectsアプリケーションであった。
歴史.
WebObjectsは1996年3月にNeXT Software Inc.から世界初のWebアプリケーションサーバとしてリリースされた。以降他製品との競争により開発が進み、ウォルト・ディズニー・カンパニー、デルコンピュータ、英国放送協会、日産自動車などの大企業でも使われるようになった。
その後NeXTはApple Computerに買収され、Apple ComputerはWebObjectsを手に入れてからソフトウェアをハードウェアの販売につなげる戦略を展開している。2000年には無制限の運用ライセンスを含めたWebObjectsの価格を、5万ドルから699ドルに大幅に値下げした（当時の日本円で約692万円の値下げ）。2001年5月にはWebObjectsの運用環境を含めたMac OS X Serverの販売を開始した。Mac OS X ServerにはWebObjectsの無制限の運用ライセンスも含まれているので、WebObjectsは実質的に無料である。
なお、現在もAppleはバージョン5.2の販売を継続している。WebObjects 5.2はWindows 2000 ServerとSolaris 8での運用を公式にサポートしており、Windows 2000 Professional用の開発ツールが付属している。
2005年6月にはバージョン5.3がリリースされ、WebObjectsは単体の製品からMac OS Xの一部として移行した。699ドルで販売されていた開発ツールとフレームワークはXcodeに付属するようになり、WindowsやSolarisなど他プラットフォームのサポートを打ち切った。一部の開発ツールのインタフェースが一新されたが、主な機能にほとんど変更はなかった。AppleはこのままWebObjectsをXcodeに統合する方針だったが、この方針はすぐに変更されることとなった。
2006年8月、AppleはWWDCでCocoa-Javaブリッジの廃止を告げた。WebObjectsの開発ツールはすべてCocoa-Javaブリッジを利用して実装されていたが、Appleは再実装を行わないことに決めた。これにより、WebObjectsの開発ツールもすべて廃止されることとなった。
AppleはWebObjectsのランタイムのみ開発を継続することにし、開発ツールの開発をオープンソースコミュニティに任せることにした。オープンソースのツールの中でも代替可能なものは、EclipseのプラグインであるWOLipsである。WOLipsは、すでに何年も重要な更新のないAppleのツールに匹敵する機能を持っていた。ただしEOModelerに相当する機能だけ欠けていたが、Appleの方針が定まったことで、急ピッチで開発が進められた。
2007年10月、Mac OS X Leopardの開発ツールに含まれる形でWebObjects 5.4がリリースされた。ライセンスキーが不要になり、プラットフォームと開発・運用の区分に関係なく使えるようになった。Mac OS X Leopardの開発ツールからWebObjectsの開発ツールが廃止され、XcodeでもWebObjectsプロジェクトを開発できなくなり、事実上WOLipsが唯一の開発ツールとなった。
フレームワーク.
WebObjectsで使われる主なフレームワークは次の3つに分けられる。
WebObjects フレームワーク (WOF).
WebObjects（ウェブオブジェクツ）フレームワークは、Webインタフェースとステート管理の機能を提供する。Webページを「テンプレート（HTMLファイル）、ロジック（Javaクラス）、両者間の設定ファイル（バインディングと呼ぶ）」の3つの要素で構成し、コンポーネントと呼ばれる単位で管理する。Webページ表示時には、テンプレート内の<WEBOBJECT>タグが設定に応じてHTMLに変換される。
このフレームワークはハイパーリンクやフォームコントロールも管理する。フォームの入力値は適切なオブジェクトに変換され、コンポーネントオブジェクトに代入される。ハイパーリンクや送信ボタンをクリックすると、コンポーネントオブジェクトのメソッドが呼び出されるようになっている。
また、ステート管理によりコンポーネントオブジェクトはHTTPトランザクションを越えて保持される。そのためオブジェクトの状態をHTMLとして表示したものがWebページとなる。WebObjectsアプリケーションでは、ユーザはブラウザを通してオブジェクトを操作していると言える。
Enterprise Objects フレームワーク (EOF).
Enterprise Objects（エンタープライズオブジェクツ）フレームワークは、関係データベースとオブジェクト（Enterprise Object、エンタープライズオブジェクト、略してEOと呼ばれることが多い）をマッピングする。必要に応じてSQL文を生成するため、データベースの問い合わせから保存までオブジェクトを通して操作することができる。
EOFの大きな特徴はデータ構造としての関係データベースをマッピングするだけでなく、DBMSとしての機能（トランザクション管理、同時実行制御、整合性など）を備えている点にある。特にトランザクション管理を行うオブジェクト (EOEditingContext)が中心となり、多くのデータベース操作はこのオブジェクトを通して行われる。データベース操作後はオブジェクトとデータベースが同期され、SQL文も随時生成されるので、データベースを特別に意識しなくてもプログラミングすることができる。
Foundation フレームワーク.
Foundation（ファウンデーション）フレームワークは、基本的なデータ構造やWebObjectsに必要な機能を提供する。前述したフレームワークはこのフレームワークに依存している。
このフレームワークは配列や辞書などの基本的なコレクションクラスも持ち、一部機能がJava標準ライブラリと重複する。バージョン5以前のWebObjectsはObjective-Cで開発されており、NeXTSTEP / OPENSTEPの同名フレームワークに大きく依存していた。そのためJavaに移行する際に同名フレームワークがほぼそのまま移植された。ただし、多くのクラスでJava標準ライブラリと同じインタフェースが実装されている。
ルールベースのアプリケーション開発.
WebObjectsにはEOFの設定ファイルを与えるだけで各種データベース操作（検索、追加、更新、削除）を行うアプリケーションを作成する機能があり、プロトタイプを素早く作成することができる。このアプリケーションは起動時に設定ファイルからデータベースの情報を取得し、動的にWebインタフェースを生成する。アプリケーションをカスタマイズするには主にルールを用い、ルールの変更は再コンパイルをしなくともアプリケーションに反映される。
ルールベースのアプリケーションは次の3種類。
Javaとの互換性.
WebObjectsはJavaで実装されている。
オープンソースの代替ソフトウェア.
OPENSTEPと同様、WebObjectsが周囲に与えた影響は小さくない。
WebObjectsがObjective-CからJavaに書き直されてから、オープンソースの代替ソフトウェアが数多く作られてきた。
Objective-CやJavaを含め、様々な言語で影響を受けたフレームワークが開発されている。