SHOEISHA iD

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

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

Javaで軽快に使える「軽量フレームワーク」特集

Javaで軽快に使える「軽量フレームワーク」特集
~Apache Wicketで簡単Webアプリ作成(1)

第1回

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

 時代がライトウェイト言語へとシフトしつつある中、軽快に使えるフレームワークが次々登場してきました。本連載では、Javaで注目されている軽量フレームワークの中から注目株をピックアップし、概略を紹介します。第1回目の今回は「Apache Wicket」の基本的な構成と使い方を覚え、実際にWebアプリケーションを作ってみましょう。

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

はじめに

 以前は、Javaの世界でフレームワークと言えば「Struts」と定番が決まっていました。しかし、フレームワークによる開発は、どうしても大掛かりなものになりがちです。時代がライトウェイト言語(Lightweight Language、PHPやRubyなどのスクリプト言語)へとシフトしつつある中、重量級のフレームワークは、やや時代遅れな印象をもたれてしまうのは仕方のないことでしょう。

 もっと軽快に使えるフレームワークがあれば、と思う人は多かったに違いありません。この数年の間に「軽量フレームワーク(Lightweight Framework)」と呼ばれるものが次々と登場するようになりました。軽量フレームワークは、はっきりとした厳格な定義があるわけではありませんが、従来の大掛かりなフレームワークに比べ、もっと軽快に取り扱えるものを一般にそう呼ぶようになりつつあります。

 本連載では、こうした軽量フレームワークの中から注目株をピックアップし、その概略を紹介していこうと思います。まず最初に取り上げるのは、軽量フレームワークという言葉を生み出した「元祖」といってもいい「Apache Wicket」です。

対象読者

  • Javaで手ごろなフレームワークを探している技術者
  • 最近のフレームワークをごくざっと理解しておきたい方
  • Web開発の手法がどうも気に入らない、と常々考えているJavaプログラマ

Apache Wicketとは?

 「Apache Wicket」は、ご存知Apache Software Foundationが提供するWebアプリケーション開発フレームワークです。このWicketは、それまでJavaの世界で広く使われていたフレームワークの考え方とは、おそらく正反対の設計思想で作られています。

 従来のフレームワークは基本的に「いかにして記述するソースコードを減らすか」を考えられていたように思えます。「さまざまな設定情報などは極力ソースコードから切り離し、テキストファイルベースの設定ファイルで記述する」「独自のテンプレートなどを駆使し、なるべくソースコードとして書かなければならない部分を減らしていく」といった考えです。ページ遷移だの各種の設定だのといったものはただ設定ファイルを書き換えるだけで済み、プログラムを再コンパイルする必要もないため、開発が楽になるというわけです。

 Wicketはまったく反対です。これは「すべてをJavaで記述するフレームワーク」なのです。Wicketで作成するのは、ページのテンプレートとしてのHTMLと、Javaのソースコードだけ。作成する必要がある設定ファイルの類いは、わずかにサーブレットを登録するweb.xmlの修正だけです。HTMLファイルにしても、JSPのように特殊なタグや処理を埋め込んだりするわけでなく、ごく普通のHTMLに専用の属性を追記するだけで、後はすべてJavaで書くのです。

 「それのどこが、新しい軽量フレームワークなんだ?」と思うかもしれません。しかし、実際に使ってみると、Wicketの目指すところが次第にわかってきます。Wicketは、Webアプリケーション開発のすべてを、Javaプログラマの手に取り戻そうとしているのです。皆さんがWebアプリケーションの開発を行う際の作業を思い起こしてみてください。XMLファイルの記述、JSPの作成、サーブレットの用意、フレームワーク用の設定ファイルの作成、プロパティファイルの作成・・・。Webアプリケーション開発作業はまるで、たくさんの種類の異なる端切れのようなものを縫い合わせてパッチワークをしているような感覚に陥ります。所詮、Webなんてのはさまざまな技術の寄せ集めなんだ、そう思いながらあちこちの種類の異なるファイルを書いていませんか。

 Wicketによる開発は、そのスタイルを一変させます。HTMLでページを用意したら、後はひたすらJavaのソースコードを書くだけです。非常に素晴らしいのは、そこで記述されるのはGETやPOSTに応じて呼び出されるメソッドなどではなく、ただ「クラスの定義」なのです。Webページで必要とされるさまざまな要素は、すべてコンポーネントとして用意されており、それらを組み込んでいくだけです。実際にコーディングをしていくと、まるでawtやSwingのコードを書いているような錯覚に陥ることでしょう。Webアプリケーションを作っているという感じはまるでありません。

 これこそが、Wicketが実現しようとしている世界なのです。Javaプログラマにはあまりにおなじみの、コンポーネントを中心とした開発スタイル。それまでのWeb開発に見られたような「Javaで開発しているといいつつも、実はただ指定の関数を定義しているだけ」というようなものとはずいぶんと違います。

Wicketの入手と構成

 では、Wicketを利用してみましょう。Wicketは現在ここからファイルをダウンロードできます。左側に見えるメニューから「Releases」という項目を探してください。ここに、各バージョンごとにリンクが用意されています。本稿執筆現在「Wicket 1.4」が最新版となっているので、このリンクをクリックしてください。「Apache Download Mirrors」というページになり、ダウンロードのためのミラーサイトが表示されます。ここからサイトをクリックし、ダウンロードします。ファイルは、tar.gz形式と、zip形式のものがアップロードされています。Windowsユーザーであれば、「apache-wicket-xxx.zip」(xxxはバージョン番号)というものをダウンロードすればよいでしょう。

 圧縮ファイルを展開すると、その中にはいくつかのフォルダとファイルが保管されているのが分かります。それぞれ次のようになります。

  • apidocs:WicketのAPIドキュメントが用意されています
  • lib:Wicket関連のライブラリがまとめられています
  • licenses:Wicketで使用している各種ライブラリのライセンスの説明です
  • src:Wicketのソースコードです
  • README/NOTICE/LICENSE/CHANGELOG-xxx:リードミー、注意事項、ライセンス説明などのファイルです

 Wicket本体となるのは「lib」フォルダです。フォルダの中を見て、非常に多くのファイルが用意されていて驚いた人もいることでしょう。これらは、別にすべて必要なわけではありません。Wicketで使用するものやさまざまな用途で使う拡張ライブラリの類いまで一式がまとめられているのです。

 Wicketの本体は「wicket-xxx.jar」というファイルだけです。とりあえずWicketを使うだけなら、このファイルだけあればOKです。ただしWicketでは、ログの出力にJUnit、SLF4jなどを使うため、これらのファイルもあわせて用意する必要があります。これらは別途ダウンロードしてもよいですが、サンプルファイルの中からコピーして利用するのが1番でしょう。「lib」フォルダ内に「wicket-examples-xxx.war」というファイルがあるはずです。これを展開して、WEB-INF/libを開いてください。中に、多数のJarファイルが用意されています。この中から、以下の3つのJarファイルを取り出してください。

  • log4j-xxx.jar
  • slf4j-api-xxx.jar
  • slf4j-log4j12-xxx.jar

 先のwicket-xxx.jarとこの3つの計4ファイルを用意すれば、Wicketを使えるようになります。

会員登録無料すると、続きをお読みいただけます

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

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

メールバックナンバー

次のページ
Webアプリケーションの作成

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

  • X ポスト
  • このエントリーをはてなブックマークに追加
Javaで軽快に使える「軽量フレームワーク」特集連載記事一覧

もっと読む

この記事の著者

掌田 津耶乃(ショウダ ツヤノ)

三文ライター&三流プログラマ。主にビギナーに向けたプログラミング関連の執筆を中心に活動している。※現在、入門ドキュメントサイト「libro」、カード型学習サイト「CARD.tuyano.com」を公開...

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

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

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/4459 2009/10/22 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

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

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

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

メールバックナンバー

アクセスランキング

アクセスランキング