Uniface
Uniface（ユニフェイス）は、携帯、メインフレーム、Web、SOA、Windows、JEEとNETの環境で動作するエンタープライズアプリケーションを開発、実行するプラットホームである。Unifaceアプリケーションは、データベースとプラットホームに依存しない。Unifaceで作成されたアプリケーションは主なデータベース製品と統合を可能にする“インテグレーションフレームワーク”を提供する。
例えばメインフレームの製品（CICS、IMS）、Webサービス、SMTPやPOP電子メール、LDAPディレクトリ、.NET、C、C++プログラムとJavaとの統合を実現する。そして、Windows、Windows Mobile、Unixや（いろいろな）Linux、IBM iSeries/AS400、z/OSやVMSの下で稼動する。
Unifaceは、企業に不可欠なビジネスプロセスもサポートしており、重要な企業データを維持する複雑なシステムで利用が可能。
例えば、Webオンラインショッピング、金融取引、給与管理や在庫管理です。現在Unifaceは30カ国以上の数千社で使われている。そして、インストールベースでは数百万ライセンスにも上る。作成可能なUnifaceアプリケーションは、クライアント/サーバアプリケーションからWebアプリケーションの範囲に及ぶ。そして、データエントリー処理から、ワークフロー業務もカバーし、同様にイントラネット及び、インターネットを利用したポータルからアクセスも可能。Unifaceは1984年Inside Automationによってオランダで誕生し、後にUniface B.V.へとなる。そして1994年 デトロイトに拠点を置くCompuware社によって買収される。2014年には Marlin Equity Partners の買収により、オランダ アムステルダムに本社を構え、ワールドワイドにオフィスを持ったUniface B.V.へと戻る。
Uniface基盤は開発環境と実行環境を提供し、大部分はUniface Application Platform Suite(APS)のパッケージで提供される。APSには以下の製品を含む。Unifaceアプリケーション（開発環境、Uniface FlowとUniface Viewも含む）は、実行時に一般的なインフラ（システム環境）で稼動する。
そのうえ、Uniface JTi（Java Thin Client Interface）は、Unifaceのクライアント/サーバアプリケーションをインターネットに接続している全てのコンピュータから実行させることができる。
Unifaceを記述するアプリケーションコードは手続き型言語であり、“PROCコード”と呼ばれる。Unifaceはカーネルとデフォルトコードによって、入出力ロジックの大部分を自動化する。ゆえにデフォルト機能の大部分はPROCコードを記述する必要はない。
Unifaceアプリケーションは、一つ以上のデータベース（ファイルシステム）にデータの作成、更新、削除を行えるコンポーネントベースのアプリケーション。インフラから完全に独立した形でアプリケーションは作成される。開発者は他の開発ツールで作成された非Unifaceコンポーネントを含む複合アプリケーションの統合も可能。そして、利用時にはクライアント/サーバ環境、Web環境、モバイル環境、Webサービス及びメインフレーム環境に展開することが可能。
Unifaceは、マルチティアアプリケーション構築のために異なるレイヤの為にいろいろなコンポーネントを用意している。
プレゼンテーション層のためのユーザインタフェース用のコンポーネント。
ビジネスロジック層のためのコンポーネント。ビジネスルールとタスクの特有の機能を取り扱う。ユーザインタフェースはない。
データアクセス層は、Unifaceアプリケーションモデルで作成する物理データベース構築を含む。Unifaceは、SQL自動生成をDBMSコネクタから行うことで、物理的なデータアクセスを確実に行う。ネットワークとミドルウェアアクセスは、ミドルウェアドライバとUniface ルータによって実装される。
ランタイムエンジンは、アプリケーションコンポーネントを実行する。それはユーザインタフェースコネクタを用いたプレゼンテーションコンポーネント(GUI またはキャラクタベースがあります)を表示し、DBMSコネクタによってデータを送受信する。
Uniface開発はモデルドリブンとコンポーネントベースを基本に構築される。データ構造、ビジネスルール及びアプリケーションのデフォルト動作は、アプリケーションモデルから反映される。モデル定義はコンポーネントによって受け継がれ、再利用することも可能。 そして、コンポーネントに固有の機能を追加して、テンプレートは生産性を向上させ、モデル定義を利用することで、システムの一貫性を実現する。
アプリケーションモデルは、参照一貫性と共にエンティティ(テーブル)、フィールド、キー(インデックス)とリレーションを定義する。モデル内のエンティティとフィールドは、一式のトリガーとプロパティを持っている。
ビジネスルールは事前にアプリケーションモデル上のプロパティの設定を行い、アプリケーションモデル上のトリガーにProcコード（Unifaceの手続き型言語）を記述する。
トリガーはコードにとっての格納場所。トリガーがユーザの行うシステムイベントを受け付ける。例えば、や< Read>、< Leave Field>というトリガーが存在する。トリガーは他にチェック機能を記述したり、関連チェックを行うトリガーも存在する。
アプリケーションモデルレベルのトリガーの使用は、ビジネスオブジェクトを集約するのに利用される。故に物理データ構造から論理的にロジックを分離が可能になる。一箇所にシステム全体の標準の動作を記述することが可能になり、再利用性の高い、3層アーキテクチャのアプリケーションを迅速に作成することが可能になる。
アプリケーションモデルで記述されたオブジェクトはコンポーネントで再利用される（継承される）。開発者は、アプリケーションモデルから、画面の部品をレイアウトキャンバス（画面レイアウト作成用の画面）に描画するか、コンポーネントストラクチャーのツリーにオブジェクトの挿入を行い、作成するコンポーネントにオブジェクトを配置する。アプリケーションモデルにないオブジェクト（例、制御部品、フィールド、メニュー、コンポーネント変数）を加えることもできる。
アプリケーションモデルに定義されたプロパティとトリガーはコンポーネントにコピーされることによって継承される。個別の機能を提供するために、コンポーネント単位に変更することは可能。これは、アプリケーションモデルとコンポーネントの継承を断つことになる（継承をアプリケーションモデルの内容に戻すことは可能）。　アプリケーションモデル上に記述したコードもしくは、プロパティをモデル上で変更した時は、各コンポーネントに保持しているすべてのオブジェクトの定義を更新するために再コンパイルが必要になる。
Unifaceは、アプリケーションモデルの再利用を目的として、データベースにメタデータ（コンポーネント定義、コンポーネントレイアウト、PROCコード、その他）を維持する。リポジトリはUniface 開発環境を経由しアクセスされ、リポジトリ整合性（機密性）を守る。しかしながら、リポジトリ構造についてドキュメント化されており、例えば(推薦されていないけれども)レポート作成の為に直接リポジトリとのインターフェースを可能にする。
集中化したリポジトリを利用することで、ソフトウェア開発チームで共有される。（チームビルディングが可能）Unifaceは、Microsoft Common Source Code Control Interfaceをサポートするソースコードコントロールシステム（SCCS）と連携が可能。
Unifaceアプリケーションは、コードを変更することなく、携帯からメインフレームまでのプラットホームで展開（運用）することが可能。コンポーネント（スタートアップシェル、メニュー、ツールバーパネル、グリフ、グローバルPROC、インクルードPROC）は圧縮ファイルにパッケージ化され、全てのプラットホームに配布が可能なランタイムオブジェクトにコンパイルされる。ランタイムオブジェクトは、バーチュアルマシンとプラットホーム固有のインタプリタを使用し実行される。(後に、Javaと他の言語は、この方法でUnifaceに続いた) Uniface Virtual Machineが存在している環境なら、1台のマシンの上でコンポーネントをコンパイルして、別の環境で実行可能。
Unifaceは、データベースコネクタ（ドライバ）を利用して、サポートするさまざまなデータベースとファイルシステムにアクセスを行う。DBMSコネクタは、Unifaceデータフォーマットを特定のデータベースに最も適当したフォーマットに変換しマッピングする。実行時にデータベース特有の拡張機能を利用するパラメータを設定することも可能（利用しなくすることも可能）。データベースコネクタが対応可能であれば、異なるデータベース間でデータを変換することも可能。UnifaceはAPI（Database Connector Interface）を提供します。これをカスタマイズすることで、データベースコネクタを作成することができる。
使用許諾はCompuware Distributed Licenseマネージャ(DLM)を利用して管理される。クライアント環境にライセンスを提供するサーバライセンス管理システム。この機能により、ローカル環境にライセンスを保持する必要をなくする。
当初UNISと呼ばれていた製品はInside Automationによって、1984年オランダで誕生したBodo DouqueはテクニカルディレクターFrits Kressと一緒に会社を立ち上げ、そして1986年までに、製品と社名をUnifaceに変更した。
Unifaceは米国規格協会 ANSI(American National Standards Institute) と3つのスキーマアーキテクチャに基づき開発された。最初の提案は1975年にあった。これは3つのスキーマ(メタモデル)から成り立つデータベース管理システムを構築する標準的なアプローチだった。
これはデータベース毎に1つだけある。Unifaceはアプリケーションモデル(いくつかのUnifaceバージョンではビジネスオブジェクトモデルやアプリケーションオブジェクトモデルとして知られている)として概念スキーマを実装する。
多くの外部スキーマがデータベースのために存在できる。Unifaceはコンポーネントとして外部スキーマを実装する。Unifaceが進化していく中で外部スキーマはフォームになった。ユーザへの表示の必要無い隠れたフォームはサービスになった。そしてサービスはビジネス層オブジェクトのセッションサービス、ビジネス層あるいはデータ層のエンティティサービスに分離した。表示の代わりに印刷されるフォームはレポー　トコンポーネントになった。サーバページ(USP)はWeb開発のために導入され、そしてその後のダイナミックサーバページ(DSP)はWeb2.0機能をサポートするために導入された。
Unifaceは接続された多くのリレーショナルデータベースに内部スキーマを保存し、データベースに依存しない。
Unifaceは、ネイティブのVAXファイル-管理システムRMSを使って、DEC-VAXマシンの上で開発された。この痕跡がまだモードを変えるためのゴールドキーの継続的な使用によって今日の製品で見られる(DECVTターミナルがキーボード上にゴールドキーか、イエローキーを持っていた。現在のゴールドキーは ただテンキーの+キーまたはファンクションキーに割り当てられている。)
製品の初期バージョンは、そのデータベースだけにアクセスすることに限定されていなかったが、FastBuildという名前でSybase RDBMSがバンドルされていた。
Unifaceは常に新しいテクノロジーとアプリケーションアーキテクチャを取り込んできた。これはこれまでの成功には大変重要な事であり、その理由はUnifaceで作成されたアプリケーションを移行、更新、そしてモダナイズでき、これまでの開発投資を無駄にしないからである。
Uniface Version 3 (1986)
Uniface3は最初に公開したリリースだった。 それはマルチデータベース（RMS、オラクル 、C_ISAM、イングレス とRDB）、バーチャルマシンインタプリタ、ストラクチャエディタ、Unifaceテキストとコマンドエディタをサポートした。
Uniface Version 4 (1988)
Uniface4ではテキストエディタ（現在のフォームエディタ）を改善した。印刷、ディスプレイサポートも改善され、MS-DOSに対するサポートを導入して、そしてCASEツールインタフェースを加えた。
Uniface Version 5 (1990)
Uniface5はPolyserverを使ったリモートデータベース接続の導入でクライアント／サーバの実装を可能にした。 そしてユニバーサルプレゼンテーションインタフェース （UPI）によるグラフィカル・ユーザインタフェースを導入した。 データベースは合計13のデータベースとファイルシステムをサポートするように拡張された、それはDOS、VMS、OS/2、Stratus VOS とUNIX上で利用可能になり、日本語のサポートも同じく導入された。
Uniface Six (1994)
Uniface6 では完全なグラフィカル開発環境への移行が完了した。 それはグラフィカルフォームペインタとアプリケーションモデルエディタから成る。DOL(ダイナミックオブジェクトライブラリ)を通して実装を改善し、マイクロソフトOLEに対するサポート及びアップル・マッキントッシュ のサポートを加えた。そしてパーミションコントロールの追加、バージョンコントロールの統合、パーソナルシリーズレポーティングツールを加え、幅広いプラットフォームをサポートするようになった。
Uniface Seven (1997)
Uniface7 はUnifaceリクエストブローカー（URB）アーキテクチャの導入を通してUnifaceと外部コンポーネント両方のコンポーネント統合にフォーカスした。URBはコンポーネント間で双方向の同期／非同期の通信をサポートする。リモートデータアクセスと同様、それに分割されたアプリケーションサーバとメッセージ交換が追加された。またUniface7 はWebアプリケーションサーバとUnifaceのリクエストディスパッチャー を使い、最初のUnifaceWeb開発と実装ツールを提供した。
他の拡張としては新しいコンポーネントタイプ（サービス、サーバページ、レポート）、シグニチャエディタとアセンブリワークベンチ、サブシステム、オペレーション、ノンモダルフォーム、コンポーネントインスタンス、拡張エディタ、ナビゲーション、拡張エディタプラグイン、新しいデバッガ、オンラインヘルプ、コンポーネントテンプレート、Webアプリケーションサーバ、妥当性検証の改善、Unifaceネームサーバ、グラフィカルパーティショニングマネージャー等が含まれる。
Uniface7には他にもいくつかのツールが導入された。
Uniface 8 (2001)
Uniface8はプロセス統合分野において主要な変化をもたらした。UnifaceルータとUnifaceサーバはスケーラブルなで、バランスがとれた実装を提供した。Webリクエストディスパッチャー（WRD）は、パフォーマンスを改善し、URDを置き換えた。またSOAPとXMLを使ったWebサービスのサポートが導入された。接続性と互換性が改善され、3階層のアプリケーションアークテクチャを実装するための方法が導入された。
その他にSOAP、COM、CORBAとMQSeriesに対応したコネクタが加えられた。ウィンドウとファイルマネージメントが改善され、新しい実装ユーティリティが導入された。またアプリケーションの配布を改善し3階層アーキテクチャを構成するサブタイプ、コンポーネントインスタンスのためのハンドル、そしてオートマチックガバレッジコレクションが加えられた。
Uniface 9 (2006)
Uniface9はGUIとユーザビリティの改善、わずかな実装と統合にフォーカスした。またWindowsモバイルに対するサポートが加えられ、設定と実装は圧縮されたアーカイブを使い単純化された。そしてUnicode のサポートは多言語機能をさらに向上させた。さらにWeb開発とXMLの改善は業界標準の先にUnifaceを位置づけるものであった。
他の機能としてカラーハンドリングの改善、ダイナミックメニュー、XMLAPI、アプリケーションモデルのダイアグラムエディタが含まれた。また、リファクタリングと実装をサポートするためのクロスフィファレンス機能と拡張されたWebサービス機能も加わった。
Uniface 9.4 (2010)
ポイントリリースであったにもかかわらず、Uniface9.4は十分な新しい機能が導入された。最も主要なフォーカスはリッチインターネットアプリケーション(RIA)である。クラシックなクライアント/サーバアプリケーションに慣れた同じツールと方法論を使い、リッチなクライアント/サーバアプリケーションの機能でWeb2.0アプリケーションの開発を可能にした。また、言語とロケールのサポートが十分に改善され、HTML電子メールのサポートにもあったようにセキュリティと暗号化の機能が加わった。
Uniface 9.5 (2011)
Uniface 9.5のリリースは、ワールドワイド・ウェブにおける製品統合の改善がされた。 JavaScript APIの導入では、クライアントサイド処理におけるパフォーマンス、統合、機能性と使いやすさにおいて利益をもたらすことができる改善と共に導入された。またセッション管理性能については、改善されたセキュリティを提供するために拡張された。そして、Webサービス処理においては、SOAPとRESTfulサービスの複雑なデータタイプをフルサポートしました。
最後にビジネスに不可欠なクライアント／サーバー・アプリケーションを持っている顧客のために特にグリッドウィジェットにおける改善がされました。
Uniface 9.6 (2012)
Uniface9.6のリリースはUnifaceクライアント・サーバGUI機能の大きな見直しを行いました。機能としてJavaScript APIを提供したHTML5コントロールや拡張されたTABコントロールそして新たに追加されたイメージのハンドリング、改良を加えたボタン等が含まれます。フォームコンテナコントロールは、ダイナミックなユーザーエクスペリエンスの開発を可能にし、'フォームの中にフォーム'を作成する事を可能にしました。GUIの見直しの他、Uniface9.6はUniface Webについても拡張を行いました。Webトランザクションのスコープをダイナミックに変更できる機能、Webページネーション、ヒットリスト処理、そしてWSDLとXML機能についても改善を行いました。Uniface9.6は、Uniface9の最後のリリースになり次にUniface10がリリースされます。2014年まではUniface9.6におけるマイナーな拡張を継続します。