MOSA Multi-OS Software Artists

MOSAはソフトウェア開発者を支援します

  • iPhone/iPod touch アプリ紹介
  • MOSA掲示板
  • 活動履歴
  • About MOSA(English)

MOSA Developer News[MOSADeN=モサ伝]第159号

2005-05-10

目次

  • 「WebObjects Dev Report」     第5回  田畑 英和
  • 藤本裕之のプログラミング夜話 #68
  • 高橋真人の「プログラミング指南」  第67回
  • ニュース・解説               小池 邦人

「WebObjects Dev Report」  第5回  田畑 英和

Tigerがやってきた!!

 さてさて、いよいよTigerがリリースされました。各地のAppleStoreも盛り上がったようですが、銀座店ではすっかり恒例になった行列が今回も出現していました。GW中のリリースだったこともあり、もうたっぷりとTigerの世界を満喫された方もいらっしゃるかと思いますが、WebObjects関連でもいくつかUp dateがありましたので、今回は予定を変更してそちらのレポートをおこないたいと思います。

Mac OS X Server v10.4

 まずはMac OS X Serverですが、これまでと同様にWebObjectsのDeploymentが付属しています。v10.3からはそれまで別CD-ROMで提供されていたものがOS本体に含まれるようになったため、その存在が見逃されがちでしたが、v10.4でもOS本体にあらかじめDeployment一式が含まれています。ですのでMac OS X Server v10.4を新規にインストールすればそれだけでWebObjectsのDeployment環境を構築することができます。
 WebObjectsのバージョンも若干アップデートされ、Mac OS X Server v10.4にはWebObjects 5.2.4のDeployment環境が付属しており、動作環境は以下のようになっています。

・WebObjects 5.2.4 Deployment動作環境
OS : Mac OS X Server 10.4以降
Java : JDK 1.4.2

 v10.3のころは実際にDeployment環境を起動するには設定ファイルを手動で編集する必要がありましたが、v10.4からはようやく「サーバ管理」ツール上で手軽に設定/起動ができるようになりました。以前からJBoss用のサービスは存在したのですが、v10.4になりようやくWebObjectsもサービスとして追加され、「サーバ管理」からwotaskdとMonitorの設定/起動ができるようになっています。
 といいましてもあまり細かな設定はおこなえず、wotaskdとMonitorそれぞれの起動/停止とポート番号の設定ができるだけです。「サーバ管理」ツール上で設定した情報は以下のファイルに保存されます。

・wotaskd
/System/Library/LaunchDaemons/com.apple.wotaskd.plist
・Monitor
/System/Library/LaunchDaemons/com.apple.womonitor.plist

 さらに、プロセスの起動方法がv10.4では変更になっています。v10.3まではStartupItems経由でwotaskd(およびMonitor)を起動しており、システム起動時にwotaskdを起動させるには設定ファイルを手動で編集する必要がありました。
 正確にはStartupItemsから起動された”javawoservice.sh”がwotaskdを起動していましたが、v10.4では新たに導入された”launchd”経由でwotaskdが起動されるように変更になっています。

WebObjects 5.2.4 Developer

 Mac OS X Server v10.4にはWebObjects 5.2.4 Deploymentが付属していますが、5.2.4 Developerがどうなっているかといいますと、すでにアップデートがリリースされています。まず5.2.4 Developerの動作環境ですが以下のようになっています。

・WebObjects 5.2.4 Developer動作環境
OS : Mac OS X 10.4以降
Developer tools : Xcode 2.0
Java : JDK 1.4.2

 すでにTiger用のJava 2 SE 5.0(ちなみにこちらの名前もTiger)がリリースされていますが、WebObjects 5.2.4では5.2.3と同じくJDK 1.4.2がサポート対象となっています。ですので5.2.4の主なアップデート内容はMac OS X 10.4とXcode 2.0対応ということになります。新規にWebObjects 5.2.4の環境を構築する場合は以下の手順になります。

(1) Mac OS X 10.4をインストール
(2) Xcode 2.0をインストール
(3) WebObjects 5.2 Developerをインストール
(4) WebObjects 5.2.4 Developerをインストール

 (3)のインストールが完了しOSを再起動すると、再起動後にパーミッション関連の警告メッセージが表示されますが、この問題は(4)で5.2.4のアップデートをインストールすることにより解消されます。5.2.4のアップデートはソフトウェアアップデート経由でも配布されています。
 他にも5.2.4ではフレームワークのバグフィックスやWebObjects Builderなどの開発ツールの改良もおこなわれています。

・WebObjects 5.2.4について
http://www.info.apple.com/kbnum/n301410

 Panther時代のころはWebObjectsの最新環境を構築するにはアップデートを何度もあてないといけなかったのでかなり手間がかかりましたが、Tigerからは以前と比べて楽に環境を構築できるようになりました。またこれまではOSやDeveloper ToolsがバージョンアップしてもなかなかWebObjectsが対応してくれませんでしたが、今回は以外と素早い対応でした。
 今後もこういった迅速な対応と、なによりも将来のロードマップを明らかにしてもらいたいものです。今年のWWDCあたりでなにか発表がないか懲りずに期待したいものです。

 さて次回は本題に戻りますが、ビジネスマッチングの開発はまだPanther上でおこなっていく予定です。時期を見計らってTigerに移行していこうかと思いますが、Tigerでのトピックについては機会があればそのつど取り上げていく予定です。

藤本裕之のプログラミング夜話 #68

 さて、皆さん連休はいかがでしたか。海、山、海外、故郷、はたまた愛・地球博だのに行ってきましたか。……なんでまた突然似合いもせぬ時候の挨拶めいたことを書いているかと言えばお察しの通り、他でもないオレがその間ずっと家にコモって仕事をしていたからだ。まぁ要するにひかんでいるんである。しかもこの後も休みの予定はないのだ。ううう……。

 本題に入ろう、NSViewの話、2回目である。前回予告した通り、まずはNSViewにおける「スーパークラスであるNSResponderから継承したのではない部分」から見て行こうと思う。

 Interface BuilderなどでNSViewのサブクラスを独自に定義して、ソースのスケルトンを作成してすぐ気がつくのは、IBActionとして定義したものとは別に、以下のメソッドの定義が自動的に生成されていることだろう。

- (id)initWithFrame:(NSRect)frameRect
{
     if ((self = [super initWithFrame:frameRect]) != nil) {
          // Add initialization code here
     }
     return self;
}

- (void)drawRect:(NSRect)rect
{
}


 ご存知のようにInterface Builderというプログラムはあんまり親切でなく、時としてどう考えてもあった方がいいだろうと思われるもモノさえ生成してくれない横着者である。……Xcodeのメニューから「New」を選んでソースファイルを作ればその先頭にくっついてくるファイル名や作成日などが書かれたヘッダーコメントをInterface Builderも作ってくれないか、と何年も思ってるんだけどなぁ。……あ、とにかく、その横着者でさえこの2つのメソッドを自動生成する。ちうことはそんだけ、この2つがNSViewというクラスの根幹に関わっているとゆーこと。早い話がNSViewは矩形領域によって初期化され(initWithFrame:)、その内部を描画する(drawRect:)クラスなのだ。簡単に言って、Cocoaを使って画面に何か描画しているなら、その処理には必ずNSViewが一枚噛んでいると思っていい。

 Cocoaの世界観では(前にも書いたような気がするがクラスライブラリというのはつまるところ世界観の表出である)、すべてのNSViewはNSWindowの内部(見た目でいう内部である。ウィンドウのインスタンス変数であるとか、あるいはサブクラスであるという意味で言ってるんではないことに注意)に配置される。まずはNSWindowが存在し、それはその内部を完全にカバーするコンテンツ・ビューというのを保持している(これはNSWindowのインスタンス変数で、ウィンドウのインスタンスにcontentView というメッセージを送ることで参照できる)。通常我々がInterface Builderを使ってウィンドウ上に配置するボタンやNSViewのサブクラスは、このコンテンツ・ビューのサブビューになっている。これらの関係を参照するメッセージを以下に列挙しておく。

-(NSWindow*) window; // そのViewが乗っかっているウィンドウを返す。

-(NSView*) superview; // そのViewが乗っかっている親のViewを返す。

-(NSArray*) subviews; // そのViewに乗っかっているサブビューのArrayを返す。

 ここでネコを殺す好奇心、View連中の一番上にいるウィンドウのコンテンツ・ビューにsuperviewを送ったら何が帰ってくるか。早速やってみた。あるViewのdrawRect:に以下のコードを書いてコンソールを見る。

NSLog(@"contentView's superView = %@",
            [[[self window] contentView] superview]);

 正直言ってオレ、(null) が表示されると思ってたんだけど、意外な結果でした。まだまだCocoaにはオレの知らない秘密があるんだな。ではまた次回。

(2005_05_06)

高橋真人の「プログラミング指南」第67回

UNIXとしてのMac OS X

〜Perlについて(13)〜

 こんにちは、高橋真人です。
 さて、今回から何回かにわたって正規表現についてのお話をしたいと思います。正規表現(せいきひょうげん)は、Perlに特有の技術ではありませんが、かつて「Perlでの実装が最も高機能」と言われていたこともあって、「Perlと言えば正規表現」と連想されることが多くありました。
 もっとも、昨今では「Perlと言えばCGI」と思う人が多くなり、さらにはRubyなどのスクリプト言語も「Perlと同等の正規表現」を掲げて登場してきたりと、特段Perlのウリは正規表現と言われることは少なくなったような気もします。もちろん、もともと正規表現というのはUNIXにおいて日常的に用いられてきていた技術であり、決してPerlの専売特許というわけではありません。ただ、Perlの得意とする文字列処理において正規表現を抜きに語ることはできませんので、ほんの入門程度ではありますが、この連載でも紹介をしたいと思います。
 ところで、UNIXはもとよりDOS/Windowsのプログラマに比して、Macプログラマで正規表現を使わない人が多い気がしているのは私だけでしょうか? ま、Windowsからプログラミングを始めた人は別として、コマンドベースで扱うOSを使う人にとって、ワイルドカードの延長線上にある正規表現は比較的身近なものであるという気もしないではありません。
 事実、私の場合もPerlをやるまでは正規表現という言葉の意味すらよく分からない状態でしたし。
 ともあれMacのOSがUNIXベースとなった今、正規表現を使えるケースはたくさんあります。Terminalからファイル操作をする場合やソースコードの編集など、使えるようになっておくと得をする場面が少なからずあるはずです。もしまだ正規表現をお使いになったことがなければ、この機会にちょっと興味を持たれてはいかがでしょうか。
 もちろん正規表現の技術もかなり奥深いものがありますから、詳しい説明をすればラクに一冊の本ぐらいは書けてしまうわけで、ここはあくまでもこの連載らしく「都合のいい部分だけをつまみ食い」の精神で行きたいと思います。ちなみに、Perlを徹底的に勉強しようと思う方には以下の本が一推しです。

