BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース DTrace、Xcode、およびInterface BuilderをサポートするMac OS X Leopard上でのRubyの動作

DTrace、Xcode、およびInterface BuilderをサポートするMac OS X Leopard上でのRubyの動作

ブックマーク

先日、待望のMac OS X Leopardがリリースされたが、これにはRuby開発への極めて幅広いサポートも付属している。Mac OS ForgeのWikiは、Leopardの新しいRuby機能を掲載している(source)

Ruby自体は1.8.6 p36にアップグレードされ、これが入手可能な安定した最新リリースでした。p36以降に発見された重大なバグに対するパッチを加えましたが、その時点では正式なRubyパッチリリースの一部となりませんでした(実際はそうであったものの、当社側の期日に間に合わなかったため)。 
[中略]
インタープリタのコアを含むRubyのlibruby.1.dylibライブラリは、ppc、i386、ppc64、およびx86_64 アーキテクチャ向けの、4ウェイのファット/ユニバーサルバイナリとして利用可能です。したがって、Rubyを64ビットのアプリケーションに組み込むことができます。C拡張子もすべて32ビットと64ビット両方のアーキテクチャに利用可能です(ただし、64ビット化できないTkは除く)。このため、Rubyインタープリタのランチャーである/usr/bin/rubyは、Tk拡張子を使用するスクリプトを分割しないために32ビットのみが残されるか、その他の32ビットのみに依存するものが残されました。 
RubyのC拡張子は、デフォルトでppcおよびi3862向けに2ウェイのファットバイナリをコンパイルします。たとえば、非ユニバーサルなライブラリ(プロセッサアーキテクチャごとに渡されるmysql.comバイナリなど)を背景にリンクする場合、ARCHFLAGS環境変数を設定して拡張子のビルドを構成することができます。

これらすべての詳細は別にして、Rubyインタープリタへに追加された興味深い機能は、DTraceの静的プローブへのサポートである。DTraceはもともと、SunがSolaris用に開発したものだが、現在では他のUnixバージョンにも移植されている。DTraceは、アプリケーション、さらにはオペレーティングシステムコードのトレースプロファイル低オーバーヘッドで実行することを可能にする。Mac OS X Rubyインタープリタには、以下のプローブが含まれる(source)

プローブ

現在Ruby-DTrace内に存在するプローブ

プローブ名 説明
function-entry Rubyメソッドが入力されたときに発動するプローブ
function-return Rubyメソッドが返されたときに発動するプローブ
raise Ruby例外が発生したときに発動するプローブ
rescue Ruby例外が解決されたときに発動するプローブ
line Rubyの行の実行ごとに発動するプローブ
gc-begin GCサイクルの開始直前に発動するプローブ
gc-end GCサイクルの終了直後に発動するプローブ
object-create-start Rubyオブジェクトの割り当て直前に発動するプローブ
object-create-done Rubyのオブジェクト割り当て終了時に発動するプローブ
object-free Rubyオブジェクトの解放ごとに発動するプローブ
ruby-probe Rubyコードから発動可能なプローブ(以下を参照)
これらはJoyents Ruby DTraceプロジェクト(source)から移植されたものである。Mac OS X Leopardは、イベントのトレースとプロファイルの視覚化を実現するInstrument(サイト・英語)と呼ばれるツールも備えている。

Appleは、Xcode(サイト・英語)およびGUI ビルダであるInterface Builder(サイト・英語)へのサポートも組み込んだ。
Leopard内のXcodeはRubyCocoaプロジェクトテンプレートを装備していますが、Test/Unitターゲットを生成するテンプレートも備えています。Xcodeは、BridgeSupport機構が駆動する、Rubyより良いオートコンプリートもサポートします。.
現在、Interface Builderは正式にRubyをサポートしています。たとえば、アウトレットやアクションを用いてRubyクラスをXcodeで記述することができ、これによってすべてが自動的にIBに現れます。IBはRubyCocoaのrb_nibtoolユーティリティ使用してメタデータを同期化します。一方、アウトレットやアクションをIB内で手動で定義し、それらをXcode Rubyファイルにドラッグ&ドロップすることができ、これによって一致するRubyコードがペーストされます。
Mac OS X Leopard には、アプリケーションのスクリプティングを実現するScripting Bridge(サイト・英語)と呼ばれる新しいフレームワークも含まれる。Rubyもサポートされている。
ScriptingBridgeは、AppleEventインフラストラクチャへのアクセスを提供する新しいLeopardフレームワークで、AppleScriptはこれに基づいています。ScriptingBridgeは、任意のアプリケーションのスクリプタブルディクショナリに相当するObjective-Cインターフェースを動的に生成します。その後、メッセージを送信し、このアプリケーションをObjective-Cから制御することができます。 
RubyCocoaのおかげで、RubyからScriptingBridgeを使用することも可能です。Enumerationのようにアクセスできないスクリプティング要素もまだいくつかありますが、その機能の大部分は利用可能です。
原文はこちらです:http://www.infoq.com/news/2007/10/ruby-leopard

この記事に星をつける

おすすめ度
スタイル

BT