GAE開発の落とし穴
Googleのクラウド環境をつかったGoogle App Engineによる開発するにあたり、初めての試みで苦悩する開発者達の経験をもとに、各開発フェーズにあわせて問題点やどう解決したかをご紹介します
ブックマークされました!
ブックマークがエラーになりました。もう一度お願いします。
作者 R.J. Lorimer , 翻訳者 八角研究所 投稿日 2008年3月10日
まず、Jack氏とExt 2.0の開発で素晴らしい仕事を行ったExtチームに賛辞を送りたい。GWT-Ext 2.0での多くの改良点はExt 2.0の機能強化とアーキテクチャの改良のおかげであるといってもいい。
今回のバージョンにおける最も大きなアーキテクチャ的な改良は、Componentモデルの統合とLayoutマネージメントの改良だ。すべてのウィジェットは一貫性のある階層構造となり、また、生成・レンダリング・破棄といったライフサイクルを持つ基底のComponentクラスのサブクラスとなっている。今回のバージョンは内部のComponentにのみ注意を払うContainerのレスポンシビリティと、割り当てられたLayoutManager によってハンドリングされるContainer内のComponentのレイアウトを分離させた構造となっている。これにより複雑なレイアウトを作成するのも容易になった。
また、GWT-Ext 2.0はBeanに適した扱いやすく、またGWT DesignerのようなUIビルダーと統合しやすいAPIを持つ。新しいすぐれた特徴として、グリッドのグルーピング、アコーディオン、プログレスバー、グリッドとツリー間のドラッグ・アンド・ドロップ等の機能があげられる。また、今回のリリースのハイライトの一つは、新しく改良された Showcaseデモがあることだ。 (http://www.gwt-ext.com/demo) 多くのグラフィカルなサンプルをそれらのソースと一緒に確認することができる。私はサンプルから学ぶことは非常に効果的であると強く信じており、このShowcaseデモはユーザの開発の助けとなることを望んでいる。
GWT-Ext 2.0のライセンスについても触れておきたい。FSFによると、GWTライブラリのコンテキストにおいてLGPLは、作者が明記しないかぎり事実上GPL として解釈されるということであった。私は、GWT-Extのライセンスページ (http://gwt-ext.com/license/) に明記し、それによりライセンス違反することなく、商用プロジェクトで GWT-Extを使用できるようにした。
今回のバージョンでは大幅にパフォーマンスが改善されたわけだが、それはExt 2.0のパフォーマンスが改善されたおかげである。Ext 2.0のサイトでどのような改良がなされたかを確認することができるが、GWT-Extに関係する重要なパフォーマンスの改善点についてここでいくつか挙げておこう。
- すべてのコンポーネント、ウィジェットは現在レイジーレンダリングをサポートしている。これはどういうことかというと、コンポーネントやウィジェットはいかなるオーバーヘッドもなくインスタンス化することができ、それらの描画処理はDOMに追加される必要のあるタイミングで遅れて実行される。これにより、特に大規模なアプリケーションにとっては、大幅なパフォーマンスの改善をもたらすことができる。
- 適切なメモリ管理を行うため、フレームワークがすべてのコンポーネントの生成から破棄されるまでのライフサイクルを管理する。フォームやグリッド(テーブル)は特に改善され、ユーザはこれらのウィジェットを扱う際にその恩恵を受けるができる。
- GWT-Ext 2.0では、ウィジェットの設定に分離された"config"クラスを使わなくてよい。Componentの属性を設定するためには、Component のsetterを単に呼び出せば良い。これはAPIを整理するだけではなく、コーディング量を減らすことにもつながる。
- 最後に、百聞は一見にしかず。何人かのユーザはすでに、GWT-Ext 2.0にアップデートすることで自分たちのアプリケーションがどれだけ反応がよく、素晴らしいものになるかコメントしている。そして、GWT-Ext 2.0のShowcaseデモのサンプルを実行させれば、パフォーマンスが改善されたことを実感できるはずだ。
レイアウトマネジメントAPIは変更されたが、ほとんどのユーザはこの変更を直観的で且つ複雑なレイアウトを素早く簡単に扱うことができる新しいAPIとして受け入れてくれている。分離されたconfigクラスはComponentの設定に必要はなく、Componentの setterを呼び出すことで設定を行うことができるようになった。アップグレードに際しては、数時間の単調な作業が必要となる問題があるにはあるが、これはそんなに頭を悩ませるような作業ではない。そして、ユーザはこの変更も再び受け入れてくれた。実際、Javabeanのアクセッサを分離された configクラスの代わりに使用するという変更は、GWT-Ext 0.9のユーザからのフィードバックに影響されたものだった。
今まで通りJavaのコンパイラを使用することができ、そしてコンパイラでコンパイルすることで非互換性がないこともわかっている。さらに、ユーザはアップグレードに関する質問をGWT-Extフォーラムで投稿することができる。アップグレードに要する時間はユーザによって異なるが、あるユーザは1万行のコードを持つアプリケーションのアップグレードを2日間で済ませたという報告をしている。ユーザはAPIが安定して動作することを期待していい。
GWT 1.5はJavaとJavascriptの境界を越えたパフォーマンスの改善が行われており、その結果GWT-Extにも大幅なパフォーマンス改善をもたらすことになる。私はこの最適化されたGWT 1.5を利用するために、必要な(内部的な)変更を行っている。GWT-ExtはLGPL 3.0ライセンス(サイト・英語)で配布されている。コミュニティのフォーラム、Wikiドキュメント、ライブラリのダウンロード、そしてさらに詳細なライセンスに関する情報の確認はGWT-Extのホームページ(サイト・英語)で行うことができる。
私はまたwikiドキュメントやユーザの生産性を向上させるためのFAQやチュートリアルをまとめ上げようと考えている。現在行っている機能の強化に加えて、ユーザの開発の助けとなるようなことにも注力して行きたいと考えている。成功するライブラリはユーザサポートが充実しているものだ。
【ネクストスケープ】.NET、C#のアプリケーション開発者募集
【豆蔵】「オブジェクト指向を現場で活かすリファクタリング入門」新規講座キャンペーン中
Googleのクラウド環境をつかったGoogle App Engineによる開発するにあたり、初めての試みで苦悩する開発者達の経験をもとに、各開発フェーズにあわせて問題点やどう解決したかをご紹介します
去る1月12日、定理証明支援系ツールCoqの初心者向けチュートリアルが開催さ れた(http://kokucheese.com/event/index/23667/)。今後も2月2日 (http://kokucheese.com/event/index/23744/)、2月9日、2月16日と引き続き開 催されていく予定である。本記事では、開催の様子をレポートする。
Neal Gafter氏はOracleによるJava買収の影響に関する議論、Javaにセグメンテッドスタックやメタオブジェクトプロトコルを追加することについての主張、そしてJavaとC#との比較について話をしてくれた。
GoogleはVMをともなう新しい言語であり、JSコンパイラでもあるDartをプレビューした。 InfoQはDartのアプリの構築に貢献する文法の裏側を探った:スナップショット、Isolate、モジュール方式
本記事ではCSPベースの「マルチドメイン・モデル検査ツール」である、PAT(Process Analysis Toolkit)について紹介する。モデル検査は、形式手法(Formal Method)という方法論を基礎とする技術であり、複雑さが増大しながらも安全性を求められる、現在のソフトウェア開発の状況に対する処方箋の1つとして注目されている手法である。
前回まで、Jenkinsの幾つかの側面に注目して解説をしてきました。シリーズ最後の今回は、Jenkinsをサービスとして使う方法を紹介します。
Alloyは、MITにて開発された仕様記述言語であり、ツールによる自動解析を使い、インクリメンタルに形式仕様が書けることが特長である。筆者らはAlloy開発者による、Alloyを使った形式手法入門書を翻訳、今夏にオーム社より刊行した。本記事では、Alloyの簡単な概要と、翻訳書『抽象によるソフトウェア設計』(「Alloy本」)を紹介する。
スマートフォンを中心としたマルチデバイスにおけるタッチユーザーインターフェイスへの対応は、既に必須の項目となりつつある。本記事では、Windows デバイスにおける UX のベースとなっている「メトロ」というデザイン言語を掘り下げながら、既存環境を意識しつつもどのようにタッチユーザーインターフェイス開発に取り組んでいくべきであるかについて解説していく。
No comments
スレッド表示 返信