GAE開発の落とし穴
Googleのクラウド環境をつかったGoogle App Engineによる開発するにあたり、初めての試みで苦悩する開発者達の経験をもとに、各開発フェーズにあわせて問題点やどう解決したかをご紹介します
ブックマークされました!
ブックマークがエラーになりました。もう一度お願いします。
作者 Alex Blewitt , 翻訳者 吉田 英人 投稿日 2010年8月25日
Eclipse Foundation は先週 Eclipse 4.0 アーリーアダプタ SDK をリリースした。ただし実用レベルの Eclipse Helios リリース (別名 Eclipse 3.6) と混同してはならない。今回のリリースはむしろ,将来の Eclipse の姿を垣間見せるためのものなのだ。
次回の Eclipse 同期リリース (コードネーム Indigo,あるいは Eclipse 3.7) は,これまでと同じ現行の 3.x コードストリームがベースになる予定である。4.1 ストリームビルドが準備されているにもかかわらずだ。ではなぜ今年のリリースと来年のリリースという,2つの公開バージョンをメンテナンスするのだろう?プロジェクトのページ では次のように説明されている。
Eclipse SDK 4.0 は,Eclipse ベースのツール,リッチクライアント,あるいはデスクトップアプリケーションを構築するための次世代プラットフォームです。新リリースでは Eclipse プラットフォームをベースとするアプリケーションやツールの開発と構築が,これまでより容易になっています。
今回の 4.0 リリースは下位互換性の確認,あるいはプラグインや RCP アプリケーションのマイグレーションを希望するアーリーアダプタを対象としたものです。Eclipse エンドユーザには,今後リリースされる Eclipse 4.x を採用して頂きたいと思います。
Eclipse 4.0 (以前は E4 と呼ばれていた) の開発期間は2年に及んでいるが,その間に公開されたリリースは 2009年7月の E4 0.9 のみだ。最初の E4 ホワイトペーパー には,Eclipse プラットフォーム自体を再考する必要性と,その背景となる考えに関する記述がある。その中で Eclipse 4.0 は,Eclipse ベース製品の第3世代プラットフォームである,と説明されている。
OSGi が Eclipse アプリケーションにとって大いに役立っている反面,大多数の Eclipse アプリケーションが OSGi アプリケーションとしてはあまりよく機能しない。これは主に歴史的な理由によるものだ。OSGi 対応以前の Eclipse には 神オブジェクト (God Object) としてふるまうシングルトンが数多く (Platform, PlatformUI,そして IDE) あった。これはオブジェクト指向的にアンチパターンであるだけでなく,OSGi の (動的な) サービスに対しても都合が悪い。
Eclipse 4.0 でこの問題を改善する方法のひとつが依存性注入 (Dependency Injection,別名 DI) である。これは Spring などのツールによって一般的になった,サービスをオンデマンドで有効にする手法だ。javax.inject アノテーションと OSGi の宣言型サービス (Declaretive Service,別名 DS) を組み合わせて使用すれば,次の例のように,依存性注入によって E4 や OSGi のサービスを自動的にコードに提供することさえ可能になる。
import javax.inject.Inject;
import org.eclipse.e4.core.services.Logger;
import org.osgi.service.packageadmin.PackageAdmin;
public class Example {
@Inject private Logger logger;
@Inject private PackageAdmin packageAdmin;
}
Eclipse 4.0プラットフォームは,サービスを使用する外部コードからのコントロールによって,サービスの注入処理を自動的に実行する (操作の必要がないサービスについては @Optional のようにマークしておくことも可能)。このため OSGi コンポーネント化されたサービスベースのアプリケーションにコンポーネントを統合する作業は,非常に容易なものになるだろう。現在,Eclipse アプリケーションサービス 案のリストが公開されている。
その他 Eclipse 4.0 の重要な変更として,UI 構築方法に関するものがある。Eclipse 3.x のユーザーインターフェイスの作成は定型的で,SWT (あるいは JFace) ウィジェットを生成してスクリーンに配置する,という処理を手書きで記述する。プラットフォーム固有のパフォーマンスと動作という点で SWT が Swing ベースのインターフェースより優れていることは間違いない。しかしこのツールキットの使用には,歴史的な理由による不安部分があった。システムリソースを開放するため終了時に dispose( ) のコールが必要である,というのはそのひとつだ。別に難しいことではないが,Java プログラムでは一般的な方法ではないため,これによるリークは珍しくない。しかも Eclipse のようなホスト環境においては,たったひとつのプラグインのリークが原因でシステムが停止する場合もあり得る。この種のリークを発見するためのツール (sleak など) も存在するが,心配の必要がなくなるに越したことはない。
先日 Google に買収された Instantiations には Window Builder Pro という製品があった。Eclipse Community Award も受賞 しているこの製品 は,RCP Designer との併用でドラッグ・アンド・ドロップによるユーザインターフェース作成を実現するものだ。コードを手書きするよりはるかに容易なだけでなく,メモリ処理を生成コード内で管理することで,プログラマがメモリ管理を心配する必要がなくなる,という利点もある。しかし先般の買収のため,これらの製品はもはや入手できない - それでも GWT blog によれば,数ヶ月内に GWT Designer として発表されることが期待できそうだ。
このことは Eclipse 4.x にどのように影響するだろうか?それはさておき,他にも重要な変更として,宣言ベースのユーザインタフェースの開発がある。HTML の UI は命令ではなく宣言で構成されているが,Eclipse 4.x のユーザインターフェースもこれと同じように,XAML あるいは XUL に似た形式で指定するようになる。これにはメンテナンスの容易化だけでなく,レンダリングエンジンが UI ウィジェットの構築を - そして破棄も - 管理するようになる,という利点もある。最終的には表示処理要求も外部化することによって,アプリケーションのテーマ設定をコード外部から行うことも考えられる。
HTML 的な手法に加えて,UI の外観指定には CSS の使用も可能である。フロントエンドを Web ベースにすることには,単一の定義から異なったスタイルのユーザインターフェースを生成するというシンプルな方法で,デスクトップインターフェースとの緊密な一致性を得ることができるメリットもある。
この機能の大部分は,アプリケーションやビュー,サービスなどを Eclipse Modeling Framework (EMF) を通じてオブジェクト化することで実現されている。UI の記述には,モデル化されたウィジェットとビューを使用する。JavaScript で Web ページの DOM を扱う要領で,モデルをあらかじめ作成しておいたり,実行時に生成,参照,操作したりすることも可能だ。
Ian Skerett 氏が記しているように,これはプラットフォームの新たな旅の始まりである。Eclipse 4.0 はアーリーアダプタ向けではある (そして既知の問題もある) が,その目標は Eclipse 3.0 のプラグインを,可能な限り少ない変更で Eclipse 4.0 にマイグレーション可能とすることにある。Mike Wilson 氏は Eclipse 4.0 の重要な点についての EclipseZone のインタビュー に答えている。また Lars Vogel,Tom Schindl 両氏は,それぞれのチュートリアルを公開している。
【豆蔵】大好評のため、Jenkins講座を追加開催致します!Jenkins作者の川口氏が講師です。
【豆蔵】「オブジェクト指向を現場で活かすリファクタリング入門」新規講座キャンペーン中
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
スレッド表示 返信