BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース 統合コンポーネントとしてGWTを加えた Vaadin 7 が登場

統合コンポーネントとしてGWTを加えた Vaadin 7 が登場

ブックマーク

原文(投稿日:2013/02/28)へのリンク

 

Vaadinは,JavaベースWebアプリケーションフレームワークのバージョン7をリリースした。このVaadin 7プラットフォームは,同社としては2009年以来のメジャーアップデートになる。

Javaを使っているWebアプリ開発者の立場から見れば,Vaadin 7はWicketやJSF,あるいはGWT(Google Web Toolkit)などに相当するフレームワークのひとつだ。これらを比較してみれば,それぞれ類似点と相違点のあることに気付くだろう。Wicketとは特に共通点が多いが,VaadinがHTMLテンプレートの利用を必須としていないことが大きな相違点だ。JSFも同様で,サーバ側フレームワークであるという点は共通しているが,VaadinアプリケーションにはXML設定ファイルが必要なく,通常のJavaでプログラミング可能であるという違いもある。

Vaadinグループは5年以上にわたってGWT Steering Committeeのメンバを続けている。今回のVaadin 7では,コアコンポーネントとしてそのGWTを新たに採用した。2012年6月の ブログ記事 で同社のLehtinen氏は,"現在GWTを使ってアプリを開発しているのであれば,プロジェクトのJarファイルを置き換えるだけで,Vaadinに移行することができます" と述べている。GWTの採用により,ユースケースにもよるが,従来のVaadinアプリケーションに対していくつかのメリットが生まれている。GWTアプリケーションの一般的なメリットとしては,オフラインでも動作する,サーバ側の状態管理を必要としないために多くの同時ユーザ(10,000以上)をサポート可能である,レイテンシが低い,などがある。ただしJava開発者とすれば,すべてがJavaで記述されていて,Javaサーバあるいはポータルで動作する従来型のVaadinベースUIの方が,開発上の苦労が少ないことは間違いないだろう。

Vaadin 7には,GWT以外にも 65の新機能 が実装されている。FAQ ページには,Java EE標準に準拠して単一jarファイルとして実装されていること,標準的なデスクトップUIプログラムパターンを採用していること,などが紹介されている。さらには,40,000以上の活動的な登録メンバで構成されるオープンソースコミュニティのサポートとフィードバックも,今回のフレームワークの開発に活かされている。

InfoQではJoonas Lehtinen 氏 (Vaadin.comのCEO) にコンタクトを取り,Vaadin 7に関する詳細を聞いた。

InfoQ: Vaadinの最新リリースで,フレームワークの利用者の立場から見てもっとも便利な機能を5つか6つ程度,挙げて頂けますか?

私が選びたいものは,https://vaadin.com/vaadin7 で紹介しているリストほとんど同じです。

それ以外のトップ5は次のものです。
  1. GWT全体が組み込まれていること。これによって,すべてのパッケージがサポートされます。Googleの素晴らしいJava-to-JavaScriptコンパイラの能力を,アプリケーション内でも簡単に利用できるのです。
  2. ウィジェットエクステンション。既存のウィジェット上に,独立したエクステンションとして機能を追加することができます。詳細は次のページを参照してください: https://vaadin.com/wiki/-/wiki/Main/Creating%20a%20component%20extension.
  3. Saasコンパイラに,以前から要望のあったテーマのモジュール化が導入されました。
  4. 再設計されたレイアウトエンジン。すべてをJavaScript内で計算する代わりに,ブラウザネイティブなレイアウト計算を利用するようになっています。これによってリフロー数が大幅に減少するとともに,レイアウトの速度も向上しました。副次的な効果として,CSSもすべてサポートされています。
  5. 再設計されたウィンドウAPI。Vaadinアプリケーションを以前よりもWebアプリケーションらしくすると同時に,HTTPリクエストやWebページへのアクセスも簡単になりました。

InfoQ: "The Future of GWT Report 2012" と題されたレポートでは,SmartGWT,GXT,ErraiなどがGWTの拡張であるのに対して,VaadinはGWTを補完するものだ,とされています。これについて詳しく説明してください。

GWTのプログラミングモデルには2つの抽象化レベルがあります。
  1. Javaで記述されてJavaScriptにコンパイルされる UI。
  2. ネイティブなJavaScript。SmartGWTやGXT,Erraiなどは基本的に,GWTの定義するプログラミングモデルに対して,新たな(本当にすばらしい)コンポーネントやヘルパを提供するものです。
VaadinはGWTの提供するプログラミングモデル上に,サーバサイドJavaプログラミングモデルを加えます。この高レベルな抽象化によって,現代的Webアプリを実装するために必要なソフトウェア層の数が少なくなります。それが開発のスピードアップを実現するのです。GWTでは通常,UI層(ブラウザ),RPCプラスUIサービス(サーバ),ビジネスロジック(サーバ)の3つを構築する必要があります。しかしVaadinでは,サーバ上のUI・ビジネスロジック層だけでいいのです。このような本質的な削減によって,アプリケーションUIの開発に必要なコードサイズを半減できます。しかも柔軟性が必要な場合には,JavaあるいはJavaScriptでクライアント側UIを記述するための手段も提供しているのです。

InfoQ: GWTを使用している開発者からは,GWTに関する書籍の発行が極めて少ない以前の状態から,最近ではほとんどなくなっていることに対して不満の声が上がっています。この状況を考えたとき,Book of Vaadin という書籍の重要性について,どのようにお考えでしょうか?また,この本は現在プレビュー版ですが,今後どのような修正や拡張の予定があるのでしょう?

