SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Apache Beehiveの開発を体験する

Apache Beehiveの開発を体験する(コントロール作成編)

Apache Beehiveによるコントロールの作成と利用


  • X ポスト
  • このエントリーをはてなブックマークに追加

企業の業務システムや電子商取引などのアプリケーションで、J2EEは急速に普及してきました。また近年、SOA(サービス指向アーキテクチャ)と呼ばれる大規模なシステムを複数のサービスとして分割して開発する手法が脚光を浴びています。今回は、これらJ2EEやSOAのアプリケーションを簡易に開発することを目的としたApache Beehiveを取り上げ、その概要とコントロールについて詳細に解説をします。

  • X ポスト
  • このエントリーをはてなブックマークに追加

はじめに

 企業の業務システムや電子商取引がJavaでWeb化されるにつれ、J2EEは急速に普及してきました。しかし、その複雑すぎる仕様が高い学習コストとバグの原因にも繋がり、多くの開発者を悩ませてきました。また近年、SOA(サービス指向アーキテクチャ)と呼ばれる、大規模なシステムを複数のサービスとして分割して開発する手法が脚光を浴びています。今回は、これらJ2EEやSOAのビジネスアプリケーションを簡易に開発することを目的にApache Software Foundationが開発を進めているApache Beehiveを取り上げ、その概要とコントロールについて詳細に解説します。

対象読者

 J2EEアプリケーションの開発者。またはJ2EEの開発に興味がある読者。

環境

 本稿では、Apache Beehiveで実装されたサンプルアプリケーションが正しく動作する環境が必要になります。必要なものを表にまとめました。Beehiveに関しては、サンプルアプリケーションに含めているためダウンロードしなくても動作します。なお、J2SE、Tomcatの基本的な環境設定について知りたい方は、サーバサイド技術の学び舎 - WINGSにある「サーバサイド環境構築設定」を参照してください。注意点として、Apache Beehiveでは、アノテーション(注釈)などの機能を多用しているため、J2SE 5.0以上でなければ正常に動作しません。

必要なライブラリ
ライブラリバージョンダウンロード元
J2SE5.0http://java.sun.com/j2se/1.5.0/download.jsp
Ant1.6.5http://ant.apache.org/bindownload.cgi
Tomcat5.5.12http://tomcat.apache.org/download-55.cgi
Beehive1.0.1http://beehive.apache.org/releases/release-1.0.1.cgi

J2EEの複雑さ

 J2EEには、EJB(Enterprise JavaBeans)、JMS(Java Message Service)、JDBC(Java DataBase Connectivity)、JCA(J2EE Connector Architecture)などのさまざまな仕様が存在します。それら多くの仕様は使いこなすことにより非常に大きなメリットをもたらしますが、正しく使いこなすには、簡単に上げるだけでも次のような知識が必要となります。

  • JNDIによるリソースの取得
  • EJBのリモート/ホームインターフェイスを利用してビジネスメソッドにアクセスする方法。またステートレスセッションBean、ステートフルセッションBeanの違いと使い分け
  • JMSの接続/セッションとメッセージの作成方法、キューへの参照
  • コンフィグレーションファイル(ejb-jar.xmlなど)への設定

 これらの複雑さにより、J2EEは非常に学習コストが高いものであり、多くの開発者から敬遠されてきました。さらに、その複雑さから設定ファイルのミスなども起こりやすく、バグやシステムのパフォーマンスにも影響を与えてきました。

Apache Beehive

 Apache Beehiveは、J2EEアプリケーションやWEBサービスを容易に、かつ効率的に開発するために立ち上げられたプロジェクトで、次の3つのサブプロジェクトに分かれています。

Beehiveのサブプロジェクト
サブプロジェクト名概要
NetUIStrutsをベースとしたWebアプリケーションのフレームワーク。メタデータの機能を使用することにより、「struts-config.xml」に記述していた設定を自動生成する機能をもつ。
コントロールメタデータを使用することにより、容易にコンポーネント開発を行えるようにした軽量コンポーネントフレームワーク。
Web Service Metadata(WSM)アノテーションを利用したWebサービス用の駆動プログラミングモデル。JSR181の実装。

 これらのサブプロジェクトは、1つのアプリケーションですべてのサブプロジェクトを取り込んだり、どれか1つのサブプロジェクトを単体として取り込んだりして、効率的な開発を行うことができます。

