MOSA Multi-OS Software Artists

MOSAはソフトウェア開発者を支援します

  • iPhone/iPod touch アプリ紹介
  • MOSA掲示板
  • 活動履歴
  • About MOSA(English)

MOSA Developer News[MOSADeN=モサ伝]第254号

2007-06-05

目次

  • 「Wonderful Server Life」    第48回   田畑 英和
  • 小池邦人の「Carbon API 徒然草」
  • ターミナルの向こうから      第3回  海上 忍 
  • 書籍紹介             Running Mac OS X

「Wonderful Server Life」  第48回  田畑 英和

■  〜環境設定編〜

 さて、今回から新しいテーマの解説を始めて行きたいと思います。今回から解説するテーマは「環境設定」です。ローカルコンピュータの環境設定といえば、Dockやネットワークの設定を「システム環境設定」を使って行うことになります。
 自分が使っているコンピュータを設定するだけでしたら、もちろんこれでかまわないわけですが、コンピュータを多数管理しなければいけない場合はどうでしょうか。1台1台設定していてはとても間に合いません。
 また、環境設定をいつも特定の状態に固定しておきたいという場合もあるでしょうし、管理者がある程度設定を行ってからユーザにコンピュータを引き渡すこともあるでしょう。

 このようなニーズがある場合、Mac OS X Serverの「環境設定」機能を使えば、サーバ上で環境設定を一元管理することができます。この機能を活用することにより、管理者はコンピュータの環境設定を1台1台設定する手間を軽減することができるのです。サーバで設定した環境設定はネットワーク上のクライアントコンピュータに反映され、クライアント上では設定を変更できないようにすることも可能です。

◇環境設定の準備
 サーバで環境設定を一元管理する場合ですが、まずOpen Directoryを使用することが必須になります。サーバで設定した環境設定はOpen Directoryによって管理されますので、Open Directoryのマスターサーバを設定することが必要になります。
 また、サーバ上で管理されている環境設定にアクセスするために、管理対象となるクライアントコンピュータはすべてOpen Directoryのマスターに「ディレクトリアクセス」を使ってバインド(接続)しておく必要があります。

◇環境設定の対象
 環境設定は次の3つのレベルで管理することができます。

・ユーザ
・グループ
・コンピュータ

 「システム環境設定」で設定する環境設定にコンピュータ全体の設定とユーザごとの設定があるように、サーバで一元管理する環境設定にも、複数のレベルがあります。
 サーバで管理する環境設定では、ユーザとコンピュータに加え、グループ単位での環境設定も可能です。ですので、複数のユーザに共通する環境設定を行いたい場合は個々のユーザに対しての環境設定を繰り返すのではなく、グループに対して設定をすることができます。グループに対して設定した環境設定は、すべてのグループメンバーに反映されます。

◇環境設定の適用範囲
 環境設定を行う場合、サーバ側での設定をいつまで適用するのかを選択することができます。
 まず、設定を常に適用することができます。この設定を行えばクライアント側では設定を変更することができなくなります。例えばDockを右側に表示するようにサーバ上で設定したとします。すると、クライアント側ではDockの位置を変更できなくなります。サーバでこのような設定を行えば、クライアント側では該当する設定項目がDisableになり、変更ができなくなります。
 また、クライアント側での変更を許可するようにも設定できます。この設定を行えば、ユーザが最初にログインしたときにはサーバ側で設定した環境設定が適用されますが、クライアント側で設定を変更したい場合、ユーザはいつでも設定を変更することができます。

◇モバイル用の環境設定
 環境設定の中にはモバイルクライアントのための環境設定も用意されています。ノートパソコンは一般的にネットワークから切り離して持ち運んだりしますが、ネットワークに接続しなければ、Open Directoryのサーバにアクセスすることはできません。Open Directoryのサーバにアクセスできなければ、ネットワークユーザも利用することができません。
 このようなモバイル環境のための環境設定が用意されており、モバイル環境の設定をおこなえば、サーバ上に登録したネットワークアカウントを、クライアントコンピュータに複製することができます。また、サーバ上のネットワークホームと、クライアントコンピュータ上のローカルホームを同期する設定も用意されています。

 というわけで、まずは環境設定についての概要を解説しました。次回からは具体的な設定方法を解説していきたいと思います。
                                
