鶴薗さんの連載原稿はCocoaのサンプルプログラムとして公開されているムービープレイヤを解析したものです。ポイントがよく理解できると思いますので、Cocoa初心者の人はもちろん、腕に自信がある人にも読んでいただきたい原稿ですね。いただいが画像が比較的大きいため、Web上では560ドット幅をこえるものは、560ドットにしました。そうした画像は、ブルーの枠で囲われますが、それをクリックすると別のウインドウが開いて、原寸で画像を表示します。枠のない画像はそのままのものです。Mac OS XのIEだと縮小しても十分判読できるのですが、文字をしっかり見たい場合は原寸で御覧いただいくのがいいでしょう。なお、メールにある画像ファイルのリンクをクリックすると、原寸で表示されるはずです。原稿は5回分ありますが、MDOnlineのサイトにはすべて掲載されています。今日は1、2回目をお届けしますが、順次来週に渡って配信することにします。
来週から発行間隔は戻します…というか、その意味では今日から戻っています。次回、21日火曜日から毎日発行の予定です。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┥Information
Macintoshと対象周辺機器の購入で1万円キャッシュバック。複数台ならさらに加算
デジタルライフキャンペーン
Apple StoreではApple製品だけでなくサードパーティ製品も購入可能に
アップルストア
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
さて、BeがPalmに買収されることになりましたが、BeOSという製品よりも技術や人材が欲しかったのでしょう。PDA自体の高度化は避けられないでしょうけど、どういう進化をするのかということを、Palmは「パソコン型」と見ているというような気がします。つまり、PDAとしては、単機能的な「専用機型」とも言える方向性よりも、パソコンのような汎用性を持たせるつもりなのではないでしょうか。というか、そういう方向性があっても慌てないようにするという意味合いもあるでしょう。市場次第ですね。「マルチメディア機能の強化」という言い方は投資家に分かりやすいようにということじゃないかと思います。Palm OSをモダンにするには、結局Mac OSをMac OS Xにしたほどの大変化が必要になるわけで、それをあらかじめ見越してのBeじゃないでしょうか。その意味ではアプライアンスへOSへ向かっていたBeは、その稼動環境は数年もするとPDAのハードウエアと重なりが出てくるのは容易に想像できます。もちろん、いきなりOSを変えるのではなく、じわじわとコンポーネントが置き換わるようになるでしょう。最初にBeの技術が製品に反映されるとしたら、ストリーミングビデオのプレイヤとかということなんだと思います。ま、だからマルチメディアなんでしょうね。
(新居雅行 msyk@mdonline.jp)
■ 今回のテーマ
第1回目である前回は、Cocoaの概要についてざっと説明いたしました。今回からは、実践で役に立つCocoaのワンポイントレッスン的なものを行っていきたいと思っています。「 最初の一歩から 」的な入門記事も考えたのですが、こういったものはすでにいくつかありますし、避けることにしました。
そこで、いくつかのCocoaアプリケーションを作ったことのある方が、もうちょっと使いこなせるようになりたいという時に、役に立つような内容を扱っていきたいと思います。Cocoaプログラミングが全く初めてという方は、第1回の記事の中に書いたリンクを参考に第一歩を踏み出してみてください。
今回は、Appleが配付している「 SimpleCocoaMovie 」というQuickTimeムービープレイヤーのサンプルプログラムを取り上げることにしました。このサンプルコードを読む上で、ポイントになるところをピックアップして解説していきます。全部で5つの記事に分けてお届けします。まずは、以下のURLからダウンロードして解凍しておいてください。
◇SimpleCocoaMovie
http://developer.apple.com/samplecode/Sample_Code/Cocoa/SimpleCocoaMovie.htm
■ このサンプルから学べること
このサンプルを読むことで何が学べるのか、まず、そのポイントを列挙してみました。
関連リンク:Cocoaはやっぱり!
カテゴリ:QuickTime, Cocoa, 鶴薗賢吾のCocoaはやっぱり!出張版
■ プロジェクトのファイル構成
続いて、プロジェクトを構成しているファイルを見ていきます。まず、Project Builderでプロジェクトファイル(SimpleCocoaMovie.pbproj)を開きます。
Classesのところに「MyMovieController.h」と「MyMovieController.m」があります。これは、「MyMovieController」というクラスを定義しているものです。このクラスが今回の主役で、アプリケーションのほとんどの制御を行っています。その下の「QTUtils.h」と「QTUtils.c」は、下請けのユーティリティ関数を持っていて、MyMovieControllerから使われます。
続いて、Resourcesを見ると「MovieFile.mov」というQuickTimeムービーのファイルが入っています。これを読みこんで再生します。「MainMenu.nib」には、ユーザーインターフェイス等の定義がなされています。
■ MainMenu.nibの構成
次に、MainMenu.nibをダブルクリックして、Interface Builderでその中身を見てみましょう。
MainMenu.nibのウィンドウを見ると、ウィンドウのインスタンスが2つあるのが分かります。「Window」がメインの再生用のウィンドウ、「Movie Properties」というのがムービー情報表示用のウィンドウになっています。先程出てきたMyMovieControllerのインスタンスもあります。
では、これらがどういう関係になっているのか、主なアクションの接続を確認してきましょう。メインウィンドウの中にある5つのボタンと音量調整のスライダーのアクションは、全てMyMovieControllerに繋がっています。分かりやすい名前がついていますので、見ていただければ分かると思います。メニューからも直接繋がっています。
次は、主なアウトレットの接続の確認です。こちらも分かりやすい名前になっています。メインのウィンドウだけでなく、情報ウィンドウの方やメニューアイテムにも接続されていることが分かります。これらの図は、ソースを見る時に照らし合わせるとよいと思います。
■ ムービーの読み込みと表示(MyMovieController.m)
それでは、コードの方に入っていきます。このサンプルでは、起動時に自動的にムービーを読みこんでいます。その処理は、MyMovieController.mの「awakeFromNib」メソッドの中に書かれています。
アプリケーションは、起動時にMainMenu.nibを読みこんで、画面にメニューやウィンドウを表示します。そして、MainMenu.nibを読み込み終わったら、MainMenu.nibの中にある全てのインスタンスに向かってawakeFromNibメッセージが送られます。ですので、このメソッドは初期化の処理を書くのに適しているわけです。MyMovieControllerもインスタンスがMainMenu.nibにありますので、起動時にメニューなどと同時に読み込まれて、その後、awakeFromNibメソッドが呼ばれます。
さて、本題のムービーの読み込みと表示ですが、以下の3段階で実現できます。
// ムービーのファイルパスの取得
NSString *filePath = [ [ NSBundle mainBundle ]
pathForResource : @"MovieFile"
ofType : @"mov" ];
// ムービーの場所をURLの形式で取得
NSURL *movieUrl = [ NSURL fileURLWithPath : filePath ];
NSMovie *theMovie = [ [ NSMovie alloc ]
initWithURL : movieUrl
byReference : YES ];
[ movieViewObject setMovie : theMovie ];
関連リンク:Cocoaはやっぱり!
カテゴリ:
eVision社は、画像データの検索ライブラリ「Visual Search SDK for Mac OS X」をリリースしている。Visual Searchは、画像の特徴を抽出するような手法を用いて、ある画像と類似した画像を検索するといったライブラリ機能を提供するものだ。このほどリリースされたVer.2.1では完全にJavaに対応していることから、Mac OS Xでも稼動するし、特定のデータベース環境に依存するということもない。500画像に限定されたSDKバージョンはフリーで入手でき、ライブラリの評価が可能だ。製品添付などのライセンス情報については問い合わせることになっている。なお、Visual Searchを使ったプログラムコンテストも開催されており、1位は$1000、2位は$250の賞金が出る。フリーのSDKを使ってコンテストの参加も可能である。
関連リンク:eVision
カテゴリ:ライブラリ, Java
Mac OS X ServerでのWebサーバ機能には、Webサーバだけでなく、パフォーマンスキャッシュの機能がある。それらの機能でのTCPポート利用についての解説がKnowledge Baseに掲載された。Webサーバは80番ポートを利用するが、パフォーマンスキャッシュは16080番ポートを利用するので、パフォーマンスキャッシュを使う場合には、IPのフィルタリングやファイアウォールの設定で、16080番をふさがないようにしなければならない。Webアクセスは通常は80番ポートを使うが、パフォーマンスキャッシュがアクティブなとき、Webサーバにリクエストされたデータのキャッシュを16080番ポートを利用して行い、そのポートからクライアントに対してデータを送信するという仕組みになっている。そのため、クライアントでは16080番ポートへのアクセスへリダイレクトされる場合が時折見られるということだ。なお、パフォーマンスキャッシュを使わないのなら、Server AdminのWebサービスの設定でオフにすることができる。
関連リンク:Mac OS X Server 10: Web Service Uses Ports 80 and 16080 by Default
カテゴリ:サーバー製品, Mac OS X Server
Mac OS X Serverで公開しているWebサーバに対して適切なアドレスで接続を行っても、403 Forbiddenのエラーが出てくる場合についての対処がKnowledge Baseで公開されている。Server AdminのWebサービスの設定で、サイトごとの設定の「一般」のタブにある「デフォルトの書類」で、複数のファイル名を、単に空白で区切って設定をした場合に、そうした症状になる場合がある。最初はindex.htmlだけがデフォルトの書類になっているが、複数の書類を設定するには「"index.html" "index.htm" "default.htm"」のように、ダブルクォーテーションで囲い、それを空白で区切って指定をする必要がある。
関連リンク:Mac OS X Server 10.0: "403 Forbidden" Message When Attempting Access to a Web Page
カテゴリ:Knowledge Base(旧TIL), サーバー製品, Mac OS X Server
Jiiva Softwareは、メッセージング&キューイングのためのソフトウエア「RapidMQ Beta3」をリリースした。メッセージング&キューイングとは、ソフトウエア間で、ネットワークを経由するなどしてデータのやり取りや連係動作を行う場合に利用されるテクノロジーだ。Windows 2000にはMicrosoft独自のこうした機能が組み込まれている。ソフトウエア間通信をリアルタイムで行うのではなく、キューを経て行うために、たとえばアクセスが切断していれば、接続を待ってメッセージがおくられるなどの制御を行うことができるのが一般的である。RapidMQはBeta2まではMac OS X向けとして開発されていたが、Beta3でLinuxやSolarisにも対応したことから、異機種間でのメッセージングにも対応できるようになった。ドキュメントでは、C言語を利用したAPIの解説が記載されているので、Cocoa(Objective-C)やCarbonのアプリケーションでは組み込みがやりやすいだろう。
関連リンク:RapidMQ
カテゴリ:ライブラリ, ネットワーク
Disc Burnerで作成したISO9660のCD-RをWindowsパソコンで参照すると、ファイル名は11バイトに切り詰められてしまう件について、Knowledge Baseで掲載された。長いファイル名で参照したいのなら、CDEveryWhereやToast 5 Titaniumといった、Jolietフォーマット対応のユーティリティを使うようにとしている。つまり、ISO9660フォーマットでの長いファイル名にはDisc Burnerは対応していないということである。
関連リンク:Disc Burner: Filenames on CD-R Discs Truncated on Windows-Compatible Computers
カテゴリ:Knowledge Base(旧TIL), Windows, メディア制作
Knowledge Baseに、WebObjects 4.5/4.5.1で、LDAPアダプタを利用したサンプルプログラムに対する情報が掲載された。1つは、LDAPアダプタの動作の問題にからんで、サーバからのデータの取り出しを最適化する方法を、サンプルプログラムに組み込む方法が掲載されている。もう1つの文書には、サンプルでのメモリーリークを発生させるバグについて、それを回避するための修正方法である。いずれも、プログラムはObjective-Cで掲載されているものだ。LDAPとのやりとりをWebObjectsに組み込んだシステムで、サンプルを参考にしている場合にはチェックをしておく必要があるだろう。
◇WebObjects 4.5: How to Optimize LDAPAdaptor Attribute Fetching
http://www.info.apple.com/kbnum/n25352
◇WebObjects 4.5: Memory Leak in LDAPAdaptor Example Code
http://www.info.apple.com/kbnum/n25353
カテゴリ:Knowledge Base(旧TIL), WebObjects
QuickSilverタイプのPowerMac G4で、モールドラインが見えているが、動作やあるいは強度の上では問題がないことがKnowledge Baseで公開されている。モールドラインは、ドライブのベイの下の部分やフロントパネルのボタンの横側に見えるとしている。
関連リンク:Power Mac G4 (QuickSilver): Mold Lines Are Normal
カテゴリ:Knowledge Base(旧TIL), Power Mac
Mac OS XでのDSLおよびPPPoEを使った接続に燗するFAQがKnowledge Baseに掲載されている。ブロードバンドインターネット接続での代表的なPPPoE接続についての基本的な情報や、特別なソフトウエアを必要とせずに、Mac OS Xだけの機能で利用できることなどが掲載されている。ただ、内容的には基本的な項目とその返答だけである。
関連リンク:Mac OS X: DSL/PPPoE Frequently Asked Questions (FAQ)
カテゴリ:Knowledge Base(旧TIL), インターネット全般, Mac OS X