GAE開発の落とし穴
Googleのクラウド環境をつかったGoogle App Engineによる開発するにあたり、初めての試みで苦悩する開発者達の経験をもとに、各開発フェーズにあわせて問題点やどう解決したかをご紹介します
ブックマークされました!
ブックマークがエラーになりました。もう一度お願いします。
作者 Alex Blewitt , 翻訳者 近藤 寛喜 - (株)チェンジビジョン 投稿日 2010年2月7日
1年のこの時期になると、普通は休暇のため業界も一休みだ。にも関わらず、先日のBundle.updateから多くの出来事があったようだ。
Virgoプロジェクトの提案はひょっとすると大きなニュースかもしれない。(詳細については 先週のニュース取り上げた)。ちょうど2.0.0がリリースされたが、この提案は2.1以降のリリースはEclipse傘下のプロジェクトとして開発され、配布される事を意味する。
既存のプロジェクトと新たな提案の違いのキーは、ライセンスにある。これは元々GPLの元、利用できたが、商用でより使いやすいEPLの元、利用できるようになる。移行の公開されているゴールではよりコミュニティの貢献を増やし、よりソフトウェア開発の事実上の標準になるよう後押しするとしている。
エンタープライズOSGiやdm Serverの周りには非常に強い関心と新しい技術があります。この関心がもっとも強いのは、新しいものが好きな人たちと、OSGiサービスプラットフォームの動的モジュール形式にぴったり合うものを必要とするプロジェクトです。できる限り速く、いざこざもなくエンタープライズアプリケーションを構築したい主流の開発チームにとって、現在エンタープライズOSGiの導入に関するコストは、短期間の利益よりも多くなります。エンタープライズOSGiが主流のエンタープライズアプリケーション開発にとってデファクトのアプローチになる前に、この状況に対処する必要があります。
今週Eclipse RT(RunTime:ランタイム)という新たなブックシリーズの最初の1冊OSGi and Equinoxがいよいよお目見えした。この本ではどのようにOSGiを使い、モジュールに分割したJavaアプリケーションを構築するのか記述されている。そしてEquinoxをベースにしているとはいえ、他のOSGiプラットフォームでも開発するための価値あるガイドであると示されるべきだ。
この本ではToastというExampleプロジェクトを一通り触る。Toastのゴールは、ブックシリーズの将来の展開とともに、生きたExampleのコードのまとまりを提供することである。(そのため、開発者は一冊読めば、他の本を読む時に簡単にコンテキストを引き出すことができる)この本は4つのパートに分かれている。第1のパートは,OSGiの概要、第2のパートはToastの構築を例にしたチュートリアル、第3のパートはOSGiの要点をより深く解説し、最後のパートはリファレンスで結んでいる。
Eclipse Communications Frameworkプロジェクトは、OSGi Remote Services仕様の実装を完了した。これは、OSGiサービスをVMを越えて、REST、WS-*、JMS、XMPP、 Skype、そしてECFの汎用実装など様々なプロトコルを使って通信することができる。
それらだけではない。ZeroConfやSLP、静的なファイルベースの探索など異なったサービスの発見メカニズムも用意されている。
The Apache FelixのOSGi Remote Servicesの実装(Apache CXF)も利用でき、OSGiの参照実装となっている。しかしながら、Apache CXFはWS-*の転送レイヤを介したアクセスの提供に焦点が当てられる一方、ECFはより転送レイヤにとらわれない。どちらの場合も、エンドユーザと開発者のAPIは同じである。これは実行時に一方から他方への交換を手助けする。
最近の投稿に, Peter KriensはOSGi Enterprise Expert Groupの活動が近く完了するアナウンスがあった。前回で言及したが,Enterprise Expert Groupのdraft 4は最近リリースされ、そしていくつかのJava EEの機能が提供されている。最終稿は今年の3月に、EclipseConと共催されるOSGi DevConの期間中にリリースできそうだと述べた。
Enterprise Expert Groupから、JNDIのようなルックアップや、JMXを使ったOSGi実行環境の管理、JTA、JPAとDataSourceを使ったデータベースアクセス、Remote Servicesと、Service Component Architectureの管理が、OSGiを有効にしたメカニズムで提供される。加えて、WebコンテナにWARをインストールするのと同じように扱える、WABという新たなWebアプリケーションのBundleの配布形式が追加される。Enterprise Expert Groupの成果が公開されたとき、InfoQで、より詳細な内容をカバーする。
以前からOSGiを基盤にしてきた、IBMのWebSphereは最近OSGiアプリケーションのためのアルファ版を公開した。これはApache Ariesをベースにしており、OSGi Blueprint containerを含んでいる。(これはSpringSourceからEclipseのプロジェクトに提案されたEclipse Geminiに似た実装だ。)これらのプロジェクトでも、Enterprise Expret GroupからもうすぐリリースされるJNDIとJTAに注力され、いくつかの問題の解決を目的としている。
これらのコンテナは、OSGi実行環境の境界をホストとしてを複数のアプリケーションを推進している。近い将来、(WebアプリケーションサーバをWARを使って分割されるのと同じように)アプリケーションはComposite Bundleとして知られるOSGi Nested Frameworksを使って分割されるだろう。これはWebアプリケーションサーバのモデルである、WARのようにすべて区切られて、コードを共有できないという構造とは異なり、WABはOSGiランタイムを用い、非公開なBundleとサービスを用いてコードやサービスを共有し、統合できる。
Sonatypeは、新しいMaven 3を使ってビルドするTycho 0.6.0をリリースした。Tychoは、どちらかというとMaven POMに存在する表明された依存関係よりも、OSGiのManifest.MFにかかれた依存関係を元に推測するMavenのビルダーの集まりである。これはOSGi Bundleの作成を、POMから作り始める(Manifestファイルは自動的に生成)か、Manifestから作り始めるか、ビルドプロセスの最初に選択できる。
多くのOSGi開発者(例えばApache傘下のFelixの利用者)はMavenを使っているとはいえ、よりPOMから作り始める開発になれるだろう。加えてManifestから作り始める開発は、Eclipseのますます不正確な名前になってきたPDE(プラグイン開発環境)を使ったOSGi Bundleの開発をより簡単にできるだろう。
AntベースのPDEビルドではなく、Mavenを使っている注目すべきEclipseのプロジェクトとして,Gitのチーム開発を含んだ(http://www.eclipse.org/egit/とhttp://www.eclipse.org/jgit/)、そしてインキュベータプロジェクトのTigerstripeがある。
MavenプロジェクトのMaven 3に向けた活動の中で,Google Guiceを使うための大きなリファクタリングがあった。加えて、(Sonatypeにより管理されている)Mavenのリポジトリが成功し,これはほぼ間違いなくJava開発における複数の依存を簡単にしたことがキーとなっている。OSGi Bundleのリポジトリ(OBR SpringSourceリポジトリ)はより共有され,異なったベンダをまたいだ配布ができる。組み合わされたOSGiリポジトリの集合を提供するにはあらかじめやることがあるが、TychoであればNexusを使って利用できる。組み合わせられた実験的なリポジトリにはbundles.sonatype.orgとosgi.sonatype.orgがある。いくつもの形式(OBR, P2など)を通じての提供が近未来のゴールにあがっているため、OSGi BundleもMaven JARの利用のように簡単に出きるようになるだろう。
OSGi Bundle Resolverは、OSGi Bundleをちょっとした仕組みに加えることがより一般的になってきている。Paremusは、最近Nimbleという、OSGi Bundleをダウンロードして取得できるResolverをリリースした。
Paremusは、ParemusのOSGi ShellであるPOSHにNimble Resolverを付属している。POSHはいくつかのコマンドを使って一般的なOSGiフレームワークの初期化と管理を実現している。(したがって、FelixやEquinox、Knopflerfishなどの間のテストを簡単にしている。)Nimbleとともに利用すると、Dave Savageによって記述された様な、OSGiランタイムのブートストラップ時の本質的なマナーを実現する。下記に示す2つのコマンドは、SpringベースのOSGi Webアプリケーションのインストールと、起動を行う。:
posh -kc "repos -l springdm;add org.springframework.osgi.samples.simplewebapp@active" open http://localhost:8080/simple-web-app/
DZoneでのインタビューから、Nimbleについてより多くの情報は得られるだろう。
OSGi UK User Groupは成長し、100名以上のメンバーとなっている。最近のプレゼンテーションは、Marcel Offermans (of Luminis)とGraham Charters(of IBM)により行われた。近い将来、ユーザグループのウェブサイトで動画と資料が公開される予定だ。
最初のパートはインキュベータプロジェクトのApache ACEの概要だ。このプロジェクトは、多くのデバイス(潜在的にはリモート)をまたいでOSGiプロビジョニングの促進を目標にしている。
再利用可能なコンポーネントを集めてソフトウェアを構築するとき、増え続ける接続デバイスにソフトウェアを配布するタスクは些細には解決できない。これはこれらのデバイスが多種多様なソフトウェアスタックを持ち異なるコンポーネントを要求することになるので大変だ。このプレゼンテーションでは、ソフトウェアコンポーネントがどのように異なるタイプのデバイスへ配布されるのか、オープンソースのApache ACEをベースに、携帯からクラウド上のノードを制御し、OSGiベースのプロビジョニングを使ったソリューションを見せた。
Apache Aceプロジェクトは、今年の早い時期にLuminiusより寄付されたソフトウェアをベースにしている。たくさんのリアルライフのためのプロジェクトのプロビジョニングにこのソフトウェアを利用できる。例えば、航行中のレーダーシステムや野外でのX線の測定、コンテンツ管理システムのためのライセンス管理やソフトウェア更新、そして飛行場の荷物取扱いシステムである。
2つ目は、OSGi 4.2で定まったOSGiのリモートサービスの概要である。そしてどのようにサービスコンポーネントアーキテクチャ(SCA)と補完するか、Apache Tuscanyとのデモがあった。
OASISではサービスコンポーネントアーキテクチャ(SCA)の仕様開発が進められています。SCAは多種多様なSOAのプログラミングモデルを提供することで、様々な実装技術(EJB, BPEL, C++, COBOL)、バインディング(Webサービス、JMS、IIOPなど)、ポリシー(WS-Policyなど)を拡張可能な形で橋渡しを行います。
このプレゼンテーションでは、OSGiリモートサービスとサービスコンポーネントアーキテクチャの技術の連携の簡単な紹介がありました。そしてOSGiアプリケーションをリモートサービスを使って様々なSCA実装技術、バインディング、ポリシーを利用し、どのように二つの技術を結びつけるか、解説されました。
もうすぐJAX Londonと同時開催される、OSGi DevCon Londonのプログラムが公開されている。早期割引は終了したが、OSGi UK User Groupのメンバーは割引を受けられる。
OSGiを大規模なサーバシステムに適用することは、当たり前の事として、浸透し始めている。しかしながら、OSGi Bundleを様々なIDEでより簡単にビルドするためにビルドツールを使い、OSGi Bundleを共有するために使う新しいリポジトリもひょっこり現れてきたが、モジュールに分離可能なJavaアプリケーション開発は未だ簡単になったことはなかった。よって、Kirk Knoernschild氏は2010年をJavaにおけるモジュラリティの年と言っている。
【豆蔵】「オブジェクト指向を現場で活かすリファクタリング入門」新規講座キャンペーン中
世界の先進エンジニアが集結 - QCon TOKYO 2012 早期割引実施中!
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
スレッド表示 返信