Book of Vaadinは,2007年から改訂が続けられています。 とても大変な仕事ですが,一流のマニュアルはどのようなフレームワークにおいても非常に重要な部分である,と私たちは考えています。機能が文書化されていなければ,誰も利用することなどできません。

Book of Vaadinの第1版は3月初頭には完成して,誰でも自由にダウンロード可能になる予定です。それ以降については,機能追加が実施されるごとに修正作業を続けていきたいと思っています。

InfoQ: Vaadin組み込み用にメンテナンスしているバージョンのGWTをVaadin開発チームが配布する場合,標準のGWTとの整合性を保つために,どのようなことを行う予定なのでしょうか?

私たちが手を加えているバージョンのGWTは,https://github.com/vaadin/gwtでソースを入手できます。

Vaadinフレームワーク全体のソースもhttps://github.com/vaadin/vaadinから入手可能です。

私たちが現在配布しているのはVaadin Framework(GWT用ではない)のリリースのみですが,VaadinにはGWTが含まれていますから,これをGWTリリースの代替として使用することは可能です。フレームワークのクライアント側だけを使用しても問題ありません。

GWTとVaadinの関連性をアーキテクチャ的な視点で見たいのでしたら,https://vaadin.com/blog/-/blogs/vaadin-7-application-architectureを参照してください。

InfoQ: あなた方のWebサイトにある FAQ には,"Vaadinを使うべきではないのは (When should I not use Vaadin)?" という章があります。エンタープライズプロジェクトの規模は,Vaadin採用の判断に影響する部分があるのでしょうか?

そういう場合もあります - プロジェクトが大規模になるほど,Vaadin開発のメリットも大きいのです。逆にごく小規模なアプリケーションであれば,どのようなフレームワークでも,もちろんVaadinでも,簡単にできるはずです。

InfoQ: "Vaadinを使っているのは(Who Is Using Vaadin)? " というページには,フィンランドで34のショーケース(showcase)が提供中,とあります。6つのショーケースを持つ米国が,一覧表ではその次にあります。Vaddinのショーケースとは何でしょう?170カ国の開発者がVaadinを使用しています。彼らの国々でVaadinのショーケースを増やすためには,何が必要なのでしょうか?

残念ながらこのショーケースマップは,非常に不完全なものです。"Vaadinを使っているのは?" リストを集めているときに私たちは,Vaadinの使用事例を見つけようとして,あちこち尋ねて回っていました。私たちの本社はフィンランドにあります。そのために,優れた採用事例がたくさん私たちの地元で集まった,という訳なのです。

できれば世界中から,このショーケースをリストアップしたいと思っています。 Vaadinで素晴らしいサイトを構築した人がいれば,ぜひ私たちに連絡をください。リストに掲載したいと思います。

InfoQ: JVM以外のWebアプリケーションフレームワークで,Vaadinの競合相手となるものはありますか?もしあれば,名前を教えてください。

当社はJVMを中心としていますが,こちらの世界でWebアプリを開発している人たちはみな,Webプラットフォームを使用しています。ですから,最大の競合相手はJavaScriptフレームワーク,ということになります。 異なるスキルを持ったフロントエンドとバックエンドのチームが別々にあったとしても,プロジェクトによってはうまくいくかも知れません。しかしエンタープライズ界でこのような2つのチームを持つことの過剰コストは,大部分のプロジェクトにとって不要なもののはずです。

InfoQ: Vaadinのコードベースにコントリビュートしたいというプロ開発者もいると思います。このように隠れたコントリビュータを見つけ出すために,あなたのチームメンバたちは,どのようなプロセスを用いているのでしょう?

Vaadinプロジェクトへのコントリビューションのほとんどは,アドイン・コンポーネントの形で提供されています。このおかげで,Vaadinのコントリビュートの敷居は非常に低くなっています。Vaadinのディレクトリhttp://vaadin.com/directoryには,誰でもコントリビュートできるのです。

Vaadin Frameworkのコア部分にコントリビュートしたい場合には,まずは問題追跡システム http://dev.vaadin.com/wiki/SubmittingBug を通じてパッチを送ってください。コア開発チームの誰かがパッチを取得して評価,テストを実施した上で,当社内のGerritレビューシステムに送信します。それをコアチームの他のメンバが確認,評価するのです。このプロセスの中で,少なくとも部分的なパッチの書き換えは行われることになるでしょう。コントリビュータにはCA(Contribution Agreement)への署名も必要となります。

将来的には社内Gerritシステムを公開したり,GitGubからのプル要求を受託するなどして,このプロセスをもっと簡略なものにしたいと思っています。

InfoQ: ブログ記事 のロードマップからは,Vaadinフレームワークの開発プロセスを安定化しようという意図が感じられますが,今後のプロセスは決定しているのでしょうか?それはどのようなものでしょう?

私たちは先日,プロセスを一新しました - 理由のひとつは,Vaadin プロジェクトの遅れです。実際の開発を進めながら,並行してもっとカジュアルな研究プロジェクトにもトライしてみたいと思っています。そうすれば,ロードマップの見積もりも,もっとよいものになるでしょう。コアプロセスには,月毎のロードマップミーティングも含まれています。すべての製品に関する向こう3ヶ月のロードマップを,そこで決定します。内部プロセス全体としては,次のようになっています。

 
図:Vaadinの開発およびリリースプロセス

開発自体は、製品の機能に応じて,1~2週間という周期で行っています。世界に向けて公開できそうなものが完成に近づいた,と思えるような段階に達したとき,私たちは内部で開発レビューを行っています。そして可能であればアルファあるいはベータ版を公開して,開発プロセスの早いうちにフィードバックを収集するようにしているのです。

 

この記事に星をつける

おすすめ度
スタイル

BT