明日からWWDC 2001に行って来ます。昨年の状況から判断すると、基調講演の様子は記事に書けますが、そのほかの内容は機密事項となる模様ですから、WWDCの様子は残念ながらあまり多くは書くことができません。現地より、日常のニュースはこの期間もお届けする予定です。しかしながら、日中はほぼカンファレンスに出ているので、それほど多くお届けはできないかもしれませんし、日によっては穴が開くかもしれませんがご了承ください。たとえば、現地火曜日とか木曜日は夜中までイベントが詰まっているのです。それから、KNOXの手帳の抽選は、出発までに行って発送するてはずを整えておきます。
ところで、iBuildの正式版が出ましたが、私はVer.0.9.5のときにSite版を購入しています。CDで送られてくるのですが、CDというよりCD-Rでして、ラベルも手作りでした。手作りというか、単にソフト名とバージョン番号だけが記載されただけのものでしたけどね。Siteの利用者はVer.1.0にアップデートするには新しいシリアル番号を入力しないといけないのですが、メールが来ていまして、新たなCDを発送するとのことです。期待のソフトなんですけど、残念ながら、Mac OS XのClassic環境では動いてくれません。早くX対応してほしいですね。
それでは行って来ます。現地でお会いする方々も多いと思いますが、お気軽に声をかけてください。
(新居雅行 msyk@mdonline.jp)
Mac OSでの高機能リソースエディタであるResorcererがVer.2.4にバージョンアップし、Mac OS Xに対応した。前バージョンであるVer.2.2は1999年に出荷されたものであり、久々のバージョンアップでもある。Resorcerer 2.4の大きな特徴は、データフォークリソースに対応したことであり、つまりはMac OS Xのネイティブアプリケーションの開発に使えるようになった。ファイルの拡張子に対応して、そのファイルの中身に応じたデータを編集するエディタ機能が呼び出されるようになっている。もちろん、128ドット32ビットのアイコンの編集にも対応し、そのほかのアイコンリソースに変換するといった機能もある。また、UNICODEテキストの参照などもできる。Carbon版のResorcerer 2.4も用意されているが、いくつかの機能制約がある。Classic環境で稼働するものであれば、機能制約はないとしている。ほかには、AppleScriptでのビットやバイト単位での処理を含めリソースデータをオブジェクト化して扱う機能、16進数表示のエディタ、送信されてきたAppleEventの逆アセンブル、メニューでのxmnuリソースの対応などが新しい機能としてリストアップされている。
関連リンク:Mathemaesthetics
カテゴリ:開発ツール, 開発ツールその他
今回から、自作Carbonアプリケーションのソースコードを参考にしながら、Navigation Service 3.0の実装方法についての解説を始めたいと思います。まずは、Sheet Windowにアラートを表示することから挑戦してみます。
さて、前回取り上げた「フォントパネルの謎」について、何人かの読者の方からメールが届きました。みなさんのご協力に感謝いたします。結論としては、現状ではCarbon環境からフォントパネルを利用することはできないようです(涙)。アプリケーションを使うユーザの混乱を避けるためにも、ユーザインターフェースと深く関わる機能については、CocoaでもCarbonでも同じように使えるようAppleに要望したいと思います。さて、今回の「謎」は「ダイアログのインライン対応Text Editで、未変換を示すアンダーラインを表示するにはどうしたら良いのか?」です。ダイアログのテキスト入力カラムの幅は18ピクセルにしろと、Aquaガイドラインでは指示しています。ところが、カラムをこの幅に設定すると、インライン変換中のアンダーラインがはみ出して、ユーザには見えなくなってしまうのです。(文字の高さが18ポイントもある?)
通常、システムが文字入力時に利用しているフォントサイズは14ポイントのようです。これを12ポイントに変えれば直るのかと思ったのですが、アンダーラインが表示されないのに加え、文字の入力位置がどんどんズレていくという現象まで出てしまいました。
ところが、システムが用意しているファイル保存ダイアログや「システム環境設定」のテキスト入力カラムでは、フォントサイズが12ポイントでも14ポイントでも、ちゃんとアンダーラインが表示されます。(ファイル保存ダイアログでは、たまに表示されない時がある?)
以前、Appleに、Mac OS XのModal Dialogではインライン用テキスト入力コントロール(kControlEditTextInlineInputProc)が利用できないことを報告したら、「それは使わないでくれ」という返事が来たことがありました。結局これは、Mac OS XではModal Dialogを使うなと言う暗黙の圧力なのでしょうか(笑)。ただし、Modeless Dialogで上記のコントロールを使った場合でも、インラインは可能でもアンダーラインが表示されないのは同じでした。今まで何も気にせずに使えていたことが、突然利用できなくなるのは悲しいものです(涙)。
気を取り直してNavigation Service 3.0の解説に移りましょう。Navigation Service 3.0には、Sheet Windowに表示できるアラートが2種類あります。ひとつは、編集済みドキュメントウィンドウを保存せずに閉じようとした時に用いるアラートです。アラートには「保存しない」「キャンセル」「保存」の3つのボタンがあり、次の処理の判断をユーザに促します。ウィンドウが単独で閉じられる時と、作業終了で閉じられる時では、注意文として異なる内容を表記をすることができます。
もう一つは、ファイルメニューの「復帰...」で、現在のドキュメント内容を前回保存した状態に戻す時に用いるアラートです。
比較のために、昔のNavigation Service APIを使った両アラート表示ルーチンを示しておきます。前者を表示するのがnavSaveAlert()で、後者を表示するのがnavRevertAlert()です。
旧方式は、NavGetDefaultDialogOptions()で得たディフォルトNavDialogOptions構造体にドキュメント名やアプリケーション名を代入し、NavAskSaveChanges()またはNavAskDiscardChanges()を呼ぶだけの簡単な処理です。NavAskSaveChanges()の場合には、閉じる時なのか作業終了なのかで、NavAskSaveChangesAction(act)に設定するパラメータを切り替えます。もしアプリケーションがCarbon Event Modelに対応していれば、この時のNavEventUPPルーチン(nav_eventUPP)では何もする必要はありません。ただし、ここにNULL(ゼロ)を渡すと、ダイアログがMovable(移動可能)ではなくなってしまうので注意してください。NavAskSaveChanges()やNavAskDiscardChanges()は、ユーザがどのボタンをクリックしたのかを番号で返してきます(OKなら1番、キャンセルなら2番)。よって、その値を確認して処理を振り分けてやればOKです。
今度は、新方式の方を紹介します。ファイル保存を確認するアラートを表示しているのがnavSaveAlertX()です。
NavGetDefaultDialogCreationOptions()でディフォルトNavDialogCreationOptions構造体を得て、必要なパラメータを各メンバーに代入します。ドキュメント名やアプリケーション名はパスカル文字列ではなくCFStringCreateWithPascalString()を使い、Unicode文字列を示すCFStringRefに変換してから代入します。構造体のpreferenceKeyメンバーには親ウィンドウのWindowRefを、modalityメンバーには「kWindowModalityWindowModal」を代入すれば、このアラートは親ウィンドウのSheet Windowに表示されます。
NavCreatePutFileDialog()でダイアログを作成し、返されたNavDialogRef(dpr)をNavDialogRun()に渡すと、アラート表示が開始されます。旧ルーチンと大きく異なる点は、新方式ではアラートを表示したまま処理から抜け出てしまうことです(ボタン番号は返らない)。よって、ユーザがどのボタンをクリックしたのかを確認し、それに対する処理を実行するのは、NavCreatePutFileDialog()に設定されているNavEventUPPルーチン(nav_alertEventUPP)内となります。この時、NavCreatePutFileDialog()のinClientData(ユーザが自由に利用できる引数)には、親ウィンドウをのWindowRefを渡すようにしています。この手続きは、NavEventUPPルーチン内の処理で、親ウィンドウのWindowRefを使うために必要となります。
ドキュメント復帰を確認するためのアラートを表示しているのがnavRevertAlertX()です。
Navigation Service APIの使い方については、navSaveAlertX()とほとんど同じです。もう一度注意しておきますが、この両ルーチンは、Mac OS Xで利用した時にかぎり、Sheet Windowにアラートを表示します。これらをMac OS 9で使うと、アラート表示は普通のModal Dialogとなり、ユーザがどれかボタンをクリックするまでNavDialogRun()から抜け出してきません。つまり、旧方式とまったく同じ挙動を取るわけです。ちなみに、両ルーチンで使われている、setWNavFlag()、setWNavDref()、actControls()、disableQuitMenu() などは、Navigation Service 3.0を使いこなすために用意した自作ルーチンです。これらの目的や役割に関しては、次回以降に詳しく解説します。
続いて、両ルーチンで共有しているNavEventUPPのnavAlertEventProc()ルーチンを紹介しておきます。
navAlertEventProc()のエントリーポイントは、アプリケーション開始時に、以下のようにnav_alertEventUPPに代入しておきます。
nav_alertEventUPP=NewNavEventUPP( navAlertEventProc );
navAlertEventProc()では、アラートのNavDialogRefはcallBackParms->contextに、親ウィンドウのWindowRefはcallBackUDに入っており、それぞれを簡単に参照することができます。引数で得たcallBackSelectorがkNavCBUserActionと一致すれば、ユーザがアラートのボタンのどれかをクリックしたことになります。この時にcallBackParms->userActionも調べ、それが「kNavUserActionSaveChanges」と一致していれば、ファイル保存用アラートの「保存」ボタンが押されたことになります。同様に「kNavUserActionDontSaveChanges」なら「保存しない」ボタンが、「kNavUserActionCancel」なら「キャンセル」ボタンが、それぞれ押されたことになります。また、その値が「kNavUserActionDiscardChanges」であれば、今度は復帰用アラートの「OK」ボタンが押されたことになります。
また、callBackSelectorがkNavCBTerminateであれば、アラートが閉じられたことを意味します。よって、NavDialogDispose()によるアラート削除などの後処理を行います。クリックされたボタンが識別できれば、後は各ケースごとに適切な処理を実行してやればOKです。navAlertEventProc()のsaveImageWindow()はドキュメントのファイル保存を担当し、reloadImageWindow()はファイルからの復帰を担当しています。こうした処理や、getWNavFlag()で得ているフラグの意味と働き、後処理で実行しているsetWNavDref()やenableQuitMenu()などのルーチンについては、次回以降に詳しく解説したいと思います。
次は、いよいよ新方式のファイルオープンや保存ダイアログルーチンの解説に突入します。ただし、次回にかぎりNavigation Service 3.0の話しを中断し、今年のWWDC 2001のトピックスや印象についてまとめてみたいと思います。
[小池邦人/オッティモ]
関連リンク:オッティモ
カテゴリ:ユーザインタフェース, 小池邦人のプログラミング日記
Acrux Softwareは、HyperCard的なマルチメディアオーサリングソフト「iBuild」の開発を進めてきたが、Ver.1.0つまり正式版をリリースした。 iBuildはカードにオブジェクトを配置する方式でスタックを作成することができる。フルスクリーンの表示や、QuickTimeにも対応する。スタンドアローンのアプリケーションの生成もできる。プログラミングにはAppleScriptで対応する。コースウエアの制作などに対応できるとしている。25枚のカードまでに制限されたLite版はフリーだ。機能制約のないものは有償となる。生成アプリケーションをインハウスに対しての配布権を持つProfessional版($49、5/31までは$29)、自由に配布可能なDeveloper版($199)が用意されている。Mac OS 8.6以降での利用が推奨されている。また、ネットワークでの共有を可能にするSite版(5ユーザで$199より)も用意されている。さらに、2001年7月には、キオスク端末向けのiBuild Kioskがリリースされる予定となっているが、FileMaker Proのデータベースとの連動もできる。Mac OS X対応版は2001年秋に予定されている。
関連リンク:Acrux Software
カテゴリ:オーサリング系
Mac OS XとMac OS 9を同じディスクのパーティションにインストールしているときに、Mac OS 9.xのシステムをリストアや再インストールすると、Mac OS Xで起動したときにMac OS Xが起動しなくなるという症状に対するトラブル対応が記載された文書が公開された。基本的には別の文書に説明があるように、ルートにあるApplicationsフォルダを対比させてクリーンインストールをする。もし、そうした操作をしていない場合の対処がこの文書に書いてある。一方、リストアをしてしまった場合には、たとえば、Original Itemsフォルダにディスクにあったファイルが移動されてしまうことなどが発生する。そのときの復活の方法が記載されているが、場合に分かれておりステップも長い。いずれにしても、Mac OS 9.xのインストールを完了後に、Mac OS Xの再インストールを行う必要がある。(なお、日本語にも翻訳されているので、じっくり読むのならそちらの文書を参照すれば良いだろう。アドレスについては、別掲の記事を参照してもらいたい)
関連リンク:Mac OS X 10.0: How to Recover From Software Restore or Reinstall Mac OS 9.x on a Mac OS X Disk
カテゴリ:Knowledge Base(旧TIL), Mac OS X
Tech Info Library-Jに公開された文書のうち、Mac OS X関連の文書を紹介しよう。アドレスと要約は以下の通りだ。更新された文書については要約は省略する。
◇106278JN:Mac OS X 10.0: Classic 環境での「スーパユーザ (root) アクセス権」メッセージ
http://til.info.apple.co.jp/cgi-bin/artnum?id=106278
Classicを起動するときにそうしたメッセージが表示されるのは、ボリュームのアクセス権を無視するという設定をしているから。
◇106284JC:Mac OS X 10.0: Webding と Zapf Dingbat フォントは TextEdit で動作しません
http://til.info.apple.co.jp/cgi-bin/artnum?id=106284
TextEditでWebdingやZapf Dingbatフォントを選択しても、ヒラギノフォントが選択されてしまう。
◇106294JN:Mac OS X 10.0: 同じディスク上に Mac OS 9.x を再インストールする方法と、ソフトウェアリストアから修復する方法
http://til.info.apple.co.jp/cgi-bin/artnum?id=106294
→別掲の記事を参照。
◇106176JC:Mac OS X:「この Mac について」で表示されるビルド名(修正)
http://til.info.apple.co.jp/cgi-bin/artnum?id=106176
◇75125JC:Mac OS X 10.0.1 Update に関する情報と、ソフトウェアのダウンロード(修正)
http://til.info.apple.co.jp/cgi-bin/artnum?id=75125
◇106214JN:Mac OS X 10.0: ファイルシステム修復のために fsck を使用する理由とその方法(修正)
http://til.info.apple.co.jp/cgi-bin/artnum?id=106214
◇106241JC:Mac OS X 10.0: Dock や「Applications」フォルダに不明なフォルダが表示される(修正)
http://til.info.apple.co.jp/cgi-bin/artnum?id=106241
カテゴリ:Tech Info Library-J, Mac OS X
Tech Info Library-Jに、2001年5月に発表された新型iBookに関する文書が公開された。以下は、文書のタイトルと要約だ。更新文書については、要約を省略する。
◇88119JC:iBook (Dual USB): 外部ポート類とコネクタ
http://til.info.apple.co.jp/cgi-bin/artnum?id=88119
接続ポートを写真入りで解説している。
◇88121JN:iBook (Dual USB): バッテリの取り外しおよび取り付け方法
http://til.info.apple.co.jp/cgi-bin/artnum?id=88121
バッテリの取り外しや取り付け方法が、イラストで解説されている。
◇88122JN:iBook (Dual USB): メディア取り出しキーは Mac OS X 10.0.1 では動作しません
http://til.info.apple.co.jp/cgi-bin/artnum?id=88122
◇88123JN:iBook (Dual USB): Mac OS X が外部モニタを認識しないことがある
http://til.info.apple.co.jp/cgi-bin/artnum?id=88123
外部モニタ出力やメディアの取り出しキーは、Mac OS X 10.0.2で対応している。それ以前のMac OS Xでは機能しない。
◇88120JC:iBook (Dual USB): 技術仕様(修正)
http://til.info.apple.co.jp/cgi-bin/artnum?id=88120
カテゴリ:Tech Info Library-J, iBook
Tech Info Library-Jに、2001/5/17(一部は5/14)までに公開された文書のうち、別掲の記事以外のものとしては以下のものがある。多くは更新文書であるため、要約については省略させていただく。
□アプリケーション
◇58826JN:DVD Studio Pro: QuickTime Pro の登録
http://til.info.apple.co.jp/cgi-bin/artnum?id=58826
シリアルナンバーは説明書の右上にある。Proキーの設定方法の手順が記載されている。
◇25283JN:DVD Studio Pro: マルチセグメント MPEG-2 ストリームを読み込むための条件
http://til.info.apple.co.jp/cgi-bin/artnum?id=25283
ファイル名の条件など。
◇31308JC:AppleWorks 6: Web ベースのクリップをハードディスクに保存する
http://til.info.apple.co.jp/cgi-bin/artnum?id=31308
文書に配置したクリップを、クリップ集のパレットにドラッグ&ドロップすればよい。
◇24991JC:Final Cut Pro: 互換性のある構成(修正)
http://til.info.apple.co.jp/cgi-bin/artnum?id=24991
□システム関連ソフトウエア
◇36507JN:QuickTime: スタンドアローンインストーラの入手方法(修正)
http://til.info.apple.co.jp/cgi-bin/artnum?id=36507
◇60388JN:QuickTime: Web からのインストールに関する問題(修正)
http://til.info.apple.co.jp/cgi-bin/artnum?id=60388
◇88054JC:Apple CPU Plugin (Power Mac Dual G4) について(修正)
http://til.info.apple.co.jp/cgi-bin/artnum?id=88054
◇16810JC:RAM Disk: RAM ディスク容量の変更と削除(修正)
http://til.info.apple.co.jp/cgi-bin/artnum?id=16810
◇88056JC:AppleShare IP/9.0.4 Update: Read Me(修正)
http://til.info.apple.co.jp/cgi-bin/artnum?id=88056
□Macintosh本体、周辺機器
◇58658JC:iMac (Summer 2000): 新しい情報とこれまでとの違い(修正)
http://til.info.apple.co.jp/cgi-bin/artnum?id=58658
◇58758JC:Power Mac G4 (Digital Audio): 技術仕様(修正)
http://til.info.apple.co.jp/cgi-bin/artnum?id=58758
◇14870JN:メモリ構成: Portable、PowerBook、iBook(修正)
http://til.info.apple.co.jp/cgi-bin/artnum?id=14870
◇12958JN:PowerBook Displays: アクティブマトリクス方式とパッシブマトリクス方式の液晶の比較(修正)
http://til.info.apple.co.jp/cgi-bin/artnum?id=12958
◇60446JN:液晶ディスプレイの手入れ方法(修正)
http://til.info.apple.co.jp/cgi-bin/artnum?id=60446
◇10639JC:Screen Savers: 液晶ディスプレイにおけるスクリーンセーバの使用(修正)
http://til.info.apple.co.jp/cgi-bin/artnum?id=10639
◇58584JN:AirMac: AirMac に対応していないコンピュータでベースステーションを設定する(修正)
http://til.info.apple.co.jp/cgi-bin/artnum?id=58584
□アップデートソフトウエア(要約は省略)
◇120001JC:AppleScript 1.6 に関する情報と、ソフトウェアのダウンロード
http://til.info.apple.co.jp/cgi-bin/artnum?id=120001
◇75115JC:GeForce2 MX Driver Update に関する情報と、ソフトウェアのダウンロード
http://til.info.apple.co.jp/cgi-bin/artnum?id=75115
◇25280JC:Macintosh マネージャ 1.4.1 に関する情報と、ソフトウェアのダウンロード(修正)
http://til.info.apple.co.jp/cgi-bin/artnum?id=25280
カテゴリ:Tech Info Library-J