MOSA Multi-OS Software Artists

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

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

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

2006-08-22

目次

  • MOSA理事コラム          第5回   田中 太郎
  • 「Wonderful Server Life」      第15回  田畑 英和
  • 藤本裕之のプログラミング夜話 #97
  • 高橋真人の「プログラミング指南」  第95回
  • ニュース・解説                小池 邦人

MOSA理事コラム   第5回 「Core Audio」
                 田中 太郎 有限会社ソノランブルー

MOSA会員の皆様、こんにちは。ちょうどこの原稿を書いている時にWWDCが開催されておりましたが、今年は残念ながら参加できませんでした。基調講演をネットで見る限りでは、まだ次のOSで搭載される新機能が見えてきませんでしたが、CD-ROMが届くのを待っていることにします。

今回は、あまり皆さんが取り上げなかったCore Audioについてちょっと書こうと思います。(ひょっとして興味がないのか? 心配ですが…)
旧世代のMacOSでは、Sound Managerが、オーディオ回りの役割を担当していました。しかし、サラウンドスピーカーや高いサンプリングレートやビットレートが世の中で使われるようになってから、Sound Managerでは限界にきていました。それが、MacOS XになってからはCore Audioが登場し、より高性能で拡張性が高くなっています。アップル社がプロアプリケーション用にオーディオのソフトを販売するために、開発会社を買収し、そのエンジニアたちによって、Core Audioが開発されていった歴史もあります。
もちろんそのア−キテクチャーは、優れているのですが、とっつきづらい点もあります。アップル社から提供されているサンプルが、シンプルでないため、量はあるのに、理解しにくいです。Core AudioのAPIはC言語のAPIなので、Carbonからも、Cocoaからも利用できます。しかしサンプルコードの多くは、何故か、C++で書かれています。クぅっー

では、まずはじめに、単純にオーディオのファイルを再生してみたいと思います。オーディオファイルのURL(CFURLRef, もしCocoaの場合はNSURL*をキャスト)を取得した所から始めます。それをFSRef形式に変換します。

   FSRef                fileRef;
   CFURLGetFSRef((CFURLRef)[self fileURL], &fileRef);

MacOS X 10.4から、ExtendedAudioFileが導入されました。こちらの方がより簡単に扱えますので、こちらを使います。取得したFSRefを使って、オーディオファイルを開き、それへの参照(ExtAudioFileRef)を取得します。

  OSStatus             err;
   ExtAudioFileRef      _audioFileRef;

   err = ExtAudioFileOpen(&fileRef, &_audioFileRef);


次は、実際に音が鳴るスピーカー(出力)を取得します。デフォルトの出力を探すことにします。Core Audioでは、出力の部分、オーディオを混ぜ合わせる部分、サンプリングレート等を変更する部分、フィルターをかける部分などのそれぞれのパーツが単独で分かれており、Audio Unitと呼ばれる単位になっています。実際にはQuickTimeで使われている、Componentです。

   AudioUnit       _outputUnit;
   _outputUnit = OpenDefaultComponent(kAudioUnitType_Output,
                         kAudioUnitSubType_DefaultOutput);

タイプが出力のAudio Unitのタイプで、サブタイプをデフォルトの出力を指定してAudio Unitを開きます。開いたAudio Unitを初期化します。

  AudioUnitInitialize(_outputUnit);

音は実際に出力のAudio Unit(つまりスピーカー)から出てくる訳ですが、鳴らしたい音を出力のAudio Unitに渡して(入力)してあげなくてはなりません。どういったフォーマットの入力をすればいいのか、出力のAudio Unitに、「あなたはどういった形式を渡せば、音を鳴らしてくれるの?」と問い合わせます。

   UInt32           propertySize;
   AudioStreamBasicDescription  desc;

   propertySize = sizeof(AudioStreamBasicDescription);
   err = AudioUnitGetProperty(_outputUnit,
             kAudioUnitProperty_StreamFormat, kAudioUnitScope_Input,
             0, &desc, &propertySize);


次は、オーディオファイルの読み込み側に、「お客さまはこういった形式の音を欲しがっているので、この形式変換して読み取りたまえ」ということを、オーディオファイル側に伝えます。

  err = ExtAudioFileSetProperty(_audioFileRef,
             kExtAudioFileProperty_ClientDataFormat,
             sizeof(AudioStreamBasicDescription), &desc);

音を鳴らす処理を、普通に考えると、最初にファイルからデータを読み込んでそれをスピーカーに渡していくと思いますが、Core Audioは、逆です。スピーカーに「さあ音を鳴らせ」と伝えると、スピーカーの方から逆に「このデータを入力してくれ」と要求してきます。「エサをくれ」といっているスピーカーに対して、ファイルからデータを読み込んで渡すコールバック関数を用意します。

OSStatus renderCallback(void *inRefCon,
             AudioUnitRenderActionFlags *ioActionFlags,
             const AudioTimeStamp *inTimeStamp, UInt32 inBusNumber,
             UInt32 inNumberFrames, AudioBufferList *ioData)
{
   OSStatus            result = noErr;
   MyDocument          *document = (MyDocument*)inRefCon;
   UInt32              numberFrames = inNumberFrames;

   result = ExtAudioFileRead([document audioFileRef],
                       &numberFrames, ioData);
   return result;
}

これで準備が整いましたので、出力のAudio Unitに対して、再生を行うように指示を出します。

 AudioOutputUnitStart(_outputUnit);

iTunesのライブラリの中のファイルを選択すると、きっと音楽の再生がされると思います。ここからは、Audio Unitを葉っぱと例えると、枝となるAUGraphを使って、それぞれを接続していくことを行ってみます。枝と枝の間に、フィルターのAudio Unitを入れたりしてって、遊ぶと面白いと思います。

資料:アップルのReference Libraryから
- Core Audio Overview
- Core Audio (これはReferenceです)


ハードディスクのDeveloperフォルダの中のExamplesの中に、CoreAudioというフォルダがあり、男らしいサンプルが多数収められております。

■執筆者プロフィール
田中太郎
たなか たろう

 早稲田大学理工学部卒業の後、アップルコンピュータ株式会社にてデベロッパサポート業務。退社後、有限会社ソノランブルーを設立し、Macintoshソフトウェアの開発を行う。社員および弟子を募集中

「Wonderful Server Life」  第15回  田畑 英和

  〜Mac OS X Server v10.4.7、Xserve、Leopard Server〜

 今年の1月にiMacから始まったハードウェアのIntelへの移行も、WWDCにて発表になったMac ProおよびXserveでついに最終章へと突入しました。Mac Proはすでに出荷が始まっていますが、Xeonを搭載したXserveは10月からの発売開始が予定されています。
 すべてのモデルがIntelに移行したことにともない、Mac OS X ServerもようやくUniversal対応したパッケージが発売になりました。今回はIntel対応したMac OS X ServerとXserveおよび、すでにWeb上でも情報が公開され始めているLeopard Serverについてレポートします。

□Mac OS X Server v10.4.7
 Mac OS X ServerがようやくUniversal対応しました。これまではサーバを運用するためのハイエンドのデスクトップおよびサーバ機がまだIntelに移行していなかったわけですが、ハードウェアも出揃いつつあり、OSとハードウェアの両方がIntel対応することになります。
 Universal対応版のバージョン番号は、これまでリリースされていたPPC用の最新版と同じv10.4.7になります。バージョン番号が同じことから特に機能的な変更はないものと思われますが、システム条件にいくつかの変更があります。
 まずメモリが256MBから512MB、ハードディスクが4GBから10GBにそれぞれ変更されています。CPUにはIntelが追加されたわけですが、逆にPowerPC G3がシステム条件からは外れました。

・Mac OS X Server v10.4.7(Unlimitedクライアント)
http://store.apple.com/0120-APPLE-1/WebObjects/japanstore?productLearnMore=MA612J%2FA

 サーバの管理ツールもv10.4.7に対応したバージョンがリリースされており、ソフトウェア・アップデート経由でのアップデートが可能です。

・サーバ管理ツール(v10.4.7)
http://www.apple.com/jp/ftp-info/reference/serveradmintools1047.html

□Xserve
 Intel対応したXserveですが、デュアルコアのXeonが2基(つまりクアッドコア)搭載されています。筐体はこれまでどおりの1Uですが、奥行きが約5cm長くなっています。

・Xserveのサイズ
Xserve G5 高さ:4.4cm 幅:44.7cm 奥行き:71.1cm
Xserve(Xeon) 高さ:4.4cm 幅:44.7cm 奥行き:76.2cm

 ほかのスペックをこれまでのXserve G5と比べてみますと、Xserve G5ではオプションだったグラフィックカードが標準で内蔵されるようになりました。グラフィックカードのために拡張スロットは使用していないため、グラフィックカードを内蔵しつつ、2基の空きスロットが使用可能です。
 ディスクストレージは7,200rpmのSATAもしくは15,000rpmのSASドライブのどちらかを選択でき、750GBのディスク(SATA)を3台搭載すれば最大2.25TBのストレージを搭載することができます。電源ユニット(650W)が2重化され、ホットスワップに対応しているため、システムを稼働させながら電源ユニットの交換ができるようになりました。2基目の電源ユニットはオプションになります。
 また、管理機能も強化されリモートから電源のコントロールができるようになっています。OSはこれまでどおりMac OS X Serverが付属します。
 出荷開始は10月が予定されていますが、Xserve G5はすでに在庫が少なくなってきているようですので、Xserveの導入を検討していた方は導入を再検討する必要があります。基本的にはXeonベースのXserveのほうがパフォーマンスは優れているわけですが、Xserveを収納するラックの仕様や、サーバ上で使用するソフトウェアのIntel対応について事前に確認しておく必要があります。

http://www.apple.com/jp/xserve/

□Leopard Server

 Mac OS X Serverの次期バージョンであるLeopard Serverは、様々な機能強化が行われております。詳細については製品が実際にリリースされてから取り上げることになるでしょうが、今回は主な新機能について紹介しておきましょう。
 まず管理ツールですが、新しいサーバ用のシステム環境設定ツールが導入されます。この新しい環境設定ツールではユーザやグループ、サービスの設定ができるようになる予定です。またシステムのステータスを監視するDashboardのwidgetも導入されます。
 新機能としてはiCalサーバが搭載され、個人やグループでのカレンダーの共有が可能になります。iCalサーバはカレンダーの標準プロトコルCalDAVを採用しており、ソースコード(主にpythonで実装されています)がDarwin Calendar Serverとして公開されます。さらに、専用の構文を覚えなくても手軽に編集が可能なWikiサーバも搭載され、チームでの情報共有が手軽に行えるようになっています。
 このほかにも、ネットワークボリュームの検索に対応したSpotlightサーバや、Podcastの制作ワークフローが自動化されたPodcast Producer、認証サービスを提供するRADIUSのサポートなど様々な新機能が搭載されています。
 最近人気のあるRuby on Railsや、Ver2系列のApache(これまでも搭載されてはいましたがデフォルトはVer1.3系列でした)も搭載されることになっています。リリースが待ち遠しいですね。

・Leopard Server
http://www.apple.com/jp/server/macosx/leopard/
・Darwin Calendar Server
http://trac.macosforge.org/projects/collaboration
・MAC OS FORGE
http://www.macosforge.org/

つづく

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

 残暑御見舞申上候。いやはやなんとも暑いですな。さて、WWDCのため1週間余計に間があいたわけだけど復習なしで続けていいですかね? ダメか。えっと前回はサンプルプログラムが描画する2つの矩形のうちの片方をドラッグ可能にして、マウスカーソルのシェイプを変える領域をどうやって更新するか、というのを見たわけである(え、と思うかもしれないけどそうなんだよ)。
 で、今回は、……これ、あんまり本筋とは関係ないようなんだけど、この「はいはい、この線から入ったらマウスカーソルの形を変えるからね四角形」(面倒なので以下『カーソル変形領域』と呼ぶ)2つがオーバーラップしたときの話を書いてみたい。前回インプリメントしたように、カーソル変形領域はNSViewのメソッド、resetCursorRects をオーバーライドして以下のように設定される。

-(void)resetCursorRects {
     [self addCursorRect:openHandRect
                     cursor:[NSCursor openHandCursor]];
     [self addCursorRect:pointingHandRect
                     cursor:[NSCursor pointingHandCursor]];
}


 この2つの矩形、openHandRect と pointingHandRect の間にはどうも優先順位というのがないみたいなのである。つまり(つうかホントはプログラム書いて試してみてもらいたいんだけど)、このメソッドでpointingHandRectの方が後から設定されているからといって、オーバーラップしたときにこっちのカーソル変更が優先されるわけぢゃないのだ。シアンで塗られたpointingHandRect の上でポインタをうろうろさせているとき、隠れて見えない openHandRect の上にくると突然カーソルが変わってしまう。これはちょっとまずい、よね。

これはやっぱりなんとかしたい。いや、これをなんとかしたいと思わなかったらプログラマぢゃない。もしそういうヒトがこれを読んでたら悪いこたぁ言わないから今のうちに職業替えしなさい。世の中にはプログラマより楽で実入りも良さそうな職業が……もうなんつうか悲しいくらいたくさんあるんだから。

悲しい話は置いておいて、まず思いつくのは resetCursorRects で2つの矩形が重なっているかどうか判定し、重なっていれば下になる方(この場合はopenHandRect に決まっているんだけど)を分割して見えている部分だけをcursorRect として設定することだろ。それなら絶対安全剃刀的に動作するだろうけど、その矩形の分割つうのになんつうか気が進まない。いや、このサンプルは2つの矩形が同じ大きさだからいいが、例えば pointingHandRect が 完全に openHandRect の上に乗っかってしまうとすると、この矩形を4つに分割しなければならないし、その場合分けも面倒である。なにかもっと楽する方法はないか。

ここで一度原点に立ち戻り、なぜ2つの矩形のカーソル変更に優先順位がないように見えるのか、を考えてみよう。そんなこと言ったって矩形は2つ、どっちかを先どっちかを後で判定しているに違いないのにこれはいったいどういうことか。種明かしをしちゃうとこの判定は mouseEnterd: とmouseExited: に対して行われているからで、2つの矩形がずれている限り、片方に既にEnterしたものは一度 Exit するまで二度と同じものに Enterできないのにもう片方には Enterできる、というリクツが働いているのである(ここ、文章だと分かりにくいけど絵に描いてやってみるとすぐ解るよ、ホントにプログラムを書くのが一番だけど……しつこいか)。で、結論、ならば先にオーバーラップ部分への Enter を検出して上にある矩形のカーソルにしてしまえばいい。すなわち:

-(void)resetCursorRects {
     if(NSIntersectsRect(openHandRect, pointingHandRect)){
          [self addCursorRect:
               NSIntersectionRect(openHandRect,pointingHandRect)
                          cursor:[NSCursor pointingHandCursor]];
     }
     [self addCursorRect:openHandRect
                     cursor:[NSCursor openHandCursor]];
     [self addCursorRect:pointingHandRect
                     cursor:[NSCursor pointingHandCursor]];
}


と、これでこの問題は解決である。次回「ドラッグ中だけカーソルを変えるには」つうのをやってこの話題を終わりにしたい。そん次は何にしようかしら。

(2006_08_17)

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

プログラマのためのオブジェクト指向再入門(3)

〜オブジェクト<2>〜

 こんにちは、高橋真人です。
 前回のお話をまとめますと、入門者の視点から見た場合には必ずしも「オブジェクト=モノ」という見方はふさわしいとは限らない、ということになります。では、どんなアプローチが入門者にふさわしいのか。その辺から今回は考えてみたいと思います。
 いきなりですが以下のコードをごらんください。

int a = 3;
int b = 5;

a += b;
printf("%d", a);

 Cの入門段階の人でも容易に理解できるコードだと思います。老婆心ながら付け加えますと、a += bはa = a + bとも書くことができます。ただ、前者の方が「aにbを加える」ということをよりストレートに表現しています。
 この「aにbを加える」は、「aとbを加える」でないことに注意してください。aとbを加えただけでは、a自体は(もちろんbも)変化しませんが、「aにbを加える」と、aの値はbの値分だけ増加することになります。

 では、今度は以下のコードを見てください。

IntType a(3);
IntType a(5);

a.add(b);
a.print();


 今度は、Cのある程度の経験者でも「げ、何なのだ、これは?」と引きかけたかもしれません(笑)。しかし心配はご無用。これは私が適当にでっち上げた架空の言語です。もっともC++を使えば、さらに数行加えることでこのまま動作させることは可能ですが。(もちろん、理解は不要です)

それはさておき、こうやって並べてあると、下の架空の言語が何を表しているかは何となく理解できませんか?

 IntTypeというタイプ(型)の変数を宣言(定義)する。初期値は整数の3。
 ちなみに、

IntType a = 3;

という書き方をしてもよかったのですが、初期化を強調したいために、初期化構文をでっちあげました。(あくまで架空の言語ですから・笑)

 で、同様にIntType型の変数bを初期値5で定義します。
 次にaにb(の値)を加算します。

 ここで、まだ余りCに通じていない人のために解説。
 すぐ上の文章で、bの後に「の値」とカッコ書きしたわけですが、これは最初のCの例でも同じことです。ともすれば、「aにbを加える」というような表現をしてしまいがちです(実際、私も上でそのように書いてます)が、厳密に言えば「変数同士を加え」たり「変数に変数を加え」たりすることはできません。
 aとbを加える場合、aから格納されている「値」が取り出され、bから取り出された「値」と加算されて、それが結果として「評価」されます。(評価された結果は、変数で受けたり関数に渡したりしなければその場で捨てられます)
 また、aにbを加える場合も、やはりbから取り出された値がaに格納してある「値」と加算されて、aの中に「新たな値」として納められるのです。

以上は、Cなどのプログラミング言語をきちんとマスターしている人には当然の話ですから、日常的には「aにbを加える」でも何の問題もなく話は通じます。ただ、ちゃんと「実は変数そのものではなく、値の計算をしているのだ」ということも認識できていることは大切です。この辺の認識が曖昧だと、さらに進んだ学習をする際に躓きを招く恐れがあります。
 たとえば、Cを学習していてポインタがなかなか分からない人の場合、変数とその中身の区分けがきちんとできていないのが混乱の原因であることも多いようです。

 話を戻しましょう。
 最後の行ですが、aに対して、格納する値の表示をさせています。
 さて、お分かりとは思いますが、最初のCのコードと2番目の架空言語のコードでは、やっていることは同じです。何が違うのかと言えば、それは架空言語の例はオブジェクト指向の書き方をしてあるということです。
 Cの例では、+=という演算子も、printf()という関数も、変数から取り出した「値に対して」操作をしています。
 それに対してオブジェクト指向では、変数(オブジェクト)に対して「操作を依頼するような」書き方になっているのです。
 aの直後にドットでつながっているadd()とprint()はそれぞれIntTypeオブジェクトのメソッドです。呼び方はメソッドだろうが関数だろうが何でもいいですが、IntTypeとして定義されたオブジェクトが持つ機能であるということを理解してください。
 ちなみに、今のところ、オブジェクトと型と変数という言葉が混ぜこぜに使われていますが、そのうち整理をしますので、今は似たようなものだと思っていればOKです。

 どうでしょう? ここまでは理解できましたか?
 もし、ご質問があればモサ伝編集部(mosaden-toukou@mosa.gr.jp)まで。

ニュース・解説

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

● Carbon ドキュメント & サンプル & SDK ナビゲーション(2006/08/18)

【開発環境】

WWDC2006も無事終了しました。筆者的には、予想通り64bit版のCocoaとCarbonの発表があり大変満足しています。ただし、全体としては「まだ何か隠されているのか?」という感じが拭えず、ちょっと「お預け」をくったようなWWDCではありました(笑)。まだ詳しい内容は書けないのですが、64bit版アプリケーションを作成する上での注意点についてもだいたい予想範囲内でした。ただ一点だけ「え〜、そんなことをしても大丈夫なの?」という驚きがありましたが、その件については可能な時期が来たら、API徒然草の方で詳しく解説したいと思います。

Mac OS X 10.5(Leoperd)では、今までの32bitアプリケーションも問題なく起動できるわけですから、大容量のメモリを消費するとか、doubleの浮動小数点演算を頻繁に実行するとかの処理が無い限り、一般的なアプリケーションが64bit化を考慮する必要はほとんどないと思います。それよりも、Mac OS X 10.4(Tiger)から試験的に実装されている(と言うか、間に合わなかった?)レゾリューション・インディペンデント・ユーザインターフェースに対応する方が重要だろうと感じています。とにかく、また仕事が増えたことだけは間違いないようですね…。

兎にも角にも、参加された皆さん大変ご苦労様でした!。また来年、会場でお会いいたしましょう!

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

前回から8月18日の期間中、Apple社のGuidesサイトには新規ドキュメントが多数登録されましたが、Referenceサイトへの新規登録はひとつだけでした。WWDCで発表されたMac Proのハードウェア仕様ドキュメントが登録された関係上、関連する「Developer Note」がすべて更新されています。それ以外ですと、Mac OS X Server関連のドキュメントが多数更新されています。こちらも、WWDCでインテル版Mac OS X Serverが発表された関係でしょう。加えて、Xcode 2.4についてのリリースノートやデベロッパ向け読み物が登録されています。

「QuickTime 7.1 Update Guide」(PDFあり)(初版)
「Mac Pro Developer Note」(初版)
「AirPort Developer Note」
「Audio Developer Note」
「Bluetooth Developer Note」
「Ethernet Developer Note」
「FireWire Developer Note」
「Hardware Developer Note Terms and Abbreviation」
「CI Developer Note」
「RAM Expansion Developer Note」
「Universal Serial Bus Developer Note」
「Video Developer Note」
「Apple Remote Desktop Focus on Task Server」(PDFあり)(初版)
「Audio Unit Programming Guide」(PDFあり)(初版)
「Core Audio Overview」(PDFあり)(初版)
「Mac OS X Security Configuration Guide」(PDFあり)(初版)
「Mac OS X Server Collaboration Services Administration」(PDFあり)
「Mac OS X Server Getting Started」(PDFあり)
「Mac OS X Server Getting Started Supplement」(PDFあり)(初版)
「Mac OS X Server Security Configuration Guide」(PDFあり)(初版)
「Mac OS X Server Upgrading and Migrating to Version 10.4 or Later」(PDFあり)
「Quartz Composer Web Kit Plug-in Programming Guide」(PDFあり)(初版)
「Smart Card Setup Guide」(PDFあり)(初版)
「Xsan Administrator’s Guide for Xsan 1.4」(PDFあり)
「Xsan Migration Guide for Xsan 1.4」(PDFあり)

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

「QuickTime 7.1 Update Reference」(PDFあり)(初版)

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

リリースノート

「Xcode 2.4 Release Notes」
「Xcode 2.3 Release Notes」
「Core Audio Release Notes」

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

「Bare Bones Uses Platform Innovation for Yojimbo」(読み物)

http://developer.apple.com/business/macmarket/yojimbo.html

「Automating Development Tasks with Automator and Xcode」(読み物)

http://developer.apple.com/tools/xcode/automatorforxcode.html

前回から8月18日の期間中、新規テクニカルノートはひとつも登録されませんでしたが、新規テクニカルQ&Aの方はひとつだけ登録されました。それにしても、CarbonにはあるのにCocoaにはないユーザインターフェースオブジェクトがあったんですね(笑)。

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

QA1485「How to create a Cocoa Disclosure Button Control」(初版)

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

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

前回から8月18日の期間中、Apple社のSample Codeサイトには、バラエティーにとんだサンプルソースコードが16も登録されました。また、WWDCに参加された方は、Apple社のWWDC2006サイトのセッションのページから、そのセッションに関連しているドキュメントやサンプルソースコードをダウンロードできるようになっています。そちらも早めに参照しておいてください(サイトが無くなる前に…)。

https://developer.apple.com/wwdc2006/

「SayIt」(Web Kit関連)(初版)
「CarbonCocoa_PictureCursor」(Carbon&NSCursor関連)(初版)
「BlockAnimation」(Java関連)(初版)
「Dicey」(Cocoa&Gamet関連)(初版)
「OpenGL based game template」(Game&OpenGL関連)(初版)
「Resizer」(Widget関連)(初版)
「Birthdays」(Widget関連)(初版)
「CarbonQuartzComposer_TV」(QuartzComposer関連)(初版)
「HelloStudio」(AppleScript Studio関連)(初版)
「Processes」(AppleScript Studio関連)(初版)
「TextEditPlus」(Cocoa&TextEdit関連)(初版)
「CxxNewDelete」(C++関連)(初版)
「Carbon Porting Tutorial」(Carbon関連)(初版)
「CarbonCocoaCoreImageTab」(CoreImage関連)(初版)
「AttachAScrip」(AppleScript関連)(初版)
「ComplexPlayThru」(CoreAudio関連)

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

【デベロップメント SDK】

前回から8月18日の期間中、Apple社のSDKサイトには新しいSDKが2つ登録されました。
「QuickTime 7.1.2 SDK」と、同じくそのWindows用のSDKです。またToolsサイトには「Xcode 2.4」と「CHUD 4.4.2」が登録されています。Xcode 2.4では、最新のMac Proに搭載されているXeonプロセッサが64bit版であることから、PowerMac G5と同様にインテル版64bitアプリケーションを作成できるようになりました。ただし、Mac OS X 10.4.xではCocoaやCarbonが64bit対応ではありませんので、ユーザインターフェースを分離した形での開発となります。Mac OS X 10.5の登場が待ち遠しいですね!

「Xcode 2.4」
「Computer Hardware Understanding Development (CHUD) 4.4.2」

http://developer.apple.com/tools/download/

「QuickTime 7.1.2 SDK」
「QuickTime 7.1 SDK for Windows」

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

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

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