Macintosh Developer Online (MDOnline)


2001年11月2日発行号 - さらにiPod



明日は祝日ですので、土日月の発行についてはお休みをさせていただきます。次の発行は火曜日です。この間に、今月末に購読期限切れとなる方々にお知らせをいたしますので、ぜひとも期限延長をお願いします。なお、BitCash対応についてはいつになるというのはちょっとまだ目処が立っていませんので、お許し下さい。月末付近になって対応できない場合で、どうしてもBitCashで払いたいと言う方がいらっしゃったら個別にご連絡いただけますでしょうか。
さて、今日はこれからX-Partyに行ってきます。何か新しい話があればとは思いますが、イベントの性格上、そんなことはないと思いますので、記事については濃いものは期待しないでください。いちおう写真をぱらぱらと撮影してきます。もしかしたら、X-Partyの記事だけ、火曜日以前に配信するかもしれません。
ところで、Office v.Xですが、Appleのサイトで大々的にアピールしています。マイクロソフトのMacTopiaよりも派手に宣伝しているという感じですね。Appleのトップページにも出てきます(出ない方は、何度か更新してみましょう)。
 http://www.apple.co.jp/macosx/applications/office/index.html
それだけ、Appleの期待は大きいのかもしれません。となると、Adobeとかの製品がネイティブに対応すると同じようにAppleからアピールすることになるのでしょうね。もちろん、ユーザにとってはビッグな話題ではありますし、マーケティング上の意味もよく理解できますが、有力ベンダーとそうでないところの差がちょっと大きすぎないかとも思ってしまいます。まあ、世の中の実勢がそうだと言われれば仕方のないことですけど。もちろん、私もOffice v.Xには期待はしていますよ。今度こそ、Wordがきちんと使えるようになっていてくれればと思います。
(新居雅行 msyk@mdonline.jp


倉橋浩一、じつはWebObjectsで飯食ってます》iPodでどこでもWebObjects

iPodは、FireWireHDとして、MacOS Xの起動ディスクとして使用できる。Appleとしてはこの機能の動作を保証しないとのことだが、ともかく、アレからMacOS Xが立ち上がってしまうのだ。

MacOS XとWebObjects 5をインストールして街へ行き、そこにFireWire付きのMacがあれば、「すいませーん」と借りて、WebObjectsすることができてしまいます。私の場合、デモとかセミナー講師として、外でWebObjectsを動かす機会が多いのですが、極端な話、iPodをポケットに入れていけば、それで用が足りてしまうことになります。

フジモトさんはiPodで音楽ソース一式の供養をされるようですが(笑)、私は英語教材を詰め込んで出かけようかな。ダイエットと腰痛対策のために暇を見付けてはウォーキングしているのですが、同じコースを毎日ただ歩くというのは結構苦痛なので、MDに落とした英語教材を聞きながら歩いたりしています。教材と言っても、新聞広告などでもお馴染みの『スピードラーニング』の他は、『ER』、『The Pirates of Silicon Valley』、『Apollo 13』などの英語音声をMDに落としたものなのですが…MDは早送り/巻き戻しの応答性が悪くて、「今のフレーズを聞き直したい」と思っても、ちょっと面倒です。それもあって、MP3のプレイヤーを物色していたんですが、どれも「Macっぽくない」、PC的な泥臭いものばかりで、食指が動きませんでした。

そこに出てきたiPod。私も最初、「高いなぁ」と思いました。が、ブート可能なポータブルHDとしても使えることを割り引けば、お買得です。

FireWireHDについては静観していた時期もあったのですが、気が付くと手放せないものになっています。仕事場で使っているのはYanoのAH80FCというモデルですが、クリーンなデザインも性能も気に入ってます。いくつかパーティションを切って、それぞれに異なったバージョンのMac OS X/WebObjects/OpenBaseを入れてあるので、ブートしなおすだけで顧客の環境を再現したテストができてしまいます。私のようにコンサルテーションで食べている人間には本当にありがたい機材です。

 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
新しいHDが出るたびに、PC98用のでかいHD(たしかCubeくらいの大きさ)を思い出します。約20年前に買ったそれは、3MB(メガです)で298,000円でした。

iPod、47,800円。安い安い(笑)。
[倉橋浩一/テクニカル・ピット]

関連リンク:WebObjectsのページ
カテゴリ:メディアプレイヤ, WebObjects, 倉橋浩一、じつはWebObjectsで飯食っています


iPodにはシリアル番号が刻印、そしてコピーガードについてのある機能

2001年11月1日に、日本のプレス関係者に向けて初めてiPodが公開された。その内容は2001年11月1日発行のMDOnlineに「iPod,iTunes 2,iDVD 2についての説明会が開催」として掲載した通りだ。もっとも、各媒体は米国の発表で配付された本体を何らかの方法で入手しているようなので、すでに手にとって使ってみている関係者も多かったのだが、それよりも、関係者と直接の対話ができ、好きなだけ使ってみることができるということもあり、たくさんのプレス関係者が詰め掛けた。プレゼンテーション後のQ&Aの多さも関心の高さを伺える。というわけで、こばやしゆたか氏の「Macっぽい」ということになる。

◇マックっぽい:iPodを聴いてきました
 http://www.zdnet.co.jp/macwire/0111/01/c_ppoi.html

実は、MDOnlineの記事はプレゼンテーション直後に発行したのだが、その後に別室で実機を触ることができたのである。iTunes本も出しているこばやしゆたか氏は自分のiBookを取り出してさっそくあれこれとやっていたが、それが前出の記事になっているというわけだ。

さて、iPodの裏面には、ステンレスの箱になっていて、アップルマークがしっかりと見えている。これは印刷ではなく、レーザーで刻印しているので、決して擦り切れてマークがなくなってしまうというわけではないそうだ。また、非常に小さくシリアル番号が印刷されているのであるが、そのシリアル番号は、ほんとうにシリアル番号で、1台1台が違う番号になっているということである。何かのイベントで抽選会でもあったとき、そのシリアル番号の末尾が何番!とかいったiPod所有者限定の抽選もできるかもしれないが…。
iPodのコピーガードについては、発表会でも強調されていたが、がちがちにはなっていないものの、それなりのガード機能が働いているようだ。iPod間で曲データの交換ができないのは当然としても、さらには、iPodからiTunes側にデータのコピーはできないということになっている。そして、iTunesがiPodの1台1台を識別できるようになっている。あるiTunesとあるiPodをシンクロさせると、iTunesの曲データがiPodに転送される。そのiPodを別のMacintoshに接続してシンクロしようとすると、iPodに存在する曲データをすべて削除しないと転送はできないという仕組みになっている。いわば、何人かのMacintoshをはしごして、データだけを集めるといったことはできないわけだ。ある1人分のデータだけしか、同時にはiPod上には存在しないというわけである。ただ、1台のMacintoshに記録したデータを、同時に複数のiPodにはシンクロはできてしまうそうではあるが、それはどちらかと言えばニーズの上からもあまり意味のない使い方かもしれない。つまり、iTunesで集めた曲は個人の嗜好を反映したものだから、配って意味があるかという問題になる。また、そうしたことができるということは、意味的には、iTunesでCDに焼き込むときに何枚も作成するのと同じことでもあるから、iPodによってコピーがしやすくなるということは言えないだろう。むしろ、CDに焼いてしまう方がその意味ではコピーはできてしまうわけだ。もっとも、バンドでコピー曲を演奏するときにメンバー各自に音源を配るという場合には、複数のiPodにシンクロするのはそれはそれで便利かもしれない。もっとも、全員がiPodを持っているバンドってのも限られるだろうし、なんか偏りありそうで恐い(笑…けど笑えない)。

関連リンク:iPod
カテゴリ:メディアプレイヤ


Java Watch on the X》1 - Mac OS Xでのシステムプロパティ(1)

【MDOnline読者様限定コンテンツ】
Javaのシステムでは、システムプロパティを通じて、実行環境に関する情報や、OSの情報などのさまざまなシステム情報を取得することができる。ライブラリの動作にはシステムプロパティによって影響される場合も出てくるということもあり、時にはアプリケーション側で独自にシステムプロパティを設定したいと思うこともある。自分で設定する方法にはさまざまなやり方があるが、これについては、Mac OS Xでのアプリケーション化などのところで詳しく説明することとし、今回については、最初から用意されているシステムプロパティがどんな値になっているかということを中心に説明しよう。

――――システムプロパティの処理機能
システムプロパティの取得のために、java.lang.Systemクラスにスタティックメソッドが用意されている。以下のいずれかを使うことになるだろう。

☆指定したシステムプロパティを取得する(Static)
 String System.getProperty(String key);
 戻り値:システムプロパティの値を示す文字列(存在しない場合はnull)
 引数:key:システムプロパティの名称

☆指定したシステムプロパティを取得する(Static)
 String System.getProperty(String key, Stgring def);
 戻り値:システムプロパティの値を示す文字列(存在しない場合は引数defの値)
 引数:key:システムプロパティの名称
    def:keyに指定したシステムプロパティが存在しないときのプロパティ値

☆システムプロパティをまとめて取得する(Static)
 Properties System.getProperty();
 戻り値:システムプロパティを含むProperties型のオブジェクト

☆指定したシステムプロパティに値を設定する(Static)
 String System.setProperty(String key, String Value);
 戻り値:nullを戻す(使う必要はないと思われる)
 引数:key:システムプロパティの名称
    value:システムプロパティとして設定する値

☆システムプロパティをまとめて設定する(Static)
 void System.setProperties(Properties props);
 引数:props:設定するプロパティのリスト

いずれにしても、システムプロパティは、java.util.Propertiesクラスのオブジェクトで管理されるデータである。そのデータは、キーと値で組になったレコードを、複数管理している。キーを指定して、値を取り出すというのが基本であり、そのためのメソッドがgetPropertyということである。Propertiesクラスは汎用的なものであるが、そのクラスを利用したオブジェクトを使って、システムプロパティが管理されている。そのシステムプロパティのオブジェクトは、アプリケーションなどの起動で自動的に用意されるが、そのプロパティオブジェクトにアクセスするためのスタティックメソッドがjava.lang.Systemクラスで定義されているということだ。
通常は、システムプロパティの取得を行うことが多いだろう。従って、System.getPropertyを使うことでほとんど用途はことが足りると思われる。たとえば、実行しているユーザ名は、user.nameというキーで取り出せることがすでに決まっている。したがって、「System.getProperty("user.name")によってユーザ名が文字列で取り出せるということになる。指定したキーのプロパティが存在しない場合に、一定のプロパティを戻すのであればgetPropertyで2つ目の引数を与えれば良い。もし、プロパティが存在しない場合に別の処理を行うという場合には、getPropertyの戻り値がnullかどうかを判断して処理を記述すれば良いだろう。

――――Mac OS Xのシステムプロパティを取り出すサンプルプログラム
ここで、Mac OS X上ですでに定義されている、つまりキーが存在するプロパティについて、System.getPropertiesメソッドを使って取り出してみた。その内容を一覧しておく。Mac OS XのVer.10.0.4と10.1の両方の結果を掲載しておいた。以下のリストでは、値の部分がアクア色のものがよく使うもの、あるいは注目するものと思われるプロパティである。

◇Mac OS Xのシステムプロパティ
 http://mdonline.jp/figs/01/0031/osxjavaprops.htm

この値を取り出すためのサンプルプログラムとソースファイルは、以下のアドレスから参照、あるいはダウンロードできるようにしておいた。

カテゴリ:Java, Java Watch on the X


Java Watch on the X》1 - Mac OS Xでのシステムプロパティ(2)

【MDOnline読者様限定コンテンツ】
――――システムプロパティを追加する
システムプロパティは、System.setPropertyを使えば、書き換えることもできてしまう。たとえば、「System.setProperty("user.name", "anothers");」というプログラムは可能で、これにより最初から設定されているuser.nameプロパティに対する値がanothersに変更されてしまう。目的によってはこうした処理も必要にはなるとは思われるが、既存のプロパティの書き換えはJavaの動作全体の動きにも関係する可能性があるので、慎重に行うべきである。
システムプロパティに独自のものを付け加える場合、起動時に指定する方法と、プログラムで指定する方法がある。プログラムで指定するには、setPropertyを使う。setPropertiesを使えば、システムプロパティをごっそり差し換えることができるが、引数に指定したPropertiesクラスのオブジェクトに定義されていないプロパティは、System.getPropertyでは取得できない。たとえば、自分でつかう3つほどの独自プロパティだけをPropertiesとして用意してSystem.setPropertiesを使うと、os.versionやuser.homeなどの既存のシステムプロパティが使えなくなってしまうのである。普通はそんなことはしないだろうけど、システムプロパティを生かしながら独自のプロパティを追加したい場合は1つ1つ、setPropertiesで指定するのが1つの方法だ。
もし、追加したいプロパティがたくさんあって、それらをシステムプロパティに追加したい場合は、Propertiesクラスのデフォルトのプロパティリストを使ったコンストラクタを使うという方法もある。たとえばこんな感じだ。

Properties myProps = new Properties(System.getProperties());
/* ここにmyPropsの値を設定するプログラムがくる */

こうしておき、プロパティの取得はmyPropsから行う。そうすると、たとえば、自分で定義したキーのプロパティでも、os.versionなどのプロパティでも、myProps.getProperty(キー)によって取得できるようになる。Propertiesのコンストラクタで引数にPropertiesクラスを指定すると、自分に存在しないものは引数に指定したプロパティリストに探しに行く。いすれにしても、ここまでのプログラムを作ることはあまりないと思われるが、いちおうコメントしておこう。

カテゴリ:Java, Java Watch on the X


QuickTimeはリエントラントではないため複数のスレッドからの利用には危険がある

QuickTimeはスレッドセーフなのかという問に対する答がTechnical Q&Aに掲載された。たとえば、1つのスレッドで圧縮をしながら、別のスレッドでムービーの再生ができるのかといったもの。Mac OS Xであっても、QuickTimeはリエントラントではないため、複数のスレッドからのQuickTimeの呼び出しはクラッシュの可能性があるということである。たまたま複数のスレッドからの利用があった場合でもうまく動くことはあるかもしれないが、それは同時にQuickTimeのAPIを呼び出していないというだけの話である。Appleはスレッドセーフにするように作業を行なっているが、そのためには時間がまだかかるとのことだ。

関連リンク:QA1088: Is QuickTime thread-safe?
カテゴリ:Technical Q&A, QuickTime


KBase》管理者のパスワードを要求されてキャンセルを選択するとフリーズする

Mac OS X 10.1で、たとえばシステム環境設定などで、管理者のパスワードを要求される場合があるが、そこでキャンセルを選択すると応答しなくなる問題について、Knowledge Baseで文書が公開された。解決方法としては、アプリケーションの強制終了、つまり、Command+option+escキーでダイアログボックスを出してアプリケーションを落とす方法が記載されている。

関連リンク:Mac OS X 10.1: Clicking Cancel During Admin User Authentication May Cause Unresponsiveness
カテゴリ:Mac OS X, Knowledge Base(旧TIL)


KBase》ディスプレイ設定が正しくなくて画面が出ない場合の対処方法

システム環境設定の「ディスプレイ」で、「推奨されるモードだけを表示する」のチェックボックスをオフにしてしまったとき、画面が真っ暗になるなどきちんとディスプレイ表示ができない設定になってしまう場合がある。そのときの復旧方法がKnowledge Baseに掲載された。ディスプレイ関連の設定は/Library/Preference/com.apple.windowserver.plistというファイルに保存されているので、このファイルを削除すれば良い。1つの方法は、Mac OS 9のシステムで起動して、設定ファイルを削除する。ハードディスクでも、CD-ROMででも起動できれば後は削除の作業ができる。別の方法として、Mac OS XをCommand+Sを使ってシングルユーザモードで起動する。そして「mount -uw /」というコマンドでディスクをマウントし、設定ファイルをrmコマンドで削除して、rebootコマンドで再起動する。

関連リンク:Mac OS X 10.1: No Video After Changing Resolutions in Display Pane of System Preferences
カテゴリ:Knowledge Base(旧TIL), Mac OS X


KBase》システム環境設定の「ログイン」では言語設定にかかわらずエラーメッセージは英語

システム環境設定の「ログイン」で、たとえば「ログイン項目」にすでに登録されているファイルを再度登録しようとすると、「FILEEXISTS」といったような英語のメッセージが出てくる。システムの言語を日本語にしていても英語のメッセージになるという点について、Knowledge Baseに文書が掲載された。将来のバージョンで修正するということになっている。

関連リンク:Mac OS X 10.1: Alert Messages for Login Items Appear in English When Using Another Language
カテゴリ:Knowledge Base(旧TIL), Mac OS X


TIL》Mac OS X ServerでのCGIを実行するためのチェックポイント

Mac OS X ServerでのCGIプログラムを実行したい場合のトラブルシューティングについてまとめられている。まず、AppleScriptのCGIを実行したい場合には、ACGI Enablerアプリケーションを起動しておく必要がある。CGIスクリプトの場合は、LFを改行コードにする。perlのパスは/usr/bin/perlとなっており、アクセス権の設定もきちんと行う必要がある。また、Server AdminのWebサービスの設定で、CGIの実行設定が行われているかもチェックする。それでもエラーが出る場合にはログを確認して、問題点を見つけだす。ログは、/var/log/httpdにある。

関連リンク:106519JN:Mac OS X: CGI 実行時のエラーを解決する方法について
カテゴリ:Tech Info Library-J, サーバー製品, Mac OS X Server


TIL》Mac OS X ServerでのMySQLを稼働させる方法

Mac OS X Server 10.1で、MySQLを起動する方法がTech Info Libraryに掲載された。sudo -sでルートになって、「mysql_install_db」「safe_mysqld --user=root &」「mysqladmin version」とコマンド入力する。MySQLのバージョンは3.23.42のようである。(なお、3つコマンドを入れているが、最初のコマンドは使いはじめるときに1度だけ必要なもので、その次のsafe_mysqldがデーモンを起動するものだ。mysqladminコマンドは、起動したMySQLのバージョンなどを確認するためのもので、MySQLがきちんと起動したかということを確かめるものである。)

関連リンク:106509JN:Mac OS X Server 10.1: MySQL の開始方法
カテゴリ:Tech Info Library-J, データベース, Mac OS X Server


TIL》ボリュームのアイコンの変更は2回以上行うとアイコンが表示されない

Tech Info Library-Jに、Mac OS X 10.1で、ハードディスクのアイコンを2回以上変更しようとすると、アイコン画像がまったくなくなり真っ白になってしまう点についての文書が掲載された。このようになってしまった場合に元に戻す方法が記載されている。なくなったアイコンのボリュームを選択してプロパティを表示し、アイコン部分が選択されているのを確認して、Command+Xでカットすると、デフォルトのアイコンに戻る。
文書には以上のことだけが記載されているが、内容を補足しておこう。ボリュームのアイコンは、Mac OS X 10.0.xでは設定できなかったが、10.1になってユーザが設定できるようになった。方法はMac OS 9と同様で、プロパティ表示し、アイコン部分を選択してCommand+Vで画像をペーストすればよい。ただし、1回ペーストすれば確かにその画像に置き換わるが、再度ペーストを行うとアイコンは全くなくなってしまう。そして、TIL-Jに記載されたようにアイコンの部分をプロパティウインドウでカットすればデフォルトには戻すことができる。このボリュームのアイコンは、そのボリュームのルートにある.VolumeIcon.icnsというファイルに記録されるようになっている。2回以上の変更ができないのは、このファイルが残っているせいではないかと思い削除をしてみたのだが、どうやら関係ないようだ。ボリュームアイコンの設定後にこのファイルを削除してもアイコンの状態に変化はないので、あるタイミングでこのファイルのアイコンをシステムが読み込みどこかにキャッシュ等をしているものと思われる。その部分のバグのために、2回以上の変更ができないと考えられる。

関連リンク:106528JN:Mac OS X 10.1: ハードディスクアイコンを変更するとアイコンが表示されなくなる
カテゴリ:Tech Info Library-J, ユーザインタフェース, Mac OS X


TIL》Rio One MP3は取り出してからUSBケーブルをはずす

Mac OS X 10.1でiTunes 1.1.2を使い、MP3プレイヤのRio One MP3を使う場合の注意点について、Tech Info Library-Jに文書が掲載された。USBケーブルをはずす前に、「Rio One MP3プレーヤ」をFinderで取り出しておかないと、フリーズしてしまい、再起動させないといけなくなってしまう。

関連リンク:60903JN:Mac OS X 10.1: USB ケーブルを外す前に「Rio One MP3 プレーヤ」を取り出してください
カテゴリ:Tech Info Library-J, メディアプレイヤ