HOME
wisdomとは、業務アプリケーション開発を目的としたJavaで開発されたオープンソースのフレームワークです。過去に多数の業務システム開発のフレームワークとして利用された実績があります。

- wisdomとは？
- wisdomの歴史
- 概要

wisdomとは？
wisdomとは、業務アプリケーション開発を目的としたJavaで開発されたオープンソースのフレームワークです。過去に多数の業務システム開発のフレームワークとして利用された実績があります。
wisdomは「アプリケーション開発」のための汎用性が高い、かつ単純なAPIを持った振るスタックのJavaフレームワークです。
wisdomを利用すると以下のようなメリットがあります。

- 標準化が自然と進み、問題発生部分が局所化されるため迅速に対応が取れ、品質が向上します。
- 外部・内部設計書とフレームワークを体系づけることによってドキュメントの品質とプログラムの関連性が向上するので、保守が容易になり、、資料も品質があがり、価値が向上します。
- 必要なコーディングでアプリケーションが開発できるので、品質を落とす要因そのものであるコーディングのためのコーディング作業を減らすことができます。
- 仕様書と体系付けて開発を行うので、システム開発作業そのものを正規化し最適化されたプロセスとして運用することができようになります。

大きな特徴は主に業務システムの構築に利用されてきた歴史から「システム開発のロジックの組み方」がテンプレートとしてフレームワークの中で決められています。そのため、wisdomを使用して開発したシステムは何がどこでどのように実装されているかがわかりやすくなる、という特徴があります。
アプリケーション開発はwisdomに沿って行うことになるので、JDKのバージョン、OSの環境の違いなどを考慮しながら開発する必要はありません。

wisdomの歴史

wisdomの歴史は古く、Java ServletによるWebシステムの黎明期に始まりました。制作者の鴻田孝雄はJavaでの大規模システム開発に着手して、開発方法に 大きな改善点があることを感じ、それを少しづつ形にしていったものがwisdomです。
wisdomが完成するまで、鴻田孝雄は3回ほどのプロジェクトで当時、基盤、共通部分といったものを開発しプロジェクトに適用してきましたが、それらの多くは巨大で、享受できるメリットが小さい複雑なコーディングルールの塊でした。
鴻田孝雄は、数回のプロジェクトを経た基盤部分を全面的に見直し無駄な部分、複雑な使用方法を持ったAPIを一掃しました。これが最初のwisdomです。このときに名前が「wisdom」となりました。
このときのwisdomの特徴は必要な部分はすべてJavaインターフェースに抽出したことがあげられます。アプリケーション開発で必要となるAPIはインターフェースとして定義し、実装を行うのがwisdomです。
この時点で決定されたJavaインターフェースは2004年2月に決定されてから変更されておらず、以降wisdomはさまざまなプロジェクトのフレームワークとして採用され、この インターフェースが利用され続けています。
wisdomの開発事例抜粋

サービス | イベント企画 会員向けサービスサイト
流通 | 食用牛トレース
医療 | 支払い入力システム
製造・流通 | 化粧品会社　海外販売実績検索システム 化粧品会社　会員向けサービスサイト 化粧品会社　会員向けサービスサイト管理システム
通信 | 携帯会員向けサービスサイト 携帯会員向けサービスサイト管理システム
人材サービス | アルバイト検索サイト、携帯版アルバイト検索サイト アルバイト原稿登録システム
※これらはSIベンダー様のフレームワークとして採用された事例です

wisdomという名前には「英知」などの硬い意味もありますが、開発当初は「ちょっと知恵でずいぶん楽になるのにな」という軽い意味でwisdomと名づけられました。
概要
下図がwisdomの概要図です。
図) wisdomのアーキテクチャ
wisdomは単体でフレームワークとして機能し、下記のように大きく2つに分類された機能を提供します。
wisdom.core.application.*パッケージ
このパッケージはWebアプリケーションを作成する上で必要なAPIを集約したパッケージで以下のような機能を提供します。

- MVCパターンを制御するコマンドクラス
- ログ出力
- トランザクション管理
- セッション管理
- 認証管理
- 添付ファイル

wisdomx.*パッケージ
このパッケージはWebアプリケーションを作成する上でのテンプレートに近いクラス、インターフェースの定義しています。

- 一覧画面表示作成用汎用クラス
- 一覧、登録/更新のテンプレートクラス
- HTMLタグ用のデータ値格納クラス
- HTMLタグ用のデータ値表示クラス

上記のクラスを継承、利用してアプリケーションの開発を行います。それぞれは単純な形式のAPIになりますが、ログ、イベント情報の出力、認証チェックなどプロジェクトに必要な振る舞いをアプリケーション毎の共通クラスとして構築することによって開発の生産性を向上することができます。