Exadel社のSenior System Engineer, Max Katz氏がAjax for JSFについて語る


オリジナル:The ServerSide.com
抄訳:岩谷 宏


−JSFをマスターするために、まず理解すべきことは何でしょう?
「JSFは新しいフレームワークであり、とても強力なフレームワークなので、まずその仕組みを理解する必要があります。そしてまたJSFは、今までとは違う開発パラダイムです。今、フレームワークは50種類以上ありますが、その中でJSFがユニークで非常に強力なのは、コンポーネントをベースとする方式であることです。ですから、JSFはまったく新しい開発方法です。HTMLやJavaScriptなどの低レベルの要素を寄せ集めて組み合わせてアプリケーションを開発する方法と、コンポーネントを組み合わせるやり方は、まったく世界が違います。ですから、JSFの仕組みを理解することが重要です。わが社Exadel社は、オンラインとオンサイトの両方で、各人が自分のペースで勉強できるコースを提供しています。宿題も出ますし、宿題について質問もできます。学習者の成績評価もします」

−AJAXをめぐって、今はどんなことが問題ですか?
「AJAXは、いろんな人がいろんな意味で理解しています。今現在、AJAXのためのフレームワークは150以上あり、それらを全部知ることは不可能です。全部がJavaベースではなく、PHPやPerlベースの製品もあります。Javaベースの製品は40から50ぐらいでしょう。これだけ製品の数が多いと、どれを選んだらよいか迷いますし、決断もなかなかつきにくいです。AJAXの考え方そのものは、ユーザにリッチな対話的経験を与えることです。Webそのものは、1994年ごろから今日まで、ほとんど変わっていません。Webページを訪ねて、情報を書き込んで、送信ボタンをクリックするとその情報がサーバへ行き、そして数秒待つとサーバが結果を送ってきます。エラーがあると、数分待たされることもあります。その場合は、エラーを修正して再送信します。ですからAJAXは、このようなWeb経験がその限界に到達したものです。やってること自体は、以前と同じでまったく変わっていません。しかしAJAXの新しい点は、対話性がリッチになったことによって、Webがデスクトップアプリケーションに似てきたことです。この点がとてもユニークであり、ユーザにとっても良いことです」

−Webのデスクトップアプリケーション化は、トランスポート層(TCP/IP)があるかぎり、実際には難しいのでは?
「AJAXはデスクトップふうの経験をWebにもたらした、と言えます。あくまでも“ふう”ですが、でも重要なことです」

−AJAXとJSFの相性はどうですか?。たとえばAjax for JavaServer Facesですが、実際に使ってみていかがですか?
「とても良くできていると思います。JSFはあくまでもコンポーネントが軸ですから、アプリケーションは、まるで工場のように、コンポーネント(部品、部材、部位)を組み立てて作ります。AJAXは、このパラダイムと相性がとても良いのです。つまり、AJAXができるJSFコンポーネントというものがあれば、それだけでOKですから。AJAXが持っている複雑性は、コンポーネントの内部に隠されてしまいます。JavaScriptを自分で書くとか、そういう低レベルとつきあわずにすみます。AJAXをサポートしているJSFコンポーネントを使って、そのコンポーネントの属性を適切に構成(コンフィギュレーション)すれば、JSFアプリケーションの中でAJAXの機能を使えるようになるのです」

−Ajax for JavaServer Facesは、どんなコンポーネントをサポートしていますか?。どんな機能が盛り込まれていますか?
「まず第一に、Ajax for JSFはオープンソースのプロジェクトであり、JSFのアプリケーションがAJAXの機能を持つために必要な中核的な(core)機能性を提供するものです。そのまますぐ使えるコンポーネントも、けっこう多いですよ。たとえばコマンドリンクやコマンドボタンは、そのままAJAXを使えます。独自のJSF-Ajaxコンポーネントを開発する企業のためのサポート機能も、このライブラリにあります(わが社Exadelは商用製品として、Ajax for JSFをベースに開発したドラッグ&ドロップできるJSFコンポーネントを提供しています)。また、skinabilityという概念もサポートしています。skinabilityとは、アプリケーションのルック&フィールをランタイムに変える機能です。事前にCSSファイルを書いてなくても、アプリケーションのデザインをランタイムに変えられるのです。たとえば顧客ごとに色を変えるなんてことをCSSでやっていたらたいへんです。JSFなら、べつのレンダラをロードするだけです。そういう簡単な変身機能を、skinabilityと呼んでいるのです」

−Ajax for JSFのスケーラビリティはどうですか?
「テストは徹底的に、いろんなテストをやりましたが、何も問題はありませんでした。基本はあくまでもJavaServer Facesであり、私たちはその中にまったく新しいフレームワークを持ち込もうとしているのではないのです。ですからAjax for JSFは、JSFそのもののように良質で堅牢なフレームワークです。開発もJavaServer Facesのコミュニティに支えられています。オープンソース開発では、問題があれば誰かがすぐに気づいてフォーラムやメーリングリストなどで発表します。スケーラビリティや実行性能の問題も、もしもあれば、いち早く解決するでしょう。世界中の人がコードを見つめているのですからね」

−Ajax-JSFのアプリケーションはどうやって試験するのですか?
「Ajax for JSFのコンポーネントは、完成品のコンポーネントです。いろんなブラウザの上やいろんな負荷で試験されています。つまり、あなたのアプリケーション開発のために試験済みのコンポーネントを不安なく使えるという点では、ふつうのJSF開発と同じです。XMLやJavaScriptを自分で書いていたら、エラーや心配事のタネが尽きないでしょう。Ajax for JSFを使えば、そんな不安がありません。コンポーネントを使わない古典的な手書きのコードは、再利用も困難です。アプリケーションごとに、まったく新規にコードを書かなくてはなりませんね。たとえばテーブルのページングをどこに置くか、レコードを10レコードずつ表示して前進/後退ができるようにするにはどうするか、…こういったことが今まではWebページごとに違っていました。だから、再利用が難しいのです。JSFなら、ちょうど自動車工場の組み立てラインのように、既製の部材を組み立てていくだけですから、再利用も簡単です。ちょっとした変化は、属性の構成(コンフィギュレーション)で簡単に実現できます。Ajax for JSFのコンポーネントは、あくまでもふつうのJSFコンポーネントですから、特定のAJAXフレームワーク製品(Javaベースだけでも今すでに50種類も製品が出回っている)を使わなくても、JSFベースだけで、AJAXの機能を使えるようになるのです。デモをするとみんな驚きますが、簡単なAJAXアプリケーションなら、ほんの2〜3分で書けてしまうんですよ。XMLやJavaScriptから書きはじめたら、2〜3日はかかるようなアプリケーションがです」

−たとえば目の不自由な人のためのJSFは可能ですか?
「何度も言うように、JSFはコンポーネント方式ですから、その場合は、特殊なマークアップのためのレンダラが必要なだけです」

<<参考1>>たった一行これは簡単−JSFでAjax, Ajax4jsf
<<参考2>>SoftAspects社ミハイル・ルビチェンコ氏インタビュー
<<参考3>>Andrew Robinson blog

--end of text--