InfoQ

News

Rubiniusの話のまとめ:SendSites、情報源、プロジェクトマネージメント

作者 Werner Schuster, 翻訳者 長部 広太 投稿日 2008年4月9日 午後12時4分

コミュニティ
Ruby
トピック
デバッグ,
コンパイラ,
ランタイム,
動的言語,
パフォーマンス&スケーラビリティ
タグ
Rubinius

Rubiniusの動向に追いつく一番良い方法は、#rubinusというIRCチャンネルに参加するか、#rubinius IRCチャンネルのログ(source)を参照することだ。IRCチャンネルは、情報源として優れているが、本当に必要としている情報に辿り着くのに雑談を沢山読まないといけない。IRCチャンネルでは、目的としている情報を取得するのに時間がかかるが、二つの新しいブログによって、Rubiniusの開発に関する情報に追いついて行く事がより簡単になるのだ。

Unwinding the stack(source)というブログは、Rubiniusプロジェクトに関する新しい週刊ニュースレター(source)に関するイベントのアイデアを提供している。Michael Klishin氏は、このブログのオーナーであり、rubinius-bookプロジェクトをGitHub上(source)で始めました。これは、Rubiniusに関する様々な話題の概要を提供する目次(source)からなるものだ。Githubプロジェクトの性質(参考記事・英語)が故に、ブランチを新しく作り、プロジェクトの小さな部分に取り組むことによって簡単にプロジェクトに関わることが出来る。GitHub によって、ブランチ間の変更の経過を追う事が出来たり、ブランチ間で行われた様々な種類のマージを追う事が出来るので、このことにより、全ての人が、 rubinius-bookプロジェクトを初めから始めたり、共有したり出来る。また後者のオプションで、マージしたものをマスターブランチへ戻す事が出来るのだ。

 
もうひとつの新しいRubiniusブログは、Building a Better Ruby(source)というAdam Gardiner氏(フルスピードのRubiniusデバッガ開発者(参考記事・英語))によるもので、Rubiniusの基本的な構成概念に関する長い記事が二つ既に掲載されています。


Adamは別の記事で、Sendsitesの説明をしている(source)

Rubinius SendSite[…]は、オブジェクトで、それはあらゆるsend site(メソッドコール)用にRubiniusのバイトコードで作られており、また最適化を容易にします。

混乱を避けるための説明:「send site」とは、コード上でメソッドが実行される箇所だ。SmalltalkやRuby用語を使うと、「メッセージ送信」で、例えばfoo.barのことだ。Adam 氏が、記事の中で説明しているように、SendSitesは、様々な最適化を行うのに必要だ。またそれらの最適化の中で、ポリモフィックなInline Cachesのような概念のためにも必要だ。Inline Caches(サイト・英語)はメソッドのルックアップの結果をキャッシュし、従って多くの場合バーチャルコールのコストを下げている。

Adam氏が説明するように、Sendsitesの実装の副作用は、とても有益だ。

 [A]SendSiteは、Selectorオブジェクトへの参照を含みます。Selectorは、メッセージすなわちメソッド名を意味するオブジェクトだ。Selectorは、メッセージのシンボルから成ります。また同じメッセージを使用するSendSiteへの多数のリンクからも成っている。特定のメッセージを直接的に使う能力を提供しているので、これはとても役に立つかもしれない。(例えば、送信を経た間接的な用途や様々なevalを捕捉出来ないなどがあるが)

これによって、SendSiteが使われるたびに、即ちメッセージ送信が行われるたびに、SendSiteがカウンターを増加させる事実と共に、ロード済みのコードとその振る舞いとパフォーマンス分析するのために非常に有益なツールを書く事が出来ます。
もっとも重要な事:Selectors and SendSitesは、Rubyのコードからアクセス可能なので、この情報の全ては、irbシェル又はロード済みのRubyのコードからインタラクティブにアクセス可能だ。Full speed Rubinius debuggerが、同様に命令コード置き換えを使用しているRubyで書かれているということを考えると、Rubiniusのデザインとトランスペアレンシーは、計測モニタリング用のツールを記述する強力なプラットホームであることが分かる。


最後に、Rubiniusを創ったEvan Phoenix氏のMountainWest Ruby会議2008のビデオ(VTR・英語)がアップされている。そのビデオではRubiniusプロジェクトがどのように組織されて、新しい開発者の参入障壁を低くする「Free flowing commit bit」戦略に伴う経験を説明している。

Rubiniusに関する今までの情報をチェックしてみて下さい(参考記事)

ブックマーク
digg+,
reddit+,
del.icio.us+,
dzone+,
Hatena

No comments

返信

ジャンル別一覧

BlazeDSとAMFでWebとデスクトップのアプリケーションを構築する

現在のRIAアーキテクチャにおいて、クライアント/サーバーの通信は重要な位置を占めています。本稿では、James WardとShashank TiwariがアドビによるオープンソースのBlazeDSメッセージングサーバーの世界へ飛び込みます。

業務ソフトに手を加えずに暗号化を実現する~秘文の挑戦~

hibun

ウィルス対策ソフトや情報漏えい防止用のソフトは、いわば影の存在です。ユーザの操作性やGUIを工夫する以上に、いかに目立たない存在となるかにその技術を注ぎ込んでいます。ここでは日立ソフトが開発した「秘文」の事例を紹介します。

Google Chartとgchartrbの紹介

Google Chartは、チャートを作成するためのWebサービスです。本稿では、Google Chartのインターフェースと、Rubyコードから簡単にチャートを生成することができるgchartrbライブラリの説明をします。

SOAを超えて: 動的な業務アプリケーションのための新しいエンタープライズアーキテクチャフレームワーク

全二回からなるこの記事では、ダイナミックビジネスアプリケーション(Dynamic Business Applications:DBAs)の開発についての全体的な眺望を、アーキテクチャと方法論の観点から見ていくことになります。我々のゴールは、「ビジネスの変化や、その他に必要とされる変更に対して、いかにして容易に適応できるアプリケーションを構築していくか」を導きだすことです。

ESB接続形態のオルタナティブ

本稿では、Adrien Louis氏がESBベースのSOAに対する2つの接続形態についての賛否について説明しています。その2つとは、会社での単一のESB対「部門毎」に相互接続するESBによるシステムです。

AjaxプログラマのためのJavaOne2008 -GrizzlyでComet!-

誕生から2年を経てCometは「何が出来るのか」という議論から、「いかに実現するか」という議論に関心が移ってきたように見えます。そこで本稿では同じくJavaOneで数多く取り上げられたNetBeans 6.1とGlassFish v3を使いながら、サンプルを交えてCometを解説していく事にします。

SharePoint Webサービスを始めましょう

この記事では、WSS3とMOSS 2007に難しい設定など一切せず、すぐに利用可能なWebサービスと、Javaと.NETからそのWebサービスを消費する方法に目を向けます。

レトロスペクティブのプライムディレクティブに対する問い

この記事の始まりは、知的で思慮深い人たちの魅力的なグループが食事会を終えて話をしているところです。話はレトロスペクティブ(振り返り)プロセスの要であるプライムディレクティブ(最初の指示)に及んでいます。