Agile2008 チーム参加レポート - 動機/準備編
筆者はアジャイルソフトウェア開発についての年に一度の国際会議であるAgile2008に初めて参加してきました。今年の日本からの参加者の数は14名にも及び、発表者は5名、受け持ったセッションは8つに及び、例年にない活躍を見せました。なぜ今年のAgile2008では、これほど多くの日本人が参加し発表に至ったのか? そのレポートをお届けします。
作者 Werner Schuster, 翻訳者 沼田 暁子 投稿日 2008年3月4日 午後12時5分
RubyでマルチコアCPUマシンを利用することは、これまで、問題のあるテーマ(参考記事・英語)であった。Ruby 1.8までは、Rubyのインタプリタはユーザスペース・スレッディングを使用していた。つまり、スレッドはRubyのインタプリタによってスケジュールされているということである。Ruby 1.9はこれをカーネル・スレッドに切り替えることで変更した-ただし、Pythonのようなグローバル・インタプリタ・ロック(Global Interpreter Lock:GIL)を使用している点を除く。GILを使用しているということは、Rubyのスレッドは同時に1つしか実行できないことを意味しているが、ネイティブ・コードでは必要な数の並行スレッドを実行することができる。system("ruby", 実行するファイル)
しかし、たとえばこのコードがJRuby上で実行される場合、いろいろな理由で失敗する可能性がある。たとえば、システムに入っている唯一のRubyが JRubyの場合、「jruby」を指定して起動する必要があるだろう。それ以外の問題では、性能のオーバーヘッドがある。1つ以上のJRubyを「jruby」コマンドで起動すると、複数のJVMが起動されるだろう。これは不必要なことである。というのは、複数のJRubyインスタンスで同一の JVMを共用することができるからである。しかしながら、それを利用するためには、新しいインスタンスを作成するためのJRuby固有のコードが必要である。これはBSFやJava 6 に含まれているようなホストフレームワークを越えて変更することができる。vm = Rubinius::VM.spawn "blah", "-e", "puts 'hello\n'"新しいVMを起動することができる。このソリューションではマルチコアの利用を行っているが、それはどのVMもそれぞれのネイティブスレッド上で動いているからだ。このことは、すべてのVMが同じOSのアドレス空間に存在し、並行して動くことを意味している。しかしながら、VMはいかなる参照も-実際に-何も、共有することはできない。唯一の通信は、Rubinius独自のメッセージ・パスAPIによるものである。
要するに、成果として期待されているのは、複数のRubyVMを起動して利用することのできる共通APIである。共通APIにより、最も効率的な実装の提供を保証するバックエンドがあらゆるRuby実装に備わるのだ。たとえば、 RubiniusやJRubyでは、VMは同じアドレス空間を共有することができる。レガシーの古いバージョンのRubyについても、複数のプロセスを起動することができるだろう。東京大学大学院情報理工学系研究科の竹内郁雄教授のグループは、SunのTim Bray氏(Webテクノロジディレクタ)とJRubyチームのメンバと共同で、RubyとJRubyの両方におけるマルチ仮想マシン(multiple virtual machine:MVM)環境の実装を行う。MVM環境により、これまでよりももっと効率的にRubyのプログラムを実行できるようになることが期待されている。研究の成果は、より大きなRuby開発者のコミュニティによってオープンソースとなる予定であり、さらなる技術革新が進むだろう。
これまでは、Rubyで1つ以上のアプリケーションを同時に実行するためには複数のインタプリタが必要であり、そのため必要以上のメモリが消費されていた。計画されているMVM環境では、ただ1つのインタプリタ上に複数のVMを生成することができ、もっと効率的にアプリケーションを実行できるようになるだろう。この共同研究では、MVMを利用するための共通インタフェース定義、VMインスタンスの並列化やメモリの共有などの、技術的な問題を明らかにし、そしてRubyやJRubyで利用できる技術を実装することを目標としている。 Rubyはすでに広く商用その他の環境で使われているが、MVMの研究はRubyの性能や実用性をよりいっそう向上させるだろう。
InfoQ Japanはコンポーネントスクエアが運営しています
Javaに関するトラブル事例を解説~トラブルシューティングセミナー~
【無償】「Google Apps 企業向けソリューションセミナー」のご案内
筆者はアジャイルソフトウェア開発についての年に一度の国際会議であるAgile2008に初めて参加してきました。今年の日本からの参加者の数は14名にも及び、発表者は5名、受け持ったセッションは8つに及び、例年にない活躍を見せました。なぜ今年のAgile2008では、これほど多くの日本人が参加し発表に至ったのか? そのレポートをお届けします。
エスエムジーでは、Java全般を対象にしたトラブルシューティングサービス「JaTS」を提供しています。この記事では、前回に引き続き、JaTSにて蓄積したトラブル事例とその解決ノウハウの一部をお送りしている「Javaトラブルシューティングメールマガジン」(JTSMM)の総集編として、過去2ヶ月のトラブル事例と追加情報をダイジェストとして提供いたします。
この記事では、モデル駆動アプローチがうまく機能しない、または機能しなくなることによって期待した結果が実現できなくなる 8 つの理由について書きたいと思います。
InfoQ.com向けのこのバーチャルパネルでは、大企業やプロジェクトからスケーラビリティやパフォーマンスの著名人を招待し、みんなが夢に描いているような結果を達成するための秘密を明かしてもらいました。
Craig Larman氏とBas Vodde氏は、どのように、そして、なぜ機能チームがうまくいくのかを説明し、この主要な組織の変化が価値あるものであることを主張します。
最近リリースされたRuby 1.8.7のプレビューリリースをウオッチしていたRails開発者はすぐに1.8.7プレビュー1に関してあることに気がつきました。それは、1.8.7プレビュー1がRailsを破壊してしまうということです。
No comments
返信