つづく

開発環境をMacProに移行する 小池邦人

最近、プログラム用のメイン開発マシンをPowerMac G5 2GHz(2CPU)からMacPro 2.66GHz(Dual Core 2CPU)に移行しました。開発作業に対するパフォーマンスについてはPowerMac G5でまったく不満ないのですが。メインマシンをIntel CPU版にする理由が幾つか出てきたので移行を早めることにしました。最初の理由は、開発アプリケーションのユーザの多くがIntelマシンへ移行した結果、ターゲットとなるPPCマシンとIntelマシンの比重が逆転したことです。アプリケーション自体はUniversal Binary版ですので、どちらのマシン環境でも特に問題はありません。しかし、どうしても開発環境マシン(今までだとPPCマシン)での動作チェックの方に重点が置かれ、もう片方のマシン環境での動作確認が若干甘めになるという傾向がありました(筆者だけかもしれないですが)。Intelマシンのユーザがどんどん多くなっていく現状を考えれば、やはり開発マシンもIntelマシンにしておくのが最良だと考えたわけです。

ところで、6月開催されるWWDC2007ではLeopard(Mac OS X 10.5)のβ版が配布されることが確定しました。「Xcode Tools」や、それに付属するFrameworkもかなり変更されることが予想されるので、それらを最新のIntelマシンで試してみたいと言うのが次の理由です。「新しい酒は新しい器に」「鉄は熱いうちに打て」と言ったところですね。続いて、開発アプリケーションの中に早急に64Bit化しなければいけない物があるのが3番目の理由です。もちろんPPCマシンの方はPowerMac G5で大丈夫なのですが、現状手元にあるIntelマシンはCore Duo CPU搭載のものだけで、残念ながら、こちらは64Bitアドレッシングに対応していません。また処理に複数スレッドを使うアプリケーションで、2
コア以上(4コアや8コア)のマシン環境における最適化(チューニング)を
色々と試験してみたかったことも大きな理由のひとつです。

さて、さっそく購入マシンスペックの検討です。筆者は、8コア版が登場した時点で4コア版MacProの価格が値下げされるとふんでいたのですが、残念ながらその予想は外れました。2.66GHz 4コア版の価格は据え置かれ、3GHz 8コア版に拡張すると、何とプラス188,790円もかかってしまいます。この価格レベルはさすがに厳しいですね(笑)。とりあえず、メモリの値段が少し下がりましたので(でも高価)2.66GHz 4コアマシンに4GB(4x1GB)実装し、搭載HDDの容量も500GBにアップしました。これでトータル424,700円となります。購入先はどうしたものかと悩みましたが、ADC Selectメンバーにはマシン1台+周辺機器(モニタなど)の開発機購入割引特典があるので、これを利用することにしました。この特典をうまく使えば、ポイント付販売店で購入するよりも割安と
なります。この特典、昔はSelectメンバー加入2年目からしか有効になりませんでしたが、現在は加入1年目から有効のようです(最終購入価格についてはアップルから見積もりが届く)。

続いては、届いたマシンのセットアップなのですが、初回起動で立ち上がるセットアップアプリケーションで大きな問題に遭遇しました。必要なデータを別マシンから移行するように設定し、FireWire経由でターゲットモードで起動した別マシンを接続したのですが、いつまで経ってもデータのコピーが始まりません?! ターゲットマシンを別マシンに変更してもダメ、ならばと移行データをネットワーク関連だけに絞ってみてもダメ、ウンともスンとも言いません。筆者の環境だけの問題かもしれませんが、この仕組みがうまく動いてくれないと移行の手間がかなり増えてしまいます。仕方がないので、とりあえず手入力でセットアップし、まっさらの状態から「移行アシスタント」アプリケーションを使いホームディレクトリやアプリケーションをコピーしました。
ただしXcode Toolsはコピーされませんので、再インストールが必要となります。

後はシリアル番号を移行できなかったアプリケーションを再レジストしすれば、以前とほとんど変わらない環境の出来上がりです。唯一違う点はClassic環境が存在せず、Mac OS 9用アプリケーションを起動できないことです。筆者の環境では、そうしたアプリケーションはResEditだけでしたが、20年以上もお世話になってきた旧友との別れは辛いものがあります(笑)。PPC版アプリケーションの方は、Intel版Mac OS Xに搭載されている「Rosetta」が面倒を見てくれます。このRosettaの処理速度と交換性は大変優秀でして、例えば、Metrowerks CodeWarriorなども問題なく起動でき、古いタイプのアプリケー
ションをメイクすることが可能でした。あまり期待していなかったのですが、これにより古いアプリケーションをチェックするためだけに(時々ある)PPCマシンを起動する必要がなくなります。ちなみに、Rosetta上でのMetrowerksCodeWarriorのコンパイルスピードはPowerMac G5 2GHzと同等でした。

当然のことながら、ネイティブアプリケーションのパフォーマンスは素晴らしいの一言です。筆者が開発したEmonCというボクセル表示アプリケーションでの処理(マルチスレッドで複数コアをすべて使う)を比較してみると、PowerMac G5 2GHzで46秒かかっていた処理がたった11秒で終了してしまいます。Xcodeでのコンパイル処理も4倍近いスピードを発揮します。もともと、同クロックのPowerPC G5と比較して、Core 2 Duo CPUは整数処理パフォーマンスが2倍以上ありますので、この結果は予想範囲内です。ただし、浮動小数点演算やSSE演算(PPCのAltiVecに準拠)は5割から7割ぐらいのパフォーマンスなので、中には不得意とする処理もあるでしょう。しかし、こちらのパフォーマンスも、次世代CPUに新しい除算ユニットやSSE4が実装されることで大きく改善される見込みです。

ソフトウェア的な移行が完了したら、続いてハードウェア環境を整えます。MacProは4台までのHDDを内蔵でき増設作業も簡単ですから、RAID等を組むのには最適です。また、開発者は昔々に開発したアプリケーションの動作確認用として旧バージョンOSをインストールしたパーテーションを多数用意します。加えて、これから登場する新OSをチェック(Seeding)するための独立ボリュームも確保したいところです。当然バックアップ用HDDも必要ですから、それらをすべて内蔵ディスクとして管理できるのは実に効率的です。さっそく500GのHDDを2台購入して増設してみました。バルク品であれば500G HDDは13,000円〜15,000円で購入できます。購入したのは日立製でしたが、元々の内蔵HDD(シーゲート製?)よりアクセス音が静かでしたので、こちらをメインボリュームに変更してしまいました。また、MacProには2つのCD-ROMベイがあるので、将来Blue-Rayドライブが安くなったら装着してみたいと考えています。

ところで、今回の移行で一番嬉しかったのは、このマシンが大変に静かだと言う点です。以前のPowerMac G5は処理が煮詰まってくると、ファンが「ブオ〜〜」と飛び上がりそうな轟音を立てうるさくてたまりませんでした。大画面ディスプレイに対応させるためにビデオカードを上位機種へ差し替えてからは特にその傾向が強くなり、歴代で一番「熱くてうるさいマシン」のレッテルが貼られていました。ところが、MacProの方はコア数が倍になったのにも関わらず大変静かです。開発作業中はHDDのアクセス音だけが部屋に響き、あまりにも静かなので、スリープしているのか画面が暗くなっているだけなのか区別が
付きません(笑)。開発中にiTunesを使いバックグランドミュージックを楽しんでいる筆者にとっては、この静寂性が移行最大のメリットかもしれませんね。これから開発環境をIntelマシンへ移行しようと考えている方に、筆者の体験談がいくらかでも参考になれば幸いです。

ターミナルの向こうから      第3回  海上 忍