アノテーションの基礎知識

 Apache Beehiveでは、J2SE 5.0の新機能として追加されたアノテーション(=注釈、JSR175)というメタデータ機能が多用されています。そのため、アノテーションの基本的な知識について知っている必要があるため、ここで簡単にですが解説します。「アノテーション」とは、Javaのコードにメタデータ機能をもたせたものです。「メタデータ」とは、データに関する情報のことで、ここではJavaコードのパッケージ、クラス、フィールド、メソッド、パラメータ、変数などのデータに対して、ある特定の情報を付けることを意味します。例えば、あるメソッドに対してOverrideアノテーションを付けることによって、そのメソッドがスーパークラスからオーバーライドされたものであるかをコンパイル時にチェックするといったことが可能です。アノテーションはクラスやインターフェイスと同じように通常、1つのファイルに1つのアノテーションとして記述されます。中身がないシンプルなアノテーションは次のように記述できます。

public @interface Test { }

 @interfaceという見慣れない記述がありますが、これがアノテーションの宣言を意味しています。このアノテーションは、先ほどの説明の通り、クラスやメソッドに対して付けることができます。例えば次のようにして、nameという名前のStringフィールドにTestアノテーションを付加しています。

@Test private String name;

 これらのようにアノテーションを付けることで、「このメソッドは~~~のメソッド」、「このクラスはコントロールのためのクラス」などの意味をつけ、IDE(統合開発環境)やソースからの自動生成処理などでそれを読み取り、データチェックなどの処理を施すことができるようになります。

コントロールの概要とアーキテクチャ

 ここからは、Beehiveのコントロールの解説に入ります。コントロールは、先にも説明したようにアノテーション機能をフルに使うことによって、容易にコンポーネント開発を行えるようにしたものです。これまでJ2EEでは、さまざまなリソースへアクセスするためのコーディングを個別に書いていましたが、それらの記法を統一化することができます。また、ツールによる開発も簡単に行えるように考慮されているため、開発生産性を高めることができます。

コントロールの構成

 基本的なコントロールは、次の3つのクラスで構成されています。

コントロールの構成クラス
名前概要
コントロールパブリックインターフェイスコントロールの一連の処理とイベントを定義したもの
コントロール実装クラスコントロールパブリックインターフェイスを実装したもの
コントロールBeanクラスコントロールパブリックインターフェイスとコントロール実装クラスをもとに生成されるJavaBean

 新しいコントロールを作成するには、コントロールパブリックインターフェイスとコントロール実装クラスを作成する必要があります。コントロールBeanクラスはそれをもとに、BeehiveのオプショナルAntタスクによって自動的に生成されます。以下にそのクラスの関係図を載せます。以降の項でこのクラスを作成していきますので、関係図を頭に入れておいてください。

コントロールのインターフェイスとクラスの関係図
コントロールのインターフェイスとクラスの関係図

 さらに、それらで構成されるコントロールが、コントロールを利用するクライアントとコントロールから参照されるリソースとの関係を示したのが下の図になります。

コントロールアーキテクチャの要素とフロー図
コントロールアーキテクチャの要素とフロー図

 また、コントロールにはコントロールを構成する各要素が存在します。要素の一覧を以下の表にまとめました。

コントロールの要素一覧
要素名概要
操作クライアントの要求に応えてコントロールが実行するアクション
イベント一定の条件が一致したり、内部イベントが発生した場合に、コントロールからクライアントへ通知されるアクション
プロパティクライアントから渡されるパラメータ
コンテキストコントロール内外のさまざまなプロパティ、サービスにアクセスするためのもの
コンテキストライフサイクルイベントコントロールの初期化~終了などのライフサイクルに基づいて、定義されたイベント

次のページ
コントロールの作成とビルド

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
Apache Beehiveの開発を体験する連載記事一覧
この記事の著者

山田 祥寛(ヤマダ ヨシヒロ)

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるReact実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

WINGSプロジェクト 佐藤 真介(サトウ シンスケ)

WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/378 2006/10/11 19:38

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング