Macintosh Developer Online (MDOnline)


2001年9月13日発行号 - Carbonアプリでサービスメニュー



米国のテロ事件について、昨日「フィクションとしても思いも付かないような手口」などと書きましたけど、トム・クランシー「日米開戦」で、日本人テロリストがホワイトハウスに飛行機で突っ込むというのがクライマックスだということを教えていただきました(林さんありがとうございます)。で、Amazon.co.jpを早速チェックしたのですけど、『アメリカで起きた同時多発テロ事件の影響で、商品の発送可能時期が下記の表示と異なる場合があります。ご了承ください。』なんて書いてあります。みんな、素早くチェックをしますね。

 http://www.amazon.co.jp/exec/obidos/tg/detail/glance/-/books/4102472010/qid=1000355173/ref=sr_sp_re_1_8/249-5828659-3153158

今日の記事では、VisualCafeという一部の方には懐かしい名前のものが出てきます。新しいバージョンだというので、Macintoshはぜんぜんかすってもいないけど、記者会見に行ってきました。以前、シマンテックでVisualCafeの担当だった人が移っているので久々に御会いできるというのもありました。VisualCafeというかWebGainは完全にWebObjectsと競合するものであり、さしずめProject BuilderがVisualCafeみたいなものでしょうか(ちょっと違うけど)。市場の冷え込みなどとは言いながら、比較的規模の大きい業務システムは手堅い需要があると思います。そちらの世界が今もこれからも活発に動くというところかもしれません。

ひさびさにプレゼントです。技術評論社様よりWeb Site Designの最新刊Vol.2を提供していただきました(ありがとうございます)ので、プレゼントをいたします。12日に発売ですので、すでに店頭には並んでいると思います。私はWebDAVの記事を書いております。

===============================プレゼント
Web Site Design Vol.2(技術評論社提供-3冊)
 
――――――――――――――――――――――――――――――――――――
申し込み方法:<msyk@mdonline.jp>宛にメールをする
 メールのタイトルは、【Web Site Design希望】
 メールの本文には、送付先の名前(団体部署名)、住所、郵便番号、を記載
 メールは、MDOnlineに登録のメールアドレスから送付してください
   有償での購読者、MOSA会員としての購読者、ヘリオグラフ顧客様
   としての購読者の方々に応募の権利があります。
 日本時間で2001年9月16日(日曜日)までに到着したメールより抽選します
(新居雅行 msyk@mdonline.jp


Carbonアプリケーションにサービスメニューを組み込む方法と10.1での新機能

Mac OS Xのサービスメニューについてのドキュメント「Setting Up Your Carbon Application to Use the Services Menu」が公開された。ドキュメントは、Carbonアプリケーションにサービスメニューをつけるというものであるが、内容に興味深い記述もある。まず、サービスメニューは、Mac OS X 10.0ではCocoaアプリケーションでしか利用できないものであった。サービスメニューを利用することで、別のアプリケーションに対して処理を依頼し、その結果を受け取るということができるため、Mac OSユーザにとっては新しいソフト利用の枠組みとして注目をされたものの、Cocoaアプリケーションのみということやあるいはメニュー構成のなどについての柔軟性は完全ではなく、本格的な利用には至っていない。しかしながら、Mac OS X 10.1では、/Library/Servicesフォルダに、サービスメニューからリクエストに対応するアプリケーションを組み込んでおけば、CocoaはもちろんCarbonからも、そのアプリケーションにリクエストを送って処理をさせることができる。また、このフォルダに項目を追加することで、アプリケーションのサービスメニューに自動的に登録されるようになるため、ユーザごとのサービスメニューのカスタマイズも可能になる。言い換えれば、「サービスメニュー向けアプリケーション」といった新しい形態のソフトウエアも登場することは十分に考えられる機能アップである。(なお、Servicesフォルダは、Libraryフォルダの下に存在するものが検索されるため、いくつかの置き場所があるということになる。)
こうしたサービスを利用する、あるいはサービスとして利用されるアプリケーションを、Carbonフレームワークで作成する方法が詳細に文書で記載されている。サービスを利用する側でも、データの設定や取り出しなどが必要になるが、そうしたことも含めて基本的には規定のCarbon Eventに対応するというやり方で機能を組み込むことになる。サービスとして呼び出される側も同様Carbon Eventに対応するが、その他に設定ファイルを作成するなどの対処が必要になる。いずれにしても、サービスメニューがCarbonに解放されるのはMac OS X 10.1であることが明らかになった。また、ユーザのカスタマイズの余地があるもある意味では面白く有用性のある機能だと言えるだろう。

関連リンク:Setting Up Your Carbon Application to Use the Services Menu
カテゴリ:アップルからの開発資料, ユーザインタフェース, Carbon/CF


鶴薗賢吾のCocoaはやっぱり!出張版》#3-ウィンドウの形状変更と透明化(3)

■ ウィンドウ内の描画の手順
ウィンドウの中への描画については、CustomViewクラスのdrawRect :メソッドで行います。ウィンドウ内の描画と今まで書いてきましたが、実際には、ウィンドウ上に配置されているビューへ描けばよいのです。まずは、このCustomViewの初期化のところから見ていきます。初期化コードはawakeFromNibに書きます。awakeFromNibについては前回説明しましたので、詳しくは前回の記事を見てください。アプリケーション起動時にMainMenu.nibが読み込まれますが、その後にnibファイル内のインスタンスのawakeFromNibが呼ばれます。


// ソースファイル:CustomView.m
// メソッド:awakeFromNib :

circleImage = [ NSImage imageNamed : @"circle" ]; // 円の画像
pentaImage = [ NSImage imageNamed : @"pentagram" ]; // 五角形の画像
[ self setNeedsDisplay : YES ]; // 描画要求

ここで、ウィンドウの中に表示する画像を2つ読み込んでいます。imageNamed : というメソッドは、プロジェクトのResourcesに登録されている画像を読み込んでNSImageを作成するものです。最後に、
setNeedsDisplay : で自分自身に描画要求を行っていますが、これで、自分自身のdrawRect : が呼ばれて描画が行われることになります。その描画メソッドであるdrawRect : は以下のようになります。

// ソースファイル:CustomView.m
// メソッド:drawRect :

- (void) drawRect : (NSRect) rect
{
: 略
if ( [ [ self window ] alphaValue ] > 0.7 ) // ウィンドウの透明度で振り分け
[ circleImage compositeToPoint : NSZeroPoint
operation : NSCompositeSourceOver ]; // 円を描画
else
[ pentaImage compositeToPoint : NSZeroPoint
operation : NSCompositeSourceOver ]; // 五角形を描画

[ [ self window ] setHasShadow : NO ]; // ウィンドウの影の再計算のため
[ [ self window ] setHasShadow : YES ];
}

最初にウィンドウの透明度によって円を描くのか、五角形を描くのかを振り分けています。後で出てきますが、スライダーを動かすとウィンドウの透明度が変わるようになっています。ウィンドウの透明度を取得するのがalphaValueです。それから、「 self window 」と書いてありますが、windowメソッドで、このCustomViewが配置されている親のウィンドウを取得できるのです。

if ( [ [ self window ] alphaValue ] > 0.7 ) // ウィンドウの透明度で振り分け

 ★ NSWindow : ウィンドウの透明度を取得
  [書式] - (float) alphaValue
  [出力] 返り値 : 透明度 (不透明 0.0 〜 1.0 透明 )

さて、描画に戻ります。画像 ( NSImage ) の描画には、compositeToPoint : operation : を使っています。このメソッドは、描画の場所と背景との画像の演算の種類を指定できます。NSZeroPointは、原点( 0, 0 )を表します。NSCompositeSourceOverは、描画先との演算指定ではもっともよく使用されるもので「 不透明の部分は上書きして、透明部分は何もしない 」という演算です。

[ circleImage compositeToPoint : NSZeroPoint
operation : NSCompositeSourceOver ]; // 円を描画

 ★ NSImage : 指定位置に指定透明度、指定合成方法で画像を表示
  [書式] - (void) compositeToPoint : (NSPoint) point
       operation : (NSCompositingOperation) op
  [入力] point : 表示位置、op : 合成方法

最後に、ウィンドウの影のありなしを切り替えています。

[ [ self window ] setHasShadow : NO ]; // ウィンドウの影の再計算のため
[ [ self window ] setHasShadow : YES ];

意味のないことをしているようですが、透明なウィンドウでは、ウィンドウの中に描画を行うと、ウィンドウの形が変わり、それに連動してウィンドウの影の形も変わらなければなりません。しかし、ウィンドウの影の形は自動的には更新されません。更新させるために、ウィンドウの影をオフ/オンを行っています。この処理をしないと、以下のように直前の影が残った状態になってしまいます。

 

■ ウィンドウの透明度変更
次は、スライダーの処理を見てみましょう。Controller.mを見てください。

// ソースファイル:Controller.m
// メソッド:changeTransparency :

- (IBAction) changeTransparency : (id) sender
{
[ itsWindow setAlphaValue : [ sender floatValue ] ]; // 透明度変更
[ itsWindow display ]; // 再描画
}

先程のdrawRect : の中で、ウィンドウの透明度を参照していましたが、設定をしているのはここです。setAlphaValue : で透明度を変えることが出来ます。そして、displayメソッドで、ウィンドウを再描画させています。つまり、そのウィンドウの中にある、CustomViewも再描画されますので、先程のdrawRect : も呼ばれることになります。

 ★ NSWindow : ウィンドウの透明度を設定
  [書式] - (void) setAlphaValue : (float) windowAlpha
  [入力] windowAlpha : 透明度 (不透明 0.0 〜 1.0 透明 )

これを使うと、ウィンドウを画面に表示させる時にフェードインさせたり、ウィンドウを閉じる時にフェードアウトさせるような遊びをすることも可能になります。

[鶴薗賢吾]

関連リンク:Cocoaはやっぱり!
カテゴリ:Cocoa, 鶴薗賢吾のCocoaはやっぱり!出張版


鶴薗賢吾のCocoaはやっぱり!出張版》#3-ウィンドウの形状変更と透明化(4)

■ ウィンドウの自前ドラッグ処理
ウィンドウのスタイルマスクでタイトルバーを無くしてしまったので、ウィンドウを移動させる手段がありません。そのため、ウィンドウ ( CustomWindow ) にマウスダウンイベントとマウスドラッグイベントに対して、ウィンドウを移動する処理を書いておく必要があります。そのためには、NSWindowのmouseDown : メソッドとmouseDragged : メソッドをオーバーライドします。ウィンドウやビューは、マウスボタンが自分自身の上で押されると、 mouseDown : メソッドが、そのままドラッグされるとmouseDragged : メソッドが呼ばれます。

■ マウスダウン処理
サンプルのmouseDown : メソッドでは、CustomWindowのinitialLocationというNSPoint型のインスタンスに、ウィンドウのどこでマウスボタンが押されたかの座標を、ウィンドウの座標系で覚えています。


// ソースファイル:CustomWindow.m
// メソッド:mouseDown :

- (void) mouseDown : (NSEvent *) theEvent
{
   : 省略
initialLocation = [ self convertBaseToScreen :
[ theEvent locationInWindow ] ]; // クリック座標を取得
   : 省略
}

mouseDown : のメソッドにはNSEventクラスのパラメータが1つ渡ってきますが、ここにイベントに関する情報が入っています。マウスボタンが押された座標はNSEventのlocationInWindowメソッドで得ることが出来ます。これは、ウィンドウの左下を原点とする座標系の値になっています。ConvertBaseToScreen : メソッドで画面の左下を原点とする座標系に変換しています。左下というのを不思議に思うかもしれませんが、Cocoaでは、左上ではなく、左下が座標原点になっています。数学で使っていた上に向かってY座標の値が増える座標系を使っています。

 ★ NSEvent : イベント発生時のマウスの位置を取得
  [書式] - (NSPoint) locationInWindow
  [出力] 返り値 : マウスの位置

 ★ NSWindow : ウィンドウ内の座標からスクリーンの座標に変換
  [書式] - (NSPoint) convertBaseToScreen : (NSPoint) aPoint
  [入力] aPoint : ウィンドウ座標での位置
  [出力] 返り値 : スクリーン座標での位置

■ マウスドラッグ処理

// ソースファイル:CustomWindow.m
// メソッド:mouseDragged :

- (void) mouseDragged : (NSEvent *) theEvent
{
   : 省略
NSPoint newOrigin; // 新しいウィンドウの位置
NSRect screenFrame = [ [ NSScreen mainScreen ] frame ]; // 画面の大きさ
NSRect windowFrame = [ self frame ]; // ウィンドウの画面での位置
   : 省略
// クリック座標を取得
currentLocation = [ self convertBaseToScreen :
[ self mouseLocationOutsideOfEventStream ] ];
   : 省略
[ self setFrameOrigin : newOrigin ]; // ウィンドウを移動
}

mouseDragged : メソッドでは、mouseDown : メソッドで記憶したマウスが最初に押された時の座標からのずれを計算して、新しいウィンドウの場所 ( 左下隅の座標 ) を計算しています。ここでのマウスの座標の取得方法は、NSWindowのmouseLocationOutsideOfEventStream を使っています。先程使った、NSEventのlocationInWindowを使っても同じ値になります。イベント ( NSEvent ) から座標を得る方法と、ウィンドウ ( NSWindow ) から座標を得る方法があるということを示したかったのでしょうか、あえて、別の方法で実装しています。

 ★ NSWindow : マウスの座標を取得
  [書式] - (NSPoint) mouseLocationOutsideOfEventStream
  [出力] 返り値 : ウィンドウ座標でのマウスの位置

計算の中で、ウィンドウの上端が、画面の上端からはみださないような処理もしています。このときのために、画面の大きさを得ていますが、これには、NSScreenクラスを使います。mainScreenメソッドで、メインスクリーンのインスタンスが得られますので、これのframeメソッドで座標を得ることが出来ます。

 ★ NSScreen : メインスクリーンを取得
  [書式] + (NSScreen *) mainScreen
  [出力] 返り値 : メインスクリーンのインスタンス

 ★ NSScreen : スクリーンの位置情報を取得
  [書式] - (NSRect) frame
  [出力] 返り値 : スクリーンの位置情報

■ メニューバーより手前に表示する
CustomWindow.mのソースの初期化メソッドの中に以下の行があります。

[ result setLevel : NSStatusWindowLevel ];

ウィンドウのレベルをセットしているメソッドですが、これは、画面の中でウィンドウが表示される高さを決めるものです。高いというのは、より手前に表示されるという意味です。NSStatusWindowLevelというのはドキュメントがまだ整備されていませんので厳密なところは分かりませんが、メニューよりもDockよりも手前で、他のアプリケーションをアクティブにしても手前に表示されますので、最も手前の部類に属するレベルであることは間違いないと思われます。ただし、ここまで手前に表示するのは、例えば、画像ビューワーのスライドショーや動画の全画面再生のような用途に限られると思います。

 ★ NSWindow : ウィンドウのレベルを変更
  [書式] - (void) setLevel : (int) newLevel
  [入力] newLevel : ウィンドウのレベル

ヘッダーを見ると、ウィンドウのレベルには以下のようなものがあります。

// ソースファイル:NSWindow.h

NSNormalWindowLevel
NSFloatingWindowLevel
NSSubmenuWindowLevel
NSTornOffMenuWindowLevel
NSMainMenuWindowLevel
NSStatusWindowLevel
NSDockWindowLevel
NSModalPanelWindowLevel
NSPopUpMenuWindowLevel
NSScreenSaverWindowLeve

■ 終わりに
前回のムービー再生で動画やMP3も再生出来るようになりましたし、今回のウィンドウの変形でスキンの機能も実現出来るようになりました。これで、面白いプレーヤーソフトが作れるための材料が揃ってきました。その他、時計やカレンダー、デスクトップマスコットなど応用範囲の広いものですので、是非いろいろと試してみてください。

最後に、1つ手抜きのためのテクニックを紹介します。今回のサンプルでは、CustomViewでウィンドウの中を描画していましたが、NSImageViewを使う手もあります。NSImageViewのBorderを枠なしにすると、NSImageView自身が透明になるため、透明色を含む画像を表示すると、そのままウィンドウも透けるのです。ただし、NSImageViewがイベントを処理してしまってウィンドウがドラッグできなくなるので、その上に、CustomViewを被せておきます。このCustomViewには何もコードは書かなくて構いません。

 

これを実行すると、以下のようになります。自分で描画をしないのならば、こちらの方が手軽かもしれませんね。

 

[鶴薗賢吾]

関連リンク:Cocoaはやっぱり!
カテゴリ:Cocoa, 鶴薗賢吾のCocoaはやっぱり!出張版


WORLD PC EXPO 2001ではMac OS X Serverの次期バージョン10.1についても公開

2001年9月19日から幕張メッセで開催されるWORLD PC EXPO 2001でのアップルコンピュータの展示内容が公開された。Mac OS X 10.1をなんらかの形で展示することは予想されていたが、Mac OS X Server 10.1についても展示が行われる。イベントホールで開催される「Apple Mac OS X Pavilion」では、サードパーティの製品として、Maya for Mac OS XやOffice 10 for Mac OS Xに関するプレゼンテーションも行われる。
さらに、9月21日(金)10:00〜12:30に開催される講演の「Mac OS Xが拓く、新しいDTPワークフロー」では、アップルコンピュータからプロダクトマーケティング課長の櫻場浩氏と、クリエイティブマーケット課長の永坂良太氏によって、Mac OS Xによる日本語DTP環境の進化などの話が行われる予定だ。こちらが講演の後半になっており、前半はすでにアナウンスがされているように、インクナブラ代表の上高地仁氏による「Mac OS XでDTPはどう変わる?」が開催される。セッションの聴講は事前登録の場合は10,000円、当日の場合は12,000円となる。

関連リンク:Apple Mac OS X Pavilion
カテゴリ:イベント, Mac OS X Server


WebGainがVisualCafe 4.5やスイート製品のWebGain Studio 4.5などを発表

ウェブゲインジャパンは、2001年9月13日に記者会見を開き、開発ツールの新バージョンの発表を行った。WebGain関連製品は、Macintoshはプラットフォームから完全にはずれてしまう製品であるが、WebObjectsと競合する製品である。WebObjectsの開発環境と競合する製品群の発表が行われた。
同社の代表取締役である湯本敏久氏によって話が進められた(以下は同氏によるプレゼンテーションの要約である)。まず、WebGain社のこれまでの流れが説明された。BEA Systemsとベンチャーキャピタルによる出資を元に設立され、まだ2年は経ていない。まず、Symantec社が開発していたVisualCafeを取得してフラグシップ製品とし、Tendri、Object People、Metamataなどの会社を獲得して製品系列を強化してきた。業務システムはいつの時代も必要があるが、Webによって環境が変わった。Webシステムは複雑化しているが、標準化技術の利用が必要とされその傾向が強まっていると、インターネット開発の実情を説明した。一方、開発能力の向上が要求され、伝統的な方法論では追い付かず、開発者不足にもつながるという問題点があるとした。こうした状況を打開する製品を提供したい。アプリケーションサーバによって、トランザクションやデータベース処理などの機能が提供され、システムのインフラ部分の投下労力は軽減され、アプリケーション開発に専念できるようになる。そうした開発のためのトータルなソリューションをウェブゲインが提供するとした。
まずJava開発ツールのVisualCafeの新バージョンとして、VisualCafe Expert 4.5とVisualCafe Enterprise 4.5を発表する。そして、開発スイートについてもバージョンアップして、WebGain Studio Standard 4.5、Professional 4.5としてリリースする。WebGain Studioに含まれるStructureBuilderが4.5、Quality Analyzer 2.1とアップデートし、いずれも本日より販売を開始する。WebGain Studio 4.5は、VisualCafe Enterprise Edition 4.5に加え、Dreamwerver UltraDev 4.0が付属しJSP Extensionsにより統合的に使えるようになる。また、BEA WebLogic Server 6.0のシングルユーザ版、StructureBuilder 4.5、Quarity Analyzer 2.1、TopLink 3.5、Turbo XMLが含まれる。
Java開発ツールのVisualCafeの4.5の強化はJSPのデバッグ機能強化と、Servlet 2.2サポートなどとなっている。UMLデザインツールであるStructureBuilder 4.5-Jは、Javaプログラムのプロトタイピングツールとして利用でき、設計内容のプログラム生成や逆の処理を行う。VisualCafeとの統合がされており、JavaDocの生成もできる。新バージョンではXMIによるダイアログのインポートやアクティビティ図やステートチャートに対応している。Studio 4.5に新規に追加されたQuality Analyzer 2.1はJavaコードのチェッカーであり、静的および動的な解析ができる。TopLink 3.5はバージョンアップではない。GUIの日本語化はされていないがデータについては問題なく日本語が使える。データベースをオブジェクト化するもので、EJBにも対応しており、BMPとCMPの両方をサポートしている。
対応するアプリケーションサーバーとしては、BEA WebLogic Server、iPlanet Application Server、HP BlueStone、IBM WebSphere Application Serverとなってる。WebLogicとの連係はVisualCafeからコントロールなどとなっている。WebShpereについてはTopLinkでの利用が中心となる。
ターゲットはエンタープライズ市場であり、販売代理店経由の販売やダイレクトセールスでの販売も行う。また、トータルソリューションとして大きなプロジェクトに対しての売り込みに力を入れる。また、試用版についても提供を行う。なお、StructureBuilderの単体販売は今年の秋くらいに計画がある。
VisualCafeは、Windows 98/NT(SP3)/2000(SP1)、WebGain StudioはWindows NT(SP5)/2000(SP1)が動作環境となっている。VisualCafeは3つのレベルがあるが、WebLogicとの連動やJSPのデバッグなどは最上位のEnterprise Edition(\468,000)でのサポートとなる。WebGain Studio Standard 4.5Jは\780,000、Professionalは\1,410,000となるが、データベースのマッピング機能など一部の機能はStandard版には含まれていない。

関連リンク:ウェブゲインジャパン
カテゴリ:Windows


Cocoa-Javaのアプリケーションでアウトラインのコンポーネントを使うサンプル

サンプルコードとして公開されたJOutlineViewは、Cocoa-Javaのアプリケーションで、NSOutlineViewのコンポーネントの使い方を示したシンプルなアプリケーションだ。アプリケーションを実行すると、起動ディクスのルートからのディレクトリ構成やファイルを、アウトライン形式で表示する。ポイントは次の通りだ。まず、Interface Builderの文書でウインドウが定義されており、そこにNSOutlineViewのコンポーネントが配置されている。そのコンポーネントをダブルクリックすると、コンポーネントのDelegateとDataSourceの2つのアウトレットから、MyDataSourceというクラスに結合されている。MyDataSouceはNSObjectを基底として定義されたクラスであるが、いずれにしても、そのクラスではいくつかのメソッドをインプリメントしなければならない。どんなメソッドがインプリメントされているのかをProject Builderで確認すればよいだろう。ソースにはもう1つMyItem.javaがあるが、こちらは、アウトラインに表示する項目を管理するクラスで、DataSource.javaのプログラムから利用している。つまり、ウインドウに配置したNSOutlineViewを使うためには、アウトラインコンポーネントに表示する内容を取得するためのクラスを作っておき、DataSourceのアウトプットと接続しておく。さらに、諸動作をサポートするためのクラスを作っておいてDelegateのアウトプットと接続しておく。これらの追加機能を与えるクラスはもちろんプログラマがかかないといけないのだが、このサンプルでは1つのクラスにまとめられている。

関連リンク:Cocoa: JOutlineView
カテゴリ:アップルからの開発資料, ユーザインタフェース, Java, Cocoa


WebObjectsでXMLファイルとデータベースの間での読み書きを行うサンプル

サンプルコードに公開されたXML_Transportは、WebObjects 5でのXMLの利用方法を示すサンプルだ。XMLファイルで提供された元データを、データベースに書き込む、つまりEnterprise Objectとして利用するという側面が1つ、そしてデータベースの内容をXMLファイルに書き出すというのがもう1つの主要な機能だ。いずれも、Web ComponentsにあるMainページのソースなどを参照すればよいだろう。XMLで記述したマッピングファイルを利用して、XMLデータのノードとフィールドを対応付けている点もポイントになるだろう。利用には、いったんOpenBaseSQLに決められた名前のデータベースを定義し、EOModelerでSQLステートメントを実行して必要なテーブルなどを作成した上で行う。基本的な動作であるため、たとえばXMLファイルの書き出しは/tmpフォルダに対して決められた名前のファイルとなっている。ReadMe.txtは必ず参照して動作を確認してから、実際に試してみよう。

関連リンク:WebObjects: XML_Transport
カテゴリ:アップルからの開発資料, WebObjects, XML


WebObjects 5のProjectBuilderWOでWebObjects Applicationのプロジェクトを作成

Technical Q&Aで、Mac OS XでのWebObjects開発において、ProjectBuilderWOを使った場合のプロジェクトのタイプ選択についての回答が掲載された。通常はProjec Builderを使用するが、従来のWebObjectsで使われていたProjectBuilderWOも付属している。WebObjects 5をインストールしてProjectBuilderWOを使った場合、プロジェクトを新規に作成するときに、WebObjects ApplicationやWebObjects Frameworkが選択肢に出てこない。どうやら、これらのテンプレートが抜け落ちていたようで、この文書に、WebObjects Applicationなどのテンプレートを追加するインストーラのpkgファイルがダウンロードできるようになっている。

関連リンク:QA1072:How do I use a PBWO project type under Mac OS X?
カテゴリ:Technical Q&A, WebObjects