〜Mac OS Xのディレクトリ構成(2)〜

 前回は、Mac OS XのUNIXレイヤーに関する理解を深めるために、ディレクトリ構成の基本ルールを紹介しました。今回はその続編として、Finderには現れないUNIX由来のディレクトリのうち、コマンドに関連するものを取り上げます。

・重要な役割を持つディレクトリ
 前回説明したとおり、UNIX系OSではファイルシステムの基点(ルート)を「/」で表現します。Mac OS Xの場合、通常は「Macintosh HD」ボリュームのトップ、「アプリケーション」や「システム」などのフォルダが配置された領域が「/」に該当します。
 しかし、そこにフォルダとして表示されるのは「/」以下に存在するディレクトリの一部で、実際には非表示属性のディレクトリがいくつも存在します(第2回の表2を参照)。いずれもシステム起動時などに重要な役割を果たしますが、デスクトップで行うような作業には直結しないため、敢えてFinderから隠蔽されていると考えられます。
 それらの隠蔽されたディレクトリは、前身のNeXTSTEP/OPENSTEPおよびDarwinが開発された経緯から、基本的には他の”*BSD”と同様に配置されていますが、LinuxやSolarisなど他のUNIX系OSと大きく変わるわけではありません。たとえば、freestandards.orgが規定した「Filesystem Hierarchy Standard」※というLinuxを主対象としたディレクトリ構成の統一ルールがありますが、Mac OS X/Darwinと多くの部分で共通していることを確認できるはずです。※:http://www.pathname.com/fhs/

・コマンド専用のディレクトリ
 一般的にUNIX系OSでは、コマンドを保存しておくディレクトリが決まっています。コマンド専用のディレクトリを用意することで、その保存場所を示す文字列(パス)を指定する手間が省けるからです。
 「/」直下のbinとsbinディレクトリ(/bin、/sbin)には、合計で約100のコマンドが配置されています。/binにはシェルやファイル操作などUNIX系OSとしての基本機能を提供するコマンドが、/sbinにはマウントやフォーマット関連などシステム上重大な影響を及ぼしかねないコマンドが置かれることになっています。どちらのディレクトリもシステム専用/読み取り専用であり、任意のコマンドを置くことはありません。
 コマンドを追加する場合は、/usrディレクトリ以下に配置されたbinまたはsbinディレクトリ(/usr/bin、/usr/sbin)へコピーすることが一般的です。この2つのディレクトリの役割分担は、/binと/sbinの関係に似ていますが、システム上の重要度としては一段低くなっています。
 /usr/local/binと/usr/local/sbinディレクトリも利用されます。そもそもはローカルホスト上でのみ実行されるコマンドの置き場、という意味合いがありましたが、1人がUNIXを独占できる(Mac OS Xがまさにそうです)現在、/usr/binおよび/usr/sbinと区別する強い理由はありません。ただし、ソースコードを自力でコンパイルして導入したコマンドは、/usr/local以下へインストールされることが多く、しばしば「コマンドが行方不明」になる事件を招きます。

・コマンドが行方不明になる原因
 ディレクトリ構造の話題から若干外れますが、ここで「コマンドサーチパス」の説明をしておきましょう。
 Mac OS X 10.4/Tigerでは、デフォルトのシェルとして「bash」が利用されます。シェルにはコマンドの入力を受け付け実行するという役割がありますが、その際特定のディレクトリに対してコマンド(と判断した文字列)の有無を照会し、あれば実行、なければ「command not found」としてエラー、という処理を行います。シェルにコマンド置き場を伝えるための情報源が、コマンドサーチパスなのです。
 bashは環境変数(後日説明します)の「PATH」にある文字列を、コマンドサーチパスとして参照します。bashは起動直後に「/etc/profile」を参照するため、このファイルでPATH環境変数を定義する方法が多く利用されますが、Tigerに収録されている/etc/profileでは、PATH環境変数は次のように定義されています。

- - - - -
PATH="/bin:/sbin:/usr/bin:/usr/sbin"
- - - - -

 この文字列がPATH環境変数として定義されると、bashは/bin→/sbin……の
順にコマンドを探します。上の例では/usr/local/binと/usr/local/sbinが含
まれないため、そこに保存されたコマンドはコマンド名だけでは実行できませ
ん。「/usr/local/bin/コマンド名」のように「/」から始まるすべてのパス
(フルパス)を入力する必要があるのです。
 それでは面倒ですから、通常はPATH環境変数を再定義してコマンドサーチパ
スを追加します。前述した/etc/profileを書き換えてもいいのですが、ユーザ
のホームフォルダ直下にシェルの設定ファイル「.profile」(~/.profile)を
用意し、/etc/profileで定義したPATH環境変数を再定義したほうがスマートで
す。

- – - – -
export PATH=$PATH:/usr/local/bin
- – - – -

 コマンドサーチパスの再定義には、bashのビルトインコマンド「export」を
使用します。上の例では、「$PATH」としてその時点のPATH環境変数の値を参
照し、そこへ「/usr/local/bin」を加えています。
 追加できるパスは、/usr/local/binだけではありません。たとえば、次の要
領でPATH環境変数を再定義すると、/usr/local/binとホーム→「command」
フォルダをコマンドサーチパスに加えることができます。「mosaden」の部分
にはユーザ名が入りますので、各自置き換えてください。

- – - – -
export PATH=$PATH:/usr/local/bin:/Users/mosaden/command
- – - – -

 次回は、/usrと/varを中心に、ディレクトリ構造の解説を行う予定です。

書籍紹介                Running Mac OS X

 解説担当:高橋政明

Running Mac OS X
  James Duncan Davidson 著
  長瀬 嘉秀 監訳  株式会社テクノロジックアート 訳
  オライリー・ジャパン ISBN4-87311-192-7  定価3,570円

 2004年に出た少し古い本です。表紙の動物はシェパードで右上に「Panther対応」とあります。原著は「Running Mac OS X Panther」です。価格も比較的高く買うべきか迷った方も多いかも知れません。日本でレパード対応の第二版が出る事を期待しつつご紹介します。

 原著は2003年発行で日本語版も2004年発行ですが、11ページのコラムでIntel対応の可能性について書かれています。最新ではありませんが10.3もまだまだメインで使われている方も少なくないことでしょう。当然今後開発するプロダクトでもサポートしなければならない場合もあると思います。そのような時の資料として貴重な一冊です。
 「4章システムの起動とログイン」にはPantherの起動プロセスが詳しく載っています。もちろんPowerPCの場合の情報ですが、ユーティリティソフトなどを開発する際には重要な情報のはずです。

 目次で確認できますが、ほとんどの章の最後に追加情報があります。本文で深く触れていない事柄についての情報源が書かれています。さらに付録Cに他の情報源が載っています。

 OSの中身や動作は必要に迫られて調べる場合と興味にまかせてたどる場合とがあるかと思います。『こんな仕組みならこんなことができないか?!』とひらめく事もある、かも知れません。手元にあれば日本語で広範囲に学べる書籍と言えます。

▼出版社のweb(詳しい目次が載っています)
http://www.oreilly.co.jp/books/4873111927/

▼原著の10.4対応版(虎の表紙) pdfのサンプルあり
http://www.oreilly.com/catalog/runmacx2/

◇MOSAからのお知らせと編集後記は割愛します◇

 

 MOSA Developer News   略称[MOSADeN=モサ伝]
        配信停止 mailto:mosaden-ml@mosa.gr.jp
 記事内容に関するご意見 mailto:mosaden-toukou@mosa.gr.jp
      記事投稿受付 http://www.mosa.gr.jp/?page_id=850
Apple、Mac OSは米国アップル社の登録商標です。またそのほかの各製品名等
はそれぞれ各社の商標ならびに登録商標です。
このメールの再配信、および掲載された記事の無断転載を禁じます。
特定非営利活動法人MOSA  http://www.mosa.gr.jp/
Copyright (C)2007 MOSA. All rights reserved.