詳説 正規表現 第2版
Jeffrey E. F. Friedl著
オライリージャパン 5670円
http://www.oreilly.co.jp/books/4873111307/

 厚さの割には価格が高い気もしますが、正規表現を極めようと思うならばこの本しかないと巷間では言われており、ある程度正規表現に自信のある人にとっても、なかなか読み応えがあると思います。

 さて、今までずっと正規表現という言葉を使ってきましたが、初めてこの言葉を目にした人は決まって「いったい、何?」と感じるようです。私もそうでした。
 正規表現という言葉自体は英語のRegular Expressionの直訳のようで、日本語としてはあまりこなれていないという印象がありますから、慣れないうちは言葉のイメージが実体となかなか結び付きません。
 正規表現を簡単に言い表すと「特定の文字列を表す方法」ということになりましょうか。これだけでもピンとは来ないでしょう。なぜ「特定の」かということはこれから徐々に明らかにしていきます。

 正規表現の使われるのは圧倒的に文字列検索が多いです。ほとんど検索のために使われる技術だと思っても間違いないくらいです。ですから、しばらくはPerlを離れて普通のテキストエディタで文字列検索をする例を使って説明をしていきます。
 Macに標準で備わっているテキストエディットは残念ながら正規表現に対応していません。Terminal上で動作するemacsやviなどの定番UNIXエディタはもちろん、Xcodeなども正規表現には対応しているのですが、使い方その他でいくらかの前提条件が必要になるので、ここはMacintosh環境ならば(Mac OS 9以前でも)使うことのできるフリーのテキストエディタであるmi(http://www.mimikaki.net/)を使うことにします。
 このエディタはドキュメントに、正規表現に関しては「Perlの仕様にあわせたつもり」とあるので、この連載で説明する範囲はほぼカバーすると思われます。正規表現が初めての方は、実際に試されながら読み勧められると理解がより深まるでしょう。
 では、いよいよ次回から正規表現の解説に入っていきますので、mi(最新版の2.1.5を基準とします)をダウンロードして使えるようにしておいてください。

ニュース・解説

今週の解説担当:小池邦人

Carbon ドキュメント & サンプル & SDK ナビゲーション(2005/5/6)

【開発環境】

皆さん、もうMac OS X 10.4(Tiger)をインストールしましたか? 筆者は4月29日に入手後テスト用サブマシンへインストールし、自作アプリケーションや開発ツール関連の動作確認を日々行ってきました。しかし、Metrowerks社からTigerに対応した「CodeWarrior Development Studio for Mac OS, Version 9.5 Update」が発表されたのを機に、一気にメインマシンへのインストールを断行することにしました。以下のサイトの「Updates and Patches」一覧から「CodeWarrior for Mac OS 9」を選択すると、「v9.5 Update」をダウンロードできるページに切り替わります。

「CodeWarrior Development Studio for Mac OS, Version 9.5 Update」

http://www.metrowerks.com/MW/download/default.asp

「CodeWarrior for Mac OS 9」とは少々分かりにくいカテゴリー名ですが(笑)、Mac OS 9用という意味ではなく、Mac OS用のバージョン9という意味です。アップデート後、数多くの既存プロジェクトに対してMakeを実行してみましたが、ほとんど問題ありませんでした。しかし、ただひとつ「Accelerate.framework」に属するvecLib内にあるヘッダファイル「vForce.h」がコンパイルを通らない問題に遭遇してしまいました(未解決)。vForceって何でしょうか?詳しくはWWDC 2005のセッションで説明されるようですが?

筆者のハードディスクには、開発環境に関連するソースファイルやドキュメントが大量に保存されているため(加えて増設HDもある)、Spotlightの索引作成に恐ろしく時間がかかり、ちょっと閉口しました。また、.Macサービスで提供されていたアンチ・ウイルスソフトのVirex 7.5.1がTigerに対応しておらず、Tigerインストール前に削除(アンインストール)しておかないと、Tigerを起動後に継続してCPUパワーを使い切ってしまうという不都合が発生します。Virex 7.5.1のパッケージ内に「Virex Uninstall.command」というコマンドがありますので、これを起動して削除しておきます。Apple社が自社サービスで配布したソフトなのですから、こうした情報は事前に流しておいて欲しいところです…。

それから、以前紹介した「Part 1」に引き続き、IBMサイトに「Unrolling AltiVec, Part 2: Optimize code for SIMD processing」が登録されました。AltiVecに興味ある方は一度覗いてみてください。

「Unrolling AltiVec, Part 2: Optimize code for SIMD processing」

http://www-128.ibm.com/developerworks/power/library/pa-unrollav2/index.html?ca=dgr-mw01Altivec2

【テクニカルドキュメント】

前回から5月6日の期間中、Apple社のDocumentationサイトにはTigerに関する新規ドキュメントが100以上登録されました。また、新規ではありませんが、Tigerに対応するため内容が改訂されたドキュメントも大量に再登録されています。あまりにもその数が多いので、この場で一覧を記載することは止めますが、まずは以下のリリースノートを参考にして、興味あるドキュメントをピックアップしてみてはいかがでしょうか?

「Developer Documentation Release Notes for Mac OS X v10.4」

http://developer.apple.com/releasenotes/DeveloperTools/Documentation.html

Tiger関連以外では、新しく発表されたハードウェア3機種の仕様ドキュメントが登録されています。また、デベロッパー向けに以下の4つの読み物が登録されています。「Getting Going with Tiger: Guide to ADC Resources」には、Tigerで実装された新機能のガイダンス(PDFあり)や、その他関連リソースへのアクセス方法などがまとめて紹介されています。WWDC2005へ参加される方は、興味があるセッションの「予習」として、関連ドキュメントに目を通しておきましょう!「Nice Surprise for CompuTech:Porting From Windows in Days Instead of Months」については、前号の木下さんの解説を参考にしてください。

「iMac G5 Developer Note」HW(PDFあり)
「eMac Developer Note」HW(PDFあり)
「Power Mac G5 Developer Note」HW(PDFあり)

http://developer.apple.com/documentation/index-rev-date.html

「Nice Surprise for CompuTech: Porting From Windows in Days Instead of Months」(読み物)
http://developer.apple.com/business/macmarket/electronicbluebook.html

「Tiger Early Adopter: Bare Bones Embraces Automator」(読み物)
http://developer.apple.com/business/macmarket/bbedit.html

「Exploring Tiger Server」(読み物)
http://developer.apple.com/server/tigerserver.html

「Getting Going with Tiger: Guide to ADC Resources」(読み物)
http://developer.apple.com/macosx/resources.html

前回から5月6日の期間中、新規のテクニカルノートは5つ登録されました。また、新規テクニカルQ&Aの方は3つ登録されています。TN2139には、「Dashboard Widget」の開発中に発生した問題点やエラーを発見&解決(Debugging)するための一連の作業が説明されています。TN2140では、最新(モダン)QuickTime APIを用いる方法をサンプルソースコード付きで解説しています。こちらにについては、前号の木下さんの解説も参考にしてください。また、TN2110とTN2125は再登録なのですが、不思議なことに今回の変更点の履歴内容が記載されていません(記載ミス)?

TN2110「Identifying Java on Mac OS X」
TN2125「Thread-safe programming in QuickTime」
TN2139「Debugging Dashboard Widgets」
TN2104「Handling Audio Unit Events」
TN2140「Modernizing QuickTime Applications Part I」

http://developer.apple.com/technicalnotes/index-rev-date.html

QA1428「Why is libstdc++.a missing in my Xcode project on Mac OS X v10.4 ?」
QA1426「Why is my Control/HIView not accepting drops on Mac OS X v10.4 ?」
QA1419「Customizing Process Stack Size」

http://developer.apple.com/technicalqas/index-rev-date.html

【サンプルソースコード】

前回から5月6日の期間中、Apple社のSample Codeサイトには、サンプルソースコードが12登録されました。そのうち新規のサンプルソースコードは6つのみですが、「Fade」と「Scroller」と「Stretcher」の3つは、Tigerで実装された新機能「Dashboard Widget」を開発するためのサンプルです。

「ASCIIMoviePlayerSample」(QuickTime関連)
「ASCIIMoviePlayerSample for Windows」(QuickTime関連)新規
「ComboBoxPrefs」(Carbon関連)新規
「ComplexPlayThru」(Audio関連)
「Fade」(Widget関連)新規
「HackTV Carbon」QuickTime関連)
「HIObjectThreadController」Carbon関連)
「HISimpleList」Carbon関連)
「ProfileSystem」Carbon関連)新規
「Scroller」(Widget関連)新規
「Stretcher」(Widget関連)新規
「BrideOfMungGrab」(QuickTime関連)

http://developer.apple.com/samplecode/index-rev-date.html

【デベロップメント SDK】

前回から5月6日の期間中、Apple社のSDKサイトには新しいSDKが3つ登録されました。「QuickTime 7 SDK」は、Mac OS X 10.3.9環境にQuickTime 7をインストールした後に、ソフトウェア・アップデート経由でインストールすることもできます。Mac OS X 10.4(Tiger)環境で「Xcode Tools」を使っていれば、QuickTime 7関連のSDKはそちらに含まれていますので、再度インストールする必要はありません。

「QuickTime 7 SDK」
「Kernel Debug Kit 10.4」
「CoreAudio SDK v1.3.5」(10.2x~10.3x用)

http://developer.apple.com/sdk/

MOSAからのお知らせと編集後記は割愛します

MOSA Developer News   略称[MOSADeN=モサ伝]
Apple、Mac OSは米国アップルコンピュータ社の登録商標です。またそのほかの各製品名等はそれぞれ各社の商標ならびに登録商標です。
このメールの再配信、および掲載された記事の無断転載を禁じます。
特定非営利活動法人MOSA
Copyright (C)2005 MOSA. All rights reserved.