OS X に入っている PerlObjCBridge.pm

| コメント(0) | トラックバック(0) | このエントリーを含むはてなブックマーク

風の噂で Mac OS X に標準でインストールされている PerlObjCBridge.pm を使うと Cocoa へアクセス出来ると聞いたので、PerlObjCBridge.pm とはなんぞや?っと思いちょっと調べてみた。

案の定、日本語での情報は皆無で、CPAN みてたら Perl ディストリビューションの README に少しだけ書いてあった。ので頑張って訳してみる。

Cocoa

There are two ways to use Cocoa from Perl. Apple's PerlObjCBridge module, included with Mac OS X, can be used by standalone scripts to access Foundation (i.e. non-GUI) classes and objects.

PerlからCocoaを使用する2つの方法があります。Mac OS Xに含まれているアップルのPerlObjCBridgeモジュールを使い、スタンドアロンスクリプトでFoundation(すなわち、非GUI)のクラスとオブジェクトにアクセスすることが出来ます。

An alternative is CamelBones, a framework that allows access to both Foundation and AppKit classes and objects, so that full GUI applications can be built in Perl. CamelBones can be found on SourceForge, at http://www.sourceforge.net/projects/camelbones/.

代替手段はCamelBonesです、FoundationとAppKitのクラスとオブジェクトの両方へのアクセスを許すフレームワークで、Perlで完全なGUIアプリケーションを組立てることができるようになります。 CamelBonesはSourceForgeで見つけることができます。http://www.sourceforge.net/projects/camelbones/

README.macosx - Perl under Mac OS X - search.cpan.org

perldoc で /System/Library/Perl/Extras/5.8.6/darwin-thread-multi-2level/PerlObjCBridge.pm を読むとなんとなくわかるんだけど、Object-C でこのような Hello World と表示するコードがあったとする。

#import 

NSString *s1 = [NSString stringWithCString:"Hello "];
NSString *s2 = [[NSString alloc] initWithCString:"World"];
NSString *s3 = [s1 stringByAppendingString:s2];
printf("%s\n", [s3 cString]);

それを PerlObjCBridge.pm を使って(Foundation.pm が use PerlObjCBridge; している) Perl で書くと以下のように書き換えることが出来るらしい。

#!/usr/bin/perl
use Foundation;

$s1 = NSString->stringWithCString_("Hello ");
$s2 = NSString->alloc()->initWithCString_("World");
$s3 = $s1->stringByAppendingString_($s2);
printf "%s\n", $s3->cString();

で perldoc を読んだ限りで、なんとなくわかったことをまとめると、

  • PerlObjCBridge.pm を使うと、Object-C のオブジェクトやクラスに Perl からアクセスする事がきる。
  • またその逆も提供するらしく Object-C から Perl にアクセスする事も出来る。(どうやって使うかは書いてない)
  • CamelBones に関しては PerlObjCBridge の代替手段として使用出来、AppKit (インターフェースビルダーで作った GUI 部分?) にもアクセス出来る。

要するに PerlObjCBridge も CamelBones も Perl から Object-C のオブジェクトやクラスを使うことが出来て、ソースコードから GUI をゴリゴリ書く場合は PerlObjCBridge で、インターフェースビルダーとかで GUI を用意してからアクションとかを Perl で書きたい場合は CamelBones ってことになるんじゃないかな。っと思う。

なんだかうまくまとまってないので、後日わかったことがあったら追記していく。

トラックバック(0)

トラックバックURL: http://www.hasta-pronto.org/mt/mt-tb.cgi/121

コメントする