GAE開発の落とし穴
Googleのクラウド環境をつかったGoogle App Engineによる開発するにあたり、初めての試みで苦悩する開発者達の経験をもとに、各開発フェーズにあわせて問題点やどう解決したかをご紹介します
ブックマークされました!
ブックマークがエラーになりました。もう一度お願いします。
作者 Abel Avram , 翻訳者 竹中 翔 - (株)ポータルアイランド 投稿日 2009年7月26日
Erik Meijer氏とWes Dyer氏はLINQ to Eventsを使用可能にする、.NETリアクティブフレームワーク(Rx)を作成した。リアクティブフレームワークはLINQ to Objectsの(数学的な意味の)双対である。Erik氏と氏Brian Beckman氏はIObservableが継続モナドであることを実証した。
リアクティブプログラミング自体は新しいものというわけではなく、すでにCommon Lispのデータフロー拡張としてCellsで使われているし、Trellisでも高次リアクティブプログラミングサポートのためのPython拡張機能として使われている。C#では、非同期処理のコールバックやイベントハンドラとしてリアクティブプログラミングが使われている。非同期処理終了時、もしくはイベント発生時にメソッドが呼び出され、イベントへのリアクションとして実行される。
LINQ to Objectsはデータコレクションの反復処理を行うためにIEnumerableとIEnumeratorインターフェースを使用する。反復子(Enumerator)のMoveNextメソッドはある要素から次の要素へ移動するために使われ、Currentプロパティは現在の要素を取得するために使われる。反復子のメカニズムはシンプルで、よく知られ、広く利用されている“プル”プロセスを使っている。Erik氏はIEnumerableが、コレクションからデータを取り出せる時、そのコレクションにデータを追加することもできる、という双対性を持っていることを発見した。これはリアクティブプログラミングへのもうひとつのアプローチである。
理論上、IEnumerableインターフェースはコレクションへのオブジェクトの追加に使えるが、非同期処理に使うことができない。彼らのチームがIObservableとIObserverという2つの新たなインターフェースを導入したのは、これが理由である。誰でもIObserverをデータのコレクションに割り当て、それをIObserverに登録することができる。新しいデータが利用可能になったら、そのデータはIObservable経由で順にIObservableに渡され、コレクションにプッシュされる。Microsoftのプレゼンテーションプラットフォームコントロールチームの開発者であるJafar Husain氏は、どのようにIObserverパターンが使われるかを次のように説明した。
IObservableを詳しく検討するために、IEnumerableの動作を逆にして考えてみましょう。まずIObserverを生成し、それにIObservableを渡します。そして、IObservableがIObserverにデータを“プッシュ”します。IObservableがObserverの“OnUpdate”メソッドを呼び出すことは、IEnumerableに情報を与えるためのyieldキーワードに相当します。同様に、IObservableがObserverの“OnCompleted”メソッドを呼び出すことは、IEnumrableでもうこれ以上データがないことを表すbreakキーワードに相当します。
これの何がよいのかというと、イベントハンドリングに役に立つようだ。例えば、IObserverをマウスイベントにアタッチし、それらをコレクションに非同期的に記録する。そして、LINQを使ってそのデータを反復処理することができる。GUIイベントのハンドリングでの威力を示すため、リアクティブフレームワークはSilverlight Toolkitの単体テストに使用され、System.Reactive.dllにパッケージされてソースコードに含まれている。リアクティブフレームワークは.NET 4.0にも含まれるだろう。
ソフトウェアアーキテクトで宇宙物理学者のBrian Beckman氏はErik Meijer氏とのビデオインタビューの中で、IObservableがIEnumerableモナドの双対の、継続モナドであることを実証した。Erik氏はIObservableインターフェースがIEnumerableの双対化によって生み出された過程についても説明している。
【ネクストスケープ】.NET、C#のアプリケーション開発者募集
【豆蔵】大好評のため、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
スレッド表示 返信