Macintosh Developer Online (MDOnline)


2000年12月5日発行号 - PBでビルド



別に新しい話でもないのですが、WindowsマシンにWindows Media Player 7を入れました。なんでもプレイができるというコンセプトは、ちまたのMP3プレイヤソフトなどを駆逐するんじゃないかと思いますが、まあ、そういうことはさておき、あまり話題にはなっていないけど「プレイビュー」の機能ってなかなか面白いと思いました。

figs/photos/wmp7.png

(PNG画像がうまく表示されないときには、プラグインではなく、ブラウザで表示されるように設定を行なって下さい。)

CDやラジオなど音源に関係なく、サウンドを元にこうした幻想的というか、抽象的な画像を表示します。グラフィカルなものから、単なる周波数帯別のレベルメータみたいなもの、火花が散るようなものなどけっこういろいろあります。ビデオジョッキーと言えばそれまでなんですけど…。いずれにしても、音に合わせて、グラフィックスがぐりぐりと変化するわけです。だけど、QuickTime Playerにこの種の機能がないのはなんか、負けているなと思った次第です。

だけど、これを見て思い出したのは、Tangerine Dreamが1983年に日本に来た時のライブです。サウンド系の器材がややデジタル化をし始めたころですが(もっともデジタルの意味は理解してなかったですけど)、ステージのビジュアル効果で、スクリーンの背後にスモークやら影絵的なものやらを使ったのだと思いますが、何かアナログ的なものでビジアルエフェクト的なものを作り出していたことを思い出しました。そこで見た覚えのある映像が、WMP7のプレイビューのビジアルエフェクト機能に良く似ていたと記憶していす。そのときは音楽とうまくマッチしたおもしろいビジアルエフェクトだと思っていたのですが、それが、プラグインによるバリエーションも加味されて、自分の机の上で見られるようになったとも言えるわけですね。

こうして原稿を書くのはPowerBookなので、Windowsマシンは完全にラジオと化していますけど、WebObjectsも入れています。Dynabook SSなんですけど、Windows 2000を入れるのにちょっと苦労しました…。ま、その話は別の機会にでも。


