GAE開発の落とし穴
Googleのクラウド環境をつかったGoogle App Engineによる開発するにあたり、初めての試みで苦悩する開発者達の経験をもとに、各開発フェーズにあわせて問題点やどう解決したかをご紹介します
ブックマークされました!
ブックマークがエラーになりました。もう一度お願いします。
作者 Moxie Zhang , 翻訳者 八角研究所 投稿日 2008年2月28日
昨年12月にAdobe社はLiveCycleデータサービス(サイト・英語)をBlazeD(サイト・英語)という名でオープンソース化すると発表した(source)。BlazeDSはJEE環境で開発されたサーバサイド技術である。それは、コンテンツのストリーミング、及びFlexやAIRベースのRIAアプリケーションへのサーバサイドプッシュを容易にするものである。Derek Wichusen氏はflexonrails.netでFlex、BlazeDSとScala/Liftを使用した統合開発に関する記事をよせている(source)。
Adobe社の発表に関してWischusen氏は次のように記述している。この発表はもちろん喜ばしいニュースである一方で、BlazeDSを使うためにJavaを使用しなければいけないという誤解を与えてしまっているかもしれない。BlazeDSはただJavaプラットフォーム(source)を使用しているのであって、必ずJava言語(source)を使用しなければならないというものではない。Wischusen氏は彼がなぜScalaを採用したのか次のように説明している。
実際、Groovy(サイト・英語)、Python(Jython)(サイト・英語)、Ruby(JRuby)(サイト・英語)、Scala(サイト・英語)、そして勿論ColdFusion(サイト・英語)といった様々な言語(source)をJava プラットフォームで動作させることができる。理論上、これらのどの言語もBlazeDSと容易に統合開発することができるはずである。
Wischusen氏の統合開発プロジェクトは最新版のJDK1.5+、Scala(source)、Eclipse(source)、EclipseのScalaラグイン(source)、Maven(source)、BlazeDS(サイト・英語)とFlex(サイト・英語)を同時に使用したものである。最近、私自身今まであまり知らなかったプログラミング言語の知識を深めたいと考えていた矢先に、Scalaが非常におもしろく、かつ強力な言語であることに気がついた。Scala はオブジェクト指向的でかつ関数型言語の特徴も併せ持ち、それらが組み合わさったスタイルで構成されていて、Erlang(サイト・英語)的な並行処理を行うことができるActorsライブラリがあったり、ほかにも多くの優れた特徴を持っている(サイト・英語)。私がScalaを選んだ最後の、そしてもしかしたら一番の理由は、Scalaで書かれた非常に素晴らしいLift(サイト・英語)というwebアプリケーションフレームワークの存在があったからである。
Wischusen氏はLiftのプロジェクトを作成するプログラミングから始め、順を追ってその解説をwebに投稿した。そしてMavenを使用したEclipseのプロジェクトを作り、作成したLiftのプロジェクトをインポートし、BlazeDSのjarファイルをプロジェクトのビルドパスに加えた。開発環境のセットアップ方法についての解説の後に、Wischusen氏はLiftがどうやってHTTPリクエストを処理するのかを次のように述べている。
Liftはビューファースト(source) なフレームワークである。LiftはデフォルトではHTTPリクエストをまずLiftのビューに対してマッチさせようとする。うまくビューを見つけることができたら何らかの処理を行い、そしてHTMLを出力する。LiftがどのようにHTTPリクエストを処理するかについてもっと詳しく知りたいのであれば、このページを参照してほしい(source)。このプロジェクトではFlexがビューとして使用されるので、LiftはUIの一部としてではなく、webサービスを処理するためだけに設定されていた。
Wischusen氏はScalaプログラミングに関する解説とサンプルコードをwebに投稿した。彼は作成したActor(source)ついて次のように解説をしている。
サーバサイドのアプリケーションを作成した後に、Wischusen氏はFlexアプリケーションについて記述している。Notifier Actorが始動されると(後にこれがどこで実行されるかわかるはず)actメソッドが呼び出される。actメソッド内での最初の処理はスケジュールヘルパーメソッドであるActorPing.scheduleの呼び出しである。このメソッドは0.5秒でこのActorへNotifyメッセージを送信しようとする。次に単純なループ処理があって、その中のリアクトブロックで受信されるメッセージに応じた処理がケース文として記述されている。これにより、Notifyもしくは"stop"メッセージが受信されたときに、メッセージに対応した処理が実行される。
アプリケーションの開発が完了し、Wischusen氏は次のように記述している。私たちは二つのボタンと一つのテキスト入力フィールドからなる非常にシンプルなUIを持つアプリケーションを作成した。そのアプリケーションには二つのHTTPServiceとConsumerも存在している。ここで、次の二つの事柄について注意してほしい。一つ目は Consumerが“notifications”という名の宛先にサブスクライブし、同じ宛先に対してNotifier Actorがメッセージを発行するということ。二つ目はHTTPServiceがwebservices/start_feedと webservices/start_feedを呼び出すということ。これらの呼び出しが私たちが作成したWebServicesクラスのメソッドを呼び出すことができるように私たちはLiftアプリケーションを作成した。
最後にWischusen氏は次のように締めくくっている。これでLiftアプリケーションを起動し、Flexアプリケーションを立ち上げ、“Subscribe to ‘notifications’”ボタンをクリックすることで、Notifier Actorの始動とConsumerをサブスクライブすることができる。そうすると、IDナンバーと時間がテキスト入力フィールドに表示され、0.5秒置きに自動的に更新されるはずだ。さらに、“Unsubscribe from ‘notifications’”ボタンをクリックすることでNotifier Actorを停止させConsumerをアンサブスクライブすることができる。
このプロジェクトのソースコードはLife Appat(zip)とFlex App(zip)から取得することができる。これら三つの技術を使用することによって、リアルタイムでサーバからクライアントへデータを非常に簡単に自動的に送信することができる。今回の例は非常にシンプルな例であったかも知れないが、より洗練されたアプリケーションのために、この手法は確実に進化していくと考えている。
【ネクストスケープ】.NET、C#のアプリケーション開発者募集
世界の先進エンジニアが集結 - 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
スレッド表示 返信