Macintosh Developer Online (MDOnline)


2001年4月3日発行号 - 仮想記憶を考えてみた



Sambaの2.0.7のMac OS X向けディストリビューションが出ていました。コンパイル結果まもちろんですが、起動スクリプトをきちんと組むなど、最適化してあります。以下のところにあります。だけど、UTF8の機能を組み込んではビルドされていないようです。UTF8は日本語版のSambaを利用しないとだめです。ですけども、このSambaのインストールスクリプトは、コアOSへのインストールを行う手法という意味では参考になるところもあります。
ftp://techhouse.org/pub/osx/samba-2.0.7-osx.tar.gz
で、日本語版のSamba 2.0.7-2.2を試しに入れてみました。もちろん、ソースからコンパイルしました。Windows 2000からMac OS Xに対してファイルのコピーなどはできるのですが、どうもある特定の文字がファイル名にあるものは、Mac OS Xのサーバ側に存在しても、クライアントのWindowsでは存在が見えません。濁点のあるカナがある場合に見えないようになるという説もありますが、たとえば、Windows側で新しくフォルダを作ると、Mac OS X側では文字としても正しく「新しいフォルダ」という名前で、作成されたフォルダが見えています。しかしながら、そのフォルダは、Windows側では見えないのです。Sambaの利用はここで行き詰まっています。
(新居雅行 msyk@mdonline.jp


【訂正】FSRefを利用したリソース処理もAPIが用意されている

MDOnlineの2001年3月31日に“Browsing Mac OS X》Carbonアプリケーションでロングファイルネームに対応するには”という記事を配信しましたが、そこでResource ManagerにはFSRefによるファイル処理はできないと断言してしまっています。これは間違いないので訂正したいと思います。申し訳ありませんでした。
Resource ManagerのAPIリファレンスを見ると、FSOpenRefFileなどのAPIコールが用意されています。ただし、これらのAPIのCarbon対応はUnder Evaluationとなっています。ただ、Carbon 1.1以降でサポートとなっており、Mac OS X 10.0では実際に使える模様なので、「ない」と断言することは間違いでした。ただ、Supportedとはなっていないだけに、利用については注意が必要でしょう。システムのあるバージョンからは使えなくなるという可能性もあります。もっとも、その後にSupportedとなる可能性もありますので、そのあたりは動向をチェックしながら利用するというのがポイントになるかと思います。

カテゴリ:


Browsing Mac OS X》そんなに使うの!?仮想記憶のディスクスペース

Mac OS Xは、システムに仮想記憶の機能が組み込まれていて効率的に稼動するという触れ込みもある。Mac OS 9までと違って仮想記憶はオフにはできないため、システムの動作とは切っても切れないのであろう。この仮想記憶は、もちろん、ハードディスクのスペースを利用して、実際に搭載されている物理メモリよりも多くのメモリ空間をシステムやアプリケーションで利用するということを実現する。もちろん、物理メモリを大量に搭載してそれだけしか使わないという選択肢も、システム構築の上では可能で効率的だと考える向きもあるかもしれない。また、Mac OS 9まででは、利用形態によってはそうした利用方法を推奨していた時期もあった。だが、Mac OS 9のように、物理メモリの制限とそれを考慮した仮想記憶の上限があるようなシステムではそうしたことも可能だった。Mac OS Xでは、仮想記憶の上限はもはや指定しなくてもいいのである。言い換えれば、物理メモリしか使わないという選択肢はなくなったと言っていいだろう。もっとも、何ギガバイトもメモリを搭載すれば可能なのかもしれないが、仮想記憶を効率的に使うというのが、現代のOSなのである。
Mac OS XのProcess Viewerを見れば、dynamic_pagerというプロセスが動いている。このプロセスが、仮想記憶を司っている。ちなみに、/etc/rcというファイルの最後の方に、このプロセスを起動する設定がある。そこを見ると、/private/var/vmというディレクトリ(/var/vmも同じ)に仮想記憶のファイルを作成することが分かる。実際に仮想記憶のファイルを作成している様子は、Terminalで「ls -l /var/vm」などとコマンドを入れれば分かる。swapfile0などのファイルが仮想記憶のファイルだ。
それを見ると、80000000バイト、つまり約80MBの仮想記憶用のファイルを、必要に応じていくつも作成するというような動作になっている。実際にいろいろアプリケーションを使っているうちに、この80MBのファイルが次第に増えてくるのである。動作をこれまでいろいろ観察してみたのだが、とにかくアプリケーションの起動を行えば、次第に増えていくことはあっても、あまり減る方向には行かないように思える。アプリケーションを全部終了させれば、少しは減るかなと思うところだ。たとえば、半日程アプリケーションの起動や終了をかなり行うなどいろいろな作業をしたあとにふと見ると、ファイルは7つになっていた。つまり、仮想記憶のために500MBあまりのファイルを使っていたのである。
Mac OS 9までは、仮想記憶の上限を設定したら、そのサイズのファイルが確保されたので、ディスクの使用量は読めた。しかしながら、Mac OS Xは青天井にファイルを作っていくような気さえする。なお、この仮想記憶のためのファイルは、起動時にいったん確実にクリアされるようになっている。

インターネットでいろいろ検索していると、dynamic_pagerを起動するパラメータを変更して、仮想記憶のファイルの作る場所を別のドライブにしてみるということをやって、うまく行ったという報告も見られる。

◇OS-X FAQ: Reader Report: Swap Performance on OS X
 http://www.osxfaq.com/reports/vm.shtml

このページでも記述があるのだが、LinuxなどのUNIX系OSは、仮想記憶のためのファイル専用にディスクのパーティションを用意する。そして、そのパーティションは基本的には見えないようにしておく。ただ、そうした方法を取るとすれば、Mac OSからMac OS Xにアップデートするために、ハードディスクのパーティションをすべて切り直しを要求し、ファイルをいったん全部消すということを要求することになってしまう。これじゃあ、アップデートとは言えないだろうから、おそらく起動ディスク使った仮想記憶システムと言うことに落ち着いたと考えられる。
いずれにしても、仮想記憶のためにどれくらいの空きスペースが必要かということについては、起動ディスクにそれなりの分量を確保しておいかないといけないということになるだろうか。経験則はこれから積み重ねるとしても、筆者の使い方なら、500MBの空きでも足りなくなると言う可能性があるわけだ。今度パーティションの計画を再検討できるような機会があれば、仮想記憶分としては1GB程度は考慮に入れたいと考えている。

カテゴリ:Browsing Mac OS X


Browsing Mac OS X》FSSpecをFSRefベースに移行させてロングファイル名に対応

前回のBrowsing Mac OS Xの“Carbonアプリケーションでロングファイルネームに対応するには”で、Mac OS Xで動かすCarbonアプリケーションでのロングファイル名に非対応となる可能性を説明した。これまでに使われていたファイルを参照する構造体FSSpecはとりあえずはうまく動くのだが、31バイトに切り詰めたファイル名で処理を行う。ロングファイルネームをきちんと管理するにはFSRefという構造体を使うのが基本になる。なお、リソースフォームのやりとりをFSRefベースでできないということを書いたが、実際にはできるようなで、別掲の訂正記事を参照してもらいたい。

では、Carbonベースのアプリケーションで、FSSpecをシステムから取得していた部分について、それをFSRef化することを考えよう。一般的なアプリケーションでは、「ファイル」メニューの「開く」や「保存」を選択してNavigation Servicesのダイアログボックスを表示し、そこからユーザが指定したファイルのFSSpecを得ているだろう。まず、これが代表的な1つのケースだろう。もう1つは、AppleEventのOpenDocumentsで、システム側から開くファイルを伝達された場合に、どのファイルを開くのかをFSSpecで得ているという場合がある。これらは多くのファイルに組み込んでいるところだと思うが、前にも説明したように、今まで通りFSSpecベースでプログラムを組んでいても、とりあえずは動く。File Managerの各機能は、FSSpecで動作するように互換性があるからだ。しかしながら、そこで取得されるファイル名は、31バイトを超えるとFinderで見えるファイル名と違って切り詰められたものなのである。Mac OS 9までだとFinderで見えるファイル名とFSSpec構造体のファイル名は同一だったが、Mac OS Xでは違ってしまうと言う弊害が出ると言う次第だ。
ここで、Navigation ServicesとAppleEventと場面は違うのだが、プログラム的には同一であることは、実際にアプリケーションを組んだことがある方はよく御存じだろう。いずれも、AppleEventのディスクリプタリストとして得られたデータから、FSSpec構造体と指定してデータを取り出す。一般にはAEGetNthPtrというAPIコールを使うことが多いだろうが、その3番目のデータに、取り出すデータのタイプを指定する。以前まではここにtypeFSSという定数を指定していたが、そのかわりにFSRefを要求する定数typeFSRefを指定しなおせばいい。もちろん、取り出す構造体はFSSpec型ではなくFSRef型構造体に変更し、さらには取り出すデータのサイズもsizeof(FSSpec)ではなくsizeof(FSRef)にするなどの変更も必要である。
いずれにしても、ディスクリプタのリストから、FSRef型でデータを抜き出しさえすれば、指定したファイルのFSRef型構造体のデータが得られるというわけだ。おそらくシステムの内部で、ファイル参照の2種類の構造体間のタイプ変換機能が組み込まれているため、プログラムではどちらでも指定できるようになっているのだと考えられる。従って、プログラムのフロントエンドの部分は、変数の定義の変更等も必要ではあるが、大きく変更する必要はないのである。むしろ、大きく変更する必要があるのは、実際のファイル処理の部分となるが、それは次回に説明しよう。

なお、FSSpecのままで処理をした場合にどのようになるかは、StuffIt DeluxなどのStuffItシリーズで問題となる動作であることは前回紹介した。また、問題とはならないにしてもMac OS X 10.0に付属するInternet Explorer 5.1でもその影響が見られる。ファイル名でも、あるいはそのフルパス中にあるフォルダでもいいので、31バイトを超える場合のファイルを、IEにドラッグ&ドロップして開いてみよう。すると、アドレス欄にはFinderで見える名前のパス名ではなく、31バイトに切り詰めたファイル名のパスが得られる。おそらく、FSSpec構造体から獲た名前でフルパス名を構築しているのだろう。また、アドレス欄に入れるパスの文字列についても、file:///の場合でもFinderで見える名前のパスではなく31バイトに切り詰めた名前を使ったパスでなければならい。その意味では、きちんとファイルは参照できるのであるが、切り詰めたパス名をユーザに見せてしまう結果になるというわけだ。

カテゴリ:Browsing Mac OS X


TIL,TIL-J》Mac OS Xでのキーボードによる音量と輝度調整

Tech Info LibraryおよびTech Info Library-Jに掲載された文書のうち、Mac OS Xでのキーボードによる音量や輝度を調節する機能に関する文書として、次のようなものが公開されている。

◇Mac OS X 10.0: キーボードボリューム調整のステータスバーは表示されない
http://til.info.apple.co.jp/cgi-bin/artnum?id=106150JC
◇Mac OS X 10.0: No Status Bar for Keyboard Volume Adjustment
http://til.info.apple.com/techinfo.nsf/artnum/n106150
Apple Pro KeyboardやPowerBookのキーボードを使った音量調節の機能は、Mac OS Xでも機能して利用できるが、音量を示すグラフィックス表示がなされない。将来のバージョンではそれを可能にする。

◇Mac OS X 10.0, iBook, PowerBook: 輝度調節キーと音量調節キーが使えない
http://til.info.apple.co.jp/cgi-bin/artnum?id=106213JC
◇Mac OS X 10.0, iBook, PowerBook: Display Brightness and Volume Keys Do Not Respond
http://til.info.apple.com/techinfo.nsf/artnum/n106213
PowerBookやiBookでは、画面の輝度調節や音量調節をキーボードを使って行えるようになっているのではあるが、Mac OS Xでは、必ずしも効くようにはなっていない。これは機種ごとに調整可能なものが異なっている。確実なのはシステム環境設定の機能を使うことである。

◇Power Macintosh G3 All-In-One: Volume Adjustment Buttons Do Not Work With Mac OS X 10.0
http://til.info.apple.com/techinfo.nsf/artnum/n106152
Power Macintosh G3 All-In-Oneモデルでは本体前部にあるボリューム調整ボタンを使ってもボリュームは調整できない。システム環境設定を使う必要がある。

◇Mac OS X 10.0: ボリュームを消音に設定しても起動音は聞こえます
http://til.info.apple.co.jp/cgi-bin/artnum?id=106186JC
◇Mac OS X 10.0: Startup Sound Persists With Volume Muted
http://til.info.apple.com/techinfo.nsf/artnum/n106186
ボリューム設定を音がならないように設定していても、起動音は鳴る。ボリューム設定に連動するように、将来のバージョンで修正する予定だ。

カテゴリ:Tech Info Library-J, Knowledge Base(旧TIL), 周辺機器


TIL,TIL-J》Mac OS Xのディスクやディスプレイなどに関する文書

Tech Info LibraryおよびTech Info Library-Jに掲載された文書のうち、Mac OS Xでのディスクやディスプレイなど周辺機器に関する文書として、次のようなものが公開されている。

◇Mac OS X 10.0: 多くの他社製インクジェットプリンタドライバが組み込まれます
http://til.info.apple.co.jp/cgi-bin/artnum?id=106219JC
◇Mac OS X 10.0: Many Third-Party Ink Jet Printer Drivers Are Built In
http://til.info.apple.com/techinfo.nsf/artnum/n106219
Mac OS X 10.0に標準でドライバが組み込まれているキヤノンとエプソン製のインクジェットプリンタの一覧が掲載されている。つまり、これらの機種は接続するだけで利用できる。ただし、カスタム用紙設定が使えないなど、機能的に制約されている場合がある。

◇Mac OS X 10.0: Epson SC 740 プリンタエラー -27 メッセージ
http://til.info.apple.co.jp/cgi-bin/artnum?id=106188JN
◇ Mac OS X 10.0: Epson SC 740 Printer Error -27 Message
http://til.info.apple.com/techinfo.nsf/artnum/n106188
タイトルにあるプリンタを使用している時、Classicアプリケーションからの印刷を行っている場合に、2番目のプリントキューを入れるとエラーメッセージが出てくる場合がある。

◇Mac OS X 10.0: ファイルシステム修復のために fsck を使用する理由と、いつ、どのように使用するかについて
http://til.info.apple.co.jp/cgi-bin/artnum?id=106214JN
◇Mac OS X 10.0: Why, When, and How to Run fsck for File System Maintenance
http://til.info.apple.com/techinfo.nsf/artnum/n106214
一般的にはDisk Utilityでディスクの修復ができるが、起動できないときにfsckでチェックするようにメッセージが出ることもある。このコマンド形式のfsckの利用方法等が詳しく記載されている。シングルユーザモードに入るには、Command+Sを押したままで起動し、そこでfsck -yコマンドを実行することなど、手順が詳しく掲載されている。

◇Mac OS X 10.0:「file system dirty, run fsck」のメッセージ
http://til.info.apple.co.jp/cgi-bin/artnum?id=106215JN
◇Mac OS X 10.0: "file system dirty, run fsck"
http://til.info.apple.com/techinfo.nsf/artnum/n106215
起動時にタイトルのようなメッセージが出れば、fsckユーティリティを使って修復を行う必要がある。

◇Mac OS X 10.0: 接続の際、内蔵モデムの音がしない
http://til.info.apple.co.jp/cgi-bin/artnum?id=106162JC
◇Mac OS X 10.0: Internal Modem Makes No Sound When Connecting
http://til.info.apple.com/techinfo.nsf/artnum/n106162
ダイアルアップ接続で内蔵モデムのサウンドが出てこない場合がある。将来のバージョンで修正する予定だ。

◇Mac OS X 10.0: 256 カラーモードや 640 × 480 解像度の使用
http://til.info.apple.co.jp/cgi-bin/artnum?id=106175JC
◇Mac OS X 10.0: Using 256 Color Mode and/or 640 x 480 Resolution
http://til.info.apple.com/techinfo.nsf/artnum/n106175
256色カラーや640×480の解像度は、Classicアプリケーションだけにする必要がある。Classicアプリケーションが自動的に設定してしまい元に戻らない場合には、システム環境設定で設定を戻す。

◇Mac OS X 10.0: 設定アシスタントと AppleVision ディスプレイの 640 x 480 ピクセル解像度
http://til.info.apple.co.jp/cgi-bin/artnum?id=106221JN
◇Mac OS X 10.0: Setup Assistant and AppleVision Display 640 by 480 Pixel Resolution
http://til.info.apple.com/techinfo.nsf/artnum/n106221
AppleVision 1710/AVでは、セットアップ後640×480ドットになる場合もある。ADBポートのある機種では接続を正しく行ってセットアップを行う。セットアップは、800×600ドット以上の解像度で正しく動作するようになっている。

カテゴリ:Tech Info Library-J, Knowledge Base(旧TIL), 周辺機器


Dockの配置する場所を画面の上下左右の任意の位置に設定できるようにするユーティリティ

Austin Shoemaker氏がフリーウエアとして公開している「Docking Maneuvers 1.1」を使えば、Dockの位置を下だけでなく、上下左右の位置に配置できるようになる。こうしたカスタマイズの機能は、Mac OS Xには最初から組み込まれているようで、Austin Shoemakerによって、その機能がアクティブになる模様だ。アプリケーションを実行すると、機能を有効にするかどうかをたずねるダイアログボックスが表示される。有効にすると、Dockの境界線部分をControlキーを押しながらクリックすることで、「自動配置」「固定位置」のメニューが追加される。前者が、Dockの位置を上下左右に配置を変更するためのものだ。後者は、たとえば、下に表示されている場合、左寄せ、右寄せ、中央に配置する。ただし、どの位置に表示しても、1行あるいは1列での表示のみとなる。

関連リンク:Docking Maneuvers
カテゴリ:ユーティリティ, ユーザインタフェース


TIL-J》AirMac 1.3でフレッツ・ADSLなどのPPPoEのプロバイダに接続する方法

Tech Info Library-Jに、AirMac 1.3に関する文書が掲載された。英語版ですでに掲載された文書はアドレスだけを示すが、日本の事情にあわせた文書も掲載されている。

◇AirMac 1.3: PPPoE で ADSL に接続する場合の設定方法
http://til.info.apple.co.jp/cgi-bin/artnum?id=100461JO
フレッツ・ADSLなど、日本国内でのインターネットプロバイダで、PPPoEを利用したサービスへの接続方法がさっそく掲載されている。ベースステーションのファームエアのアップデートを行うことと、設定を行うことになるが、それぞれ手順で詳しく掲載されている。また、AirMacを使う場合やEthernetと併用して使う場合などの設定についても掲載されている。

以下の文書は、英語版のAirMac 1.3がリリースされたときに、TILに掲載されたものと内容的には同じなので、文書とそのアドレスだけを掲載しておく。

◇AirMac 1.3:「AirMac Base Station Software」ファイルの場所が変わりました
http://til.info.apple.co.jp/cgi-bin/artnum?id=106143JC
◇AirMac 1.3:「コンピュータとコンピュータのネットワーク」で、他のコンピュータにアクセスすることができない
http://til.info.apple.co.jp/cgi-bin/artnum?id=106142JN
◇AirMac 1.3:「コンピュータとコンピュータのネットワーク」(IBSS) を使う
http://til.info.apple.co.jp/cgi-bin/artnum?id=106140JN
◇AirMac 1.3: PPPoE - ソフトウェアベースステーションがインターネットに接続しない
http://til.info.apple.co.jp/cgi-bin/artnum?id=106144JN
◇AirMac 1.3: PPPoE インターネット・アクセス用の「サービス名」欄
http://til.info.apple.co.jp/cgi-bin/artnum?id=106157JC

カテゴリ:Tech Info Library-J, ネットワーク