掲載日時: 2007-10-25 16:34

Leopard解体新書--第1回:RubyCocoaでWebページ表示

一足早くZDNet Japan編集部員宅にLeopardが届いてしまった。というわけで、早速レビュー。この連載ではブラウザShiira開発者でもある木下誠氏がLeopardの技術的な仕組みを掘り下げる。

著者 : 木下誠(HMDT)

URL : https://japan.zdnet.com/article/20359550/

Leopard登場!その真価は如何に?

 いよいよ待ちに待ったLeopardことMac OS X 10.5が発売される。Appleによれば、300を超える新機能を引っさげての登場となる。

 インストールした直後は、新しくなったFinderやDockが目を引くだろう。Time Machineも強烈なインパクトがある。だが最初の驚きが過ぎると、「これだけ?」と感じる方もいるかもしれない。

 しかし、決してそんなことはない。もともとOSのバージョンアップとは、内部のライブラリやフレームワークを整備して、多くのアプリケーションが活躍する土台を整える事にある。それらが充分に活用されるとき、その真価が発揮されるだろう。

 とは言っても、せっかく手に入れたLeopardだ。そんな悠長な事は言わず、今すぐ色々な機能を試してみたいのが人情。そこで、この連載ではLeopardの新機能を体験し、その仕組みを掘り下げてみようと思う。一見しただけでは分からない魅力──Leopardを解体してその魅力を引き出してみようではないか。

開発環境のインストール

 この連載を始めるにあたって、読者の方にお願いしたいことがある。それは、Leopardのインストールが終わったら、開発環境もいっしょにインストールして欲しいのだ。もともとUNIX環境の上に構築されているMac OS X。その真の姿を見るには、開発環境が不可欠だ。

 開発環境のインストールは非常に簡単。LeopardのインストールDVDには、「Optional Installs」というフォルダがある。その下にある、「Xcode Tools」というフォルダ。ここに開発環境のインストーラがあるのだ。

Xcode Tools Xcode Toolsは、LeopardのインストールDVDに収録されている

 「XcodeTools.mpkg」というパッケージをインストールしてほしい。興味のある方は、ウィジェット開発環境である「Dashcode.pkg」や、WebObjectsのための「WebObjects.mpkg」もインストールしておこう。

標準搭載されたRubyCocoa

 さて、本連載の第一回目で取り上げるLeopardの新機能は、RubyCocoaだ。Mac OS Xユーザならずとも、近年のプログラミング業界に興味のある方ならば、気になる存在だろう。

 RubyCocoaは、名前の通り、プログラミング言語Rubyから、Mac OS XのアプリケーションフレームワークであるCocoaを操作できるようにしたものだ。Cocoaは、Objective-Cというプログラミング言語から使うように設計されているが、それ以外にも様々な言語が使える。Javaも使えたし、LeopardからはRubyとPythonのブリッジが標準で搭載されるようになった。

 もともとRubyCocoaの歴史は古い。2001年に藤本尚邦氏によって開発がスタートした。オープンソースとして多くの開発者を巻き込みながら成長し、2006年のWWDCではLeopardに標準搭載され、Appleがサポートに協力することが発表された。オープンソースの成果を積極的に取り込むとした、Appleの方針がいい形で作用した好例だろう。

RubyCocoaで対話的プログラミング

 前置きはこのくらいにして、とにかくRubyCocoaに触れてみよう。RubyCocoaの魅力は、対話的なCocoa開発にある。これは、使ってみないと分からない。

 まず、Finderで/Developer/Examples/Ruby/RubyCocoa/を開けてほしい(これは、先ほどの開発環境とともにインストールされる)。ここに、RubyCocoaのサンプルが並んでいる。この中にある、CocoaRepl/CocoaRepl.xcodeprojをダブルクリックして開く。そして、ツールバーにある「ビルドして進行」選ぶ。

 すると、CocoaReplというアプリケーションが起動するだろう。これが、RubyCocoaのためのインタプリタ、つまり対話的に作業するためのアプリケーションだ。

CocoaRepl RubyCocoaの魅力は対話的なCocoa開発

 使い方には、ちょっとコツがある。上部のテキストフィールドにRubyのコードを打ち込んでいくのだが、一行入力したら、[Cmd]+[Return]を押してほしい。これで、そのコードが実行される。単にReturnキーを押すだけでは実行されないので注意が必要だ。または、「Ruby」メニューにある「Eval」や「Eval Line」を使ってもいい。

 では、使ってみよう。次のように入力してほしい。各行の終わりでは[Cmd]+[Return]を忘れないように。

window = OSX::NSWindow.alloc.initWithContentRect_styleMask_backing_defer([100, 100, 300, 300], 15, 2, 0)
window.makeKeyAndOrderFront(nil)

 これでウインドウが表示されるはずだ。NSWindowというのがCocoaでのウインドウを表すクラスであり、その作成と表示をRubyCocoaで行ったのだ。

 次に、このウインドウにWebページを表示させてみよう。ウインドウの大きさを調節してみよう。

 ウインドウの大きさを調節するには、次のように入力する。

OSX.require_framework 'WebKit'
webview = OSX::WebView.alloc.initWithFrame(window.contentView.frame)
window.contentView.addSubview(webview)

 Web Kitというのが、Mac OS XでWebページを表示するためのフレームワークだ。ページの表示には、WebViewというクラスを使う。それを作成して、ウインドウに追加した。ここまでで、ウインドウが白くなったはずだ。

 続いて、次のコードを入力する。

url = OSX::NSURL.alloc.initWithString('http://www.apple.com')
request = OSX::NSURLRequest.alloc.initWithURL(url)
webview.mainFrame.loadRequest(request)

 これで、指定したURLアドレスのWebページが表示されるはずだ。

WebView 皆さんはwww.apple.comが表示されただろうか

 このように、RubyCocoaを使えば対話的に、つまり一行ずつ入力して実行を繰り返しながら、アプリケーションを動かすことができる。またCocoaだけではなく、Web Kitのような外部のフレームワークも利用できるのだ。

 次回も、RubyCocoaをもっと触ってみることにしよう。

ZDNET Japanは、Ziff Davisからのライセンスに基づき株式会社4Xが運営しています。
ZDNET Japan is operated by 4X Corp under license from Ziff Davis.

Copyright © 2026 4X Corp, Inc. All rights reserved. No reproduction or republication without written permission.