GAE開発の落とし穴
Googleのクラウド環境をつかったGoogle App Engineによる開発するにあたり、初めての試みで苦悩する開発者達の経験をもとに、各開発フェーズにあわせて問題点やどう解決したかをご紹介します
ブックマークされました!
ブックマークがエラーになりました。もう一度お願いします。
作者 Werner Schuster , 翻訳者 編集部 投稿日 2008年5月21日
MagLevとGemstone/Sは確かに多数のコードと機能を共有していますが、VMレベルを含めて両者は別個の製品です。MagLev VMが使っている多数のバイトコードとアルゴリズムはRuby特有のものになっています。しかし、Smalltalkのコードを動作させる能力は保持しています。
専任でない者も含めると、約8名がMagLevに取り組んでいます。実のところ今は予定についてお話しできませんが、RailsConfでは少しお話しできると思います。
私たちの目標はRubiniusプロジェクトの目標に似ており、パフォーマンスに影響される数個のプリミティブを除き、標準ライブラリの全メソッドをRubyに実装することです。VMはCで記述しています。
はい、VM用のバイトコードを作成しています。このバイトコードはいくつかのアーキテクチャでネイティブコードを任意で作成できます。
私たちは多数のパーサーから内部表現に翻訳できるので、それを使ってコンパイレーションします。最終製品に同梱するパーサーについては、まだ決めていません。
Rubinius bmのスクリプトとテストを使って、Ruby実装の様々なパフォーマンス数値を収集しています。それから、進化し続けるRuby標準とMagLevのAPIレベルの互換性を約束する上で何が役立つかを確認するために、MSpec実装やスクリプト、テストに注目してきました。とは言っても、この他いくつかのRuby実装でも同様のことを試しています。Rubiniusとは、最終的には可能な限りたくさんの標準ライブラリコードを共有できればと思っています。
生の性能よりも、スケールに焦点を当てています。他の実装と比較した場合、パフォーマンスで断然有利と思いますが、スケールに強いアーキテクチャこそが最も興味深い差別化要因であると確信しています。
個々のVMには単純なユーザー空間スレッドがあります。しかし、複数のVMは同一オブジェクトへトランザクションで同時アクセスできるため、最終的にはm対nモデルに似たものとなります。
とても興味深い質問で、私たちも真剣に考えているところです。私たちの計画では、MagLevは間違いなくRails可能/互換になります。その過程で非常に多くの潜在的な(そして実際の)了解事項に遭遇するでしょうから、達成は容易ではありません。Railsに取り掛かる前に、完全にRubyで動作可能でなければならないと、私は考えています。代替案も検討中で、おそらく、Rubyで書かれたものならどんなものでもサポートできるようになるでしょう。何を、どんな順番で行うかの優先順位づけについては、Rubyコミュニティからのフィードバックや関心によって大半が決定します。
MagLev DBでActiveRecordを使用可能にすることは、非常に価値ある目標ですが、ActiveRecordのAPIにはオブジェクト状態をSQLベースのRDBに格納すると想定する部分が存在するため、これが難題となる可能性があります。とにかく、ActiveRecord下にいかなるAPIを用意したとしても、ActiveRecordを使いたくない方々はそのAPIを利用できるようになるだろうと思われます。この件に関してこれ以上お話しするのは時期尚早であり、コミュニティにとってどのようなタイプのアプローチが一番有益であるかを、コミュニティが教えてくれたらありがたいと思っています。
ドロップイン代替物としてのMagLevの使用は間違いなく可能でしょう。イメージベースのアプローチを好まれる方々には、そうしたサポートもありますが、利用を強制するものではありません。
一言で言えば、できます。たとえば、GLASS製品では現在、エラーのあったプロセスをリポジトリに保存でき、後でそれを引っ張り出してローカルのVMでデバッグできます。同じことをRubyでできない理由はありません。
現在、様々なモデルを検討中です。MagLevでも同様になるでしょう(が、保証はできません)。
もちろん、IRBシェルや、MagLev上でRubyコードを動作させるためのRuby様のコマンドになる予定です。IDEプラグインも希望していますが、GUIツールが現実になる時期を憶測するのは危険です。MagLev開発チームは、Rubyコミュニティに手を差しのべ、サポートする心づもりであることをお伝えしたく、また、コミュニティの皆さんがMagLevへ貢献したくなるような理由を見つけてくださることを願っています。GemStoneは、動的言語やスケーラブルなバーチャルマシン、ネイティブ言語のオブジェクト持続性を得意分野としています。ツールやUIを得意とする方々は他に多数いらっしゃり、そうした方々のMagLevに向けた尽力を私たちは喜んでサポート致します。
MagLev VMはRubyを理解する以外にも、Smalltalkを完全に理解できます。相互作用させる可能性はかなり高いと言えますが、後戻りできないところまで進んでしまう前に、相互作用が望まれている機能で、コミュニティの役に立つかを検討したいと思います。
RubyにSmalltalkの技術とノウハウを応用せよと、私はSmalltalkのベンダーに何年もロビー活動を行ってきましたが、それがようやく現実となり、わくわくしています。MagLev実装を始めて3ヵ月足らずですが、これまでの成果で非常に自信がつきましたし、RailsConfではすばらしいデモをお見せします。RailsConfまで、残念ながら詳細は教えられませんので、Confでご覧ください。
Bryant氏は最近のブログで、Gemstoneのソリューションと、memcachedb や同様の技術を用いてRailsプロジェクトで構築したソリューションを比較することにより、GemstoneのようなOODBの利点を紹介している(source)。
Gemstoneはどうでしょうか。偶然にもアーキテクチャはまったく同じで、単一の記憶エンジン(「ストーン」という)とサーバー毎にメモリーキャッシュ(「共有ページキャッシュ」)、多数のSmalltalk VMのワーカープロセス(「ジェム」)があります。ジェムが要求を処理してコードを実行し、スピードを求めてオブジェクトをページキャッシュに置き、また、持続性を求めてストーンにしまいます。Gemstoneでの違いは、すべてが可能な限り迅速かつシームレスに連携するように、ゼロから設計されているところです。
注記:ブログではさらに掘り下げ、ソリューションや異なるアプローチについて詳細にわたる概要を説明している。
GemStoneは、5月のRailsConf 2008において、MegLevの詳細を披露する予定である(source)。
原文はこちらです:http://www.infoq.com/news/2008/04/maglev-gemstone-builds-ruby
【豆蔵】「オブジェクト指向を現場で活かすリファクタリング入門」新規講座キャンペーン中
【ネクストスケープ】.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
スレッド表示 返信