Apache Wicket PMCがApache Wicket 7.2.0をリリースした。このリリースはマイナリリースだが,新機能も含まれている。今回のリリースとApache Wicketの状況を詳しく聞くためInfoQは,Apache Wicket PMCメンバのMartijn Dashorst氏にインタビューした。
InfoQ: まず何よりも,リリースおめでとうございます!リリースノートの“New and Noteworthy”のセクションには,1) JavaのNIO APIを使用したファイルシステムからのリソース読み込み機能,2) 外部サーバからのイメージのロード,という2つの機能が取り上げられていますが,この2つが重要な理由について,InfoQ読者に説明して頂けますか?
Dashorst: 最初の機能はファイルシステムからブラウザに,メディアコンテンツを直接,簡単にストリームできるようにするものです。zipアーカイブに保存されたビデオファイルがあれば,これを直接,Java NIO APIを使ってストリームできます。
Javaコードは,
URI uri = URI.create("jar:file:///videosFolder/videos.zip!/folderInZip/Video.mp4"); Path path = FileSystemResourceReference.getPath(uri); FileSystemResourceReference ref = new FileSystemResourceReference("video", path); Video video = new Video("video", ref); add(video);
HTMLマークアップは,
<video wicket:id="video"></video>
VideoコンポーネントがHTMLドキュメント内に適切なメディアタグを生成して,
FileSystemResourceReference
がブラウザの要求時にビデオコンテンツの直接ストリームを可能にする,という仕組みです。WicketはApache OpenMeetingプロジェクトなどでも使われていますから,そういった場所で便利な機能だと思います。
ExternalImage
コンポーネントは,既存のコンポーネントを現在のWebベストプラクティスを使ってスピードアップするという,要するに既存コンポーネントを再利用するための機能です。CORS(cross-origin resource sharing)に対応して,外部URLのリストで指定されたsrcSet
属性をサポートします。これによってアプリケーションでは,レスポンシブなマルチリゾリューションイメージを使用できるようになります。
InfoQ: Wicketのメーリングリストのトラフィックが減少している(http://wicket.markmail.orgによると,1日平均6メッセージ)ようなのですが,これはJavaScript MVCフレームワークの普及が原因なのでしょうか?
Dashorst: トラフィックが減っていることには,さまざまな要因があると思います。
他のフレームワークがいくつもシャットダウンしている – 2週ほど前にも,JBossがRichFacesの開発終了を発表しています – ことでも分かるように,サーバサイドフレームワークの世界は,その魅力のほとんどを失ってしまいました。ちょうど1年前の“State of Apache Wicket”に書いたように,Wicketは,2000年代中盤をかろうじて生き残った,わずか15のフレームワークのひとつなのです – ‘生き残った’というのは,昨年中にリリースを行なった,という意味です。
書籍の発刊や,質問が不要になるようなユーザガイドのオンライン公開,他の開発者に質問できるStack Overflowのような存在も,当然ですが要因のひとつです。
Wicketは歴史が長いので,動作を依存しているアプリケーションもたくさんあります。そこで私たちは,6.0以降でセマンティックバージョニングを採用して,主要APIの変更を最小限にするように努力しています。これが原因でフレームワークの改変が遅くなって,結果としてコミットのトラフィックが減少している部分もあります。
要するにサーバサイドフレームワークは,すでに枯れた技術なのです。 大幅な改良のために付け加えるべきものは多くありませんし,強力な新APIを新しいユーザに提供できるからといって,Wicketの根本的な書き直しを現行ユーザが支持してくれるとも思えません。
これはWicketが将来的に消える運命にある,ということでしょうか?いいえ,私たちは今後もずっと,Wicketの開発とサポートを続けることを約束します!コアチームには常に新しい開発者が参加して,プロジェクトを前に進めてくれています。ここ数年のダウンロード数は月70,000で安定していますし,Wicketを使用して新たにスタートするプロジェクトは今でもあります。
InfoQ: 今後Wicketにどのような機能を追加したいと思っていますか?
Dashorst: Java 8サポートの充実: ラムダ式はWicketのイベント処理や,コンポーネントとドメインオブジェクトの接続と相性がよさそうです。ただしメモリ要件については,低い状態を維持したいと思っています。この件はWicket 8の計画にも含まれていますが,タイムラインはまだ設定されていません。
CDIやBean検証フレームワークなどJava EEのテクノロジには引き続き注目していますし,統合性を維持しておきたいと思っています。
パフォーマンスの向上が可能な部分についても目を向けています。最近でも,あるページにO(N^2)の複雑性を持つ3レベルのコンポーネントを追加していたWicketのコア機能を置き換えて,およそO(1)のアルゴリズムに変更したばかりです。この問題はずっと前から残っていたもので,CPUサイクルよりも,どちらかと言えばメモリ消費の最適化になります。
それから,Wicketコアの個人的なウィッシュリストがあります。WicketではAJAX処理のほとんどでサーバ側のステータスを利用していますが,これをステートレスなAJAXにしたいのです。Wicketの例題プロジェクトを見直してユーザガイドに統合したいとも思っています。ユーザガイドが生きたコードをインポートできるようにしたいのです。
InfoQ: Spring Boot starter for Apache Wicketについてはどう思いますか?
Dashorst: 素晴らしいですね!私もそのようなプロジェクトを作ろうと努力はしていたのですが,完成には至っていません。私たちのWebサイトから提供していたクイックスタートプロジェクトからスタートして,Wicketベースの新しいプロジェクトの開発を始めるには,ちょうどいい場所だと思います。
このプロジェクトは,コミュニティの活発さを示す好例だと思います。Wicketには数多くのオープンソースがインテグレーションされています。例えば私たちのWicket Stuffプロジェクトは,100近いプロジェクトで構成されているのです。Wicket Bootstrapプロジェクトは,最新のBootstrapとWicketのリリースに追従しています。JQuery UIやKendo UIをWicketに統合しようとしているコントリビュータもいます。サーバサイドフレームワークへの関心が薄れているとはいえ,Wicketが終了するという噂は誇張が過ぎます。
InfoQ: 他に何か追加したいことはありますか?
Dashorst: ここまで読んで,Wicketを使ったことがない,あるいはしばらく使っていないというのであれば,ぜひ試してください!前に述べたSpring Bootインテグレーションや,私たちのMaven Quick Startが使えるようになって,以前よりもずっと簡単になっているはずです。
Wicketを実際に使用している例についてもっと知りたいのであれば,tumblrの“Built with Apache Wicket”サイトをご覧ください。また,Twitterアカウント@apache_wicketをフォローすれば,コミュニティで起きていることや,Wicketで構築されたすべてのWebサイトが分かります。
この記事を評価
- 編集者評
- 編集長対応