(新居雅行 msyk@mdonline.jp


【SnapXShot制作記】Project Builderでビルドしてみた

Mac OS Xで画面ショットを作成するツールのSnapXShotだが、2000/12/4版をリリースした(ちなみに、番号はあまり意味がないと思うので、リリース日で識別することにしている)。前のバージョンまではCodeWarriorで作っていたが、この版からProject Builderでビルドするようにしてみた。アイコンもドーンとゴージャスに写真そのままを添付した。また、矢印カーソルしかだめだけども、カーソルを画面ショットに含めるようにもしてみた。

CodeWarriorでのデバッグは何とかできるようにはなったけど、Project Builderに興味があるし、あの大きなアイコンを簡単に作成するにはProject Builderの方が良さそうだったということもある。Carbonアプリケーションは2種類のバイナリモデルがあって、CodeWarriorはCFM(Code Fragment Manager)、Project BuilderはMach-Oしか作成できない。小池さんのプログラマー日記にもあったが、Mach-Oの方が起動が早いようだということで、少しでも効率が高い方にしたいというのもある。CFMベースで作っていると、Mac OS 9でも動いてしまうのであるが、Mach-OだとMac OS X専用になるので、重大事ではないけど、好都合かもしれない。ちなみに、CFMベースだと、Mac OS Xのシステム的にはLaunchCFMAppというアプリケーションが動いてその上でCFMとして作ったソフトウエアバイナリが稼動するという仕組みだ。だから、プロセス名は一律に「LaunchCFMApp」になってしまう。一方、Mach-Oは起動したアプリケーションがそのままプロセスとして登場するから、やはりこちらの方が「正統派」という印象も受けてしまう。

Project Builderの詳細な使い方は、別の機会で紹介することにしよう。今回は、Carbon Application (nib Based)というプロジェクトのひな形を利用した。nibというのは、やはりAppleから提供されている開発ツールに含まれるアプリケーションのInterface Builderで作ったデータファイルの拡張子だ。Interface Builderは、GUIをベースにしたユーザインタフェース構築ツールとしての側面と、クラス設計をするツールという機能があるが、Carbonベースだと、おそらく前者の機能だけを使うことになるだろう。プロジェクトのひな形としてこちらを使っておけば、Interface Builderでデザインしたウインドウやダイアログボックスを利用する形式のCarbonアプリケーションを作りやすいと考えた。プロジェクトのひな形に含まれる簡単なプログラムからも、nibファイルに定義したウインドウをあたかもリソースのように取り出して表示するようなものがある。SnapXShotも今後は、きちんと設定ダイアログボックスのようなものを作りって、キーアサインなどを変更できるようにしたいと思っているのだが、ResEditで作るという旧来の方法は、ClassicアプリケーションであるResEditを使うという点でやっぱり避けたい。もっとも、nibベースの部分は未体験ゾーンでもあり、予断を許さないのであるが、とにかくまずはあたって砕けろということで、nibベースを選んでみた。まだ、現状ではダイアログボックスなどを作り込んではいない。

さて、プロジェクトを作って、既存のソースを読み込ませて、コンパイルしてOKではないことは以前にお知らせした通りだ。やっぱり甘くない。だが、良く見ると、Universal Headersで提供されているシステム機能を使うためのヘッダファイルのインクルードでエラーが出ている。Navigation.hとか、軒並みだめなのである。そこで、プロジェクトが作ったソースを見てみると、ヘッダファイルの読み込みは、

#include <Carbon/Carbon.h>

だけしかない。システム関連のヘッダの読み込みはこれだけでいいのである。とにかく楽になったようではある。ここで、インクルード文の形式としては、

#include <フレームワーク名/ヘッダファイル名>

として記述できるようになる。CodeWarriorのようなコンパイラのパスという考え形ではなく、フレームワークと、ヘッダの組み合わせでいいのである。フレームワークは、ソフトウエアのライブラリ的なものだが、ヘッダファイルのような開発時に必要なものも含めてパッケージになっている。/System/Library/Frameworksに、拡張子が.frameworkのフォルダがたくさんあるが、これらがフレームワークなのである。Finderでその中身をいろいろと覗いてみるといいだろう。プロジェクトにはCarbon.frameworkが最初から設定されているが、実はCarbonはその他のいろいろなフレームワークを参照しているため、結果的には自動的に必要なものがProject Builderでの開発時に利用されるようになるようだ。とにかく、Carbonのフレームワークをインクルードしておき、Carbonのヘッダを読み込めば済むということでそれ以上の措置はとりあえずは必要なさそうである。

ヘッダを正常化したが、いくつか重大なエラーが出ている。ちなみに、重大なエラーは赤字、警告はグレーの文字で出る。赤字がでなくなるまでがんばらないといけない。小池さんのプログラマー日記にもあったように、コンパイラの動作がCodeWarriorと違うようで、けっこうエラーを出すのである。ただ、SnapXShotは、サンプルコードのSuper SnapShotのソースを使っているものの、実は大半のソースは使っていない。そこで、エラーが出るところは関数ごとコメントしてしまうという手を使ってとりあえず逃れることにした。それでも、画面のPixMapを作る部分でどうしてもエラーが出る。もとのソースは次のようなものだ。カラーテーブルへのハンドルcTableの複製を作るというものである。

HandToHand( &(Handle)cTable );

これだと「invalid lvalue in unary ‘&’」という重大なエラーとなる。キャスト結果のポインタ取得がエラーになるのは、厳しいぞ…などと思いながら、処理を2ステートメントに分けてみた。Handle形の変数cTabHandleを定義して、以下のように、引数の中身を分割した。そうすれば、重大なエラーはなくなった。

cTabHadle = (Handle)cTable;
HandToHand( &cTabHadle );

あとは、警告エラーだけになったので、とりあえず無視してビルドすると、見事にProject Builderがアプリケーションを生成した。ちなみに、プロジェクトが作成したソースなどが入っているフォルダの中にbuildというフォルダが作られていて、そこに作成したアプリケーションが作られる。パッケージになっているので、実体はSnapXShot.appというフォルダだが、Finderでは通常は1つのアプリケーションファイルに見えるという具合である。

2000/12/4版は、あとはトピック的にはでっかいアイコンをつける話と、マウスポインタを画面ショットに含める話がある。これらは次回にお届けしよう。

関連リンク:SnapXShot
カテゴリ:SnapXShot制作記


【森下克徳の崖っぷちからWebObjects】第7回〜ヤァヤァヤァ!アップルセミナーが自宅に!(後編)

さあ、アップルの「WebObjectsデモCD October 2000」を見ていくシリーズの3回目である。今回は、「製品情報・ユーザ事例」「WebObjects 関連 URL」のフォルダを見ていこう。

「製品情報・ユーザ事例」フォルダの中には、「ユーザ事例(英語版)」フォルダ、「ユーザ事例(日本語版)」フォルダ、「製品情報・FAQ」フォルダの三つのフォルダが入っている(図7)。
◇図7
 

ユーザ事例というのは、まあ読んで字のごとくなのだが、様々なケースでどのようにWebObjectsが使われているのかという実例である。日本語版(図8)と英語版(図9)のフォルダがあり、それぞれにPDF書類で一ケース一書類で事例が上げてある。日本語版の4ケースは、英語版の26ケースの中から厳選した分だけを訳したと言う感じである。おっと、英語版26ケースと書いたが、このなかの2書類は「Apple News for the Academic Community」(図10)というパンフレットのようなものが入っているので、事例としてはあとの24ケースと言うことになるだろうか。ファイル名が小文字で始まっている2つが該当の2書類である。
◇図8
 
◇図9
 
◇図10
 

全ての書類は、A4裏表で1枚のチラシのような形態になっている。英語版の先に上げた「Apple News for the Academic Community」だけは画像などが使ってあるが、そのほかの書類は基本的に文字だけで構成されている。(図11)画面上で読むには、正直言ってつらいような気がする。どちらかというと、これはプリントアウトして読むものだろう。だからこそのPDFではないのかとも思う。
◇図11
 

「製品情報・FAQ」フォルダには、4つのPDF書類がある。(図12)こちらはすべて日本語で、うちひとつはMac OS X Serverのパンフレットになっている。デモムービーを見たあとでこれらの書類を一読することで、頭の中がより整理されるようだ。ちなみに、FAQの内容は、これから導入しようとする人が質問したい内容のもので、すでに開発を行っている人向けのものではない。
◇図12
 

最後に、「WebObjects 関連 URL」フォルダであるが、これは中に「Internet Explorer」「Netscape」というフォルダがありそれぞれに同じURLが入っている。行
先はすべてアップルのサイトだ。(図13)
◇図13
 

このCD-ROMは、自分自身でWebObjectsについて知りたいという人にはもちろん、WebObjectsを使ってもらいたい人に対してプレゼンスする時の強力な武器となるものだろう。ただし、渡しただけで全部見てもらえるかどうかはちょっと疑問だ。ムービーはともかく、PDFものは相手に応じてプリントアウトして渡した方が、より効果的だろう。

わがサイトでは、現在ネット上にマーケットやコミュニティを運営するために準備をしているが、さっそくこのCD-ROMは、こちらのサイトの優越性を説明する材料として使うつもりだ。
[森下克徳]

カテゴリ:WebObjects, 崖っぷちからWebObjects


FireWire版iBookのバッテリの問題を修正するアップデータ

FireWire搭載のiBookの、バッテリの問題を修正するアップデータが公開された。FireWire搭載のiBookでは、長時間使用しない状態の後に、バッテリーの再充電を行なおうとしても、行なわれない場合があるという不具合があり、それを修正するもの。以下の文書に、アップデータの利用方法も紹介されている。なお、英語版とは別に英語版の国際版として以下のページで公開されている。画面表示などは英語だが、国際版なので日本で販売されているiBookに適用しても基本的には問題ないとは思われる。ただし、説明が日本語になっていて欲しいのであれば、日本語版のリリースを待っても良いだろう。

関連リンク:iBook (FireWire) Battery Update 1.0
カテゴリ:iBook


Power Mac G4の修理やトラブルに関連した文書が公開

Tech Info LibraryにPower Mac G4シリーズの修理あるいはトラブルシューティングに関する文書が掲載された。これらの情報は修理などを行なう人向けであるが、知識を広める目的があって公開したとしている。

◇95040 - Power Mac G4: Memory Error Dialog Box on the Screen
 http://til.info.apple.com/techinfo.nsf/artnum/n95040
メモリーエラーのダイアログボックスが出る場合には、メモリーモジュールの取り付けを確認するなどの処置を取る。

◇95050 - Power Mac G4: Computer Beeps Once At Startup
 http://til.info.apple.com/techinfo.nsf/artnum/n95050
起動時に警告音が1回鳴るのは、RAMがインストールされていないことが原因である。

◇95051 - Power Mac G4: Computer Beeps Twice
 http://til.info.apple.com/techinfo.nsf/artnum/n95051
起動時に警告音が2回鳴る場合には、メモリの種類が利用できないものなので交換するなどの必要がある。

◇95052 - Power Mac G4: Computer Beeps Three Times
 http://til.info.apple.com/techinfo.nsf/artnum/n95052
起動時に警告音が3回鳴る場合、メモリのチェックや交換などを行なう必要がある。

◇95053 - Power Mac G4: Computer Beeps Four or Five Times
 http://til.info.apple.com/techinfo.nsf/artnum/n95053
起動時に警告音が4回ないしは5回鳴る場合には、ROMの問題であり、修復は難しい。サードパーティの周辺機器をすべて取り付け直すか、ロジックボードの交換となる。

◇95054 - Power Mac G4: Screen is Black, No Startup Tone, Drive Does Not Operate
 http://til.info.apple.com/techinfo.nsf/artnum/n95054
起動音はして、ファンは動き、ランプは点灯するが、ドライブが動かない場合の対処方法が記載されている。チップのリセットなどの処方もある。

◇95055 - Power Mac G4: Screen is Black, Startup Tone Present, Drive Operates
 http://til.info.apple.com/techinfo.nsf/artnum/n95055
画面には何も表示されないけども、起動音はして、ドライブは稼動し、ランプも点灯する場合の対処方法が記載されている。

◇95056 - Power Mac G4: Screen Lights Up but Nothing is Displayed on the Screen
 http://til.info.apple.com/techinfo.nsf/artnum/n95056
ランプは点灯し、起動音はするけども、画面には何も表示されない場合の対処方法が掲載されている。ボードの差し込みなどをチェックする。

カテゴリ:Knowledge Base(旧TIL), Power Mac


作成したムービーが途中から正しく再生されないような場合でのプログラムのポイント

Technical Q&Aに、ムービーファイルの作成方法に関する質問が掲載された。自分でデータをもとにムービーを生成したが、最初からは正しく再生されるのに途中からは正しく再生されないときの対処方法が掲載されている。メディアサンプルを追加する時に、フラグを正しく設定していないために起こる症状だとしており、APIの利用法についての説明とサンプルプログラムが掲載されている。

関連リンク:Keyframes and AddMediaSample
カテゴリ:Technical Q&A, QuickTime


Classicでは「Microbug」デバッガは機能しない

Tech Info Libraryに掲載した情報によると、Mac OS X Public Betaでは、Mac OSで使えていたMicrobugデバッガが使えない。Microbugとは、Command+電源キーや、割り込みボタンで画面中央にボックスを表示して出てくる基本的な機能のデバッガだ。これはClassicでは使えない。デバッグをするなら、Classicに対応しているMacsBugや各社のデバッガを使う必要がある。ただし、その場合でも、割り込みボタンは機能しないので、キーボード操作などでデバッガを呼び出す必要がある。

関連リンク:Mac OS X Public Beta: Cannot Open Debugger in Classic
カテゴリ:開発ツール, Knowledge Base(旧TIL), Classic