2006-05-02
目次
「Wonderful Server Life」 第1回 田畑 英和
さて、今回から新連載のスタートです。皆様よろしくお願いします。本連載ではMac OS X Serverについて取り上げ、その活用方法をご紹介していきたいと思います。
さっそくですが、皆さんMac OS X Server使ってますか? 使い方がよく分からずにほったらかしにしていませんか? Mac OS X Serverには専用の管理ツールが付属していますので、簡単に管理ができそうに思えますが、サーバの管理をするからには注意しなけばならないことも色々と出てきますし、基礎的な知識も必要になってきます。
サーバでは、他のユーザに様々なサービスを提供することになりますので、適切なサーバ管理ができていないと、他のユーザに迷惑をかけてしまうこともありえます。もっとも、兼任でサーバ管理をやっていて本業のほうもあるのでとても十分な手間をかけていられないという方もいらっしゃるかと思いますが、そういった方こそじっくりとサーバ管理に取り組んでいただくことにより、効率的なサーバ管理ができるようになるというものです。
というわけで、本連載は次のような方々をターゲットにしていきたいと思います。
・Mac OS X Serverはあるけれども使い方がいまいち分からない
いきなり管理ツールをいじったところで、各設定項目の意味が分かっていなければ適切な管理はできません。本連載では各種設定が実際にどのような意味があるのかを解説していきます。
・興味はあるが使ったことがない
まずはMac OS X Serverでどういったことが実現できるのかを知りたいのではないでしょうか。本連載では具体的にどこのようなことが実現可能なのかについても取り上げて行きます。
・他のプラットフォームでのサーバ管理経験はある
基礎知識やサーバの管理経験があれば、あとはツールの使い方などのMac固有なことが分かれば、比較的容易にサーバ管理が始められるでしょう。ツールの操作方法についてもなるべく具体的に解説を行なう予定です。
逆に本連載では、Mac OS X Serverに直接依存しないような基礎的な知識、特にネットワークやInternetに関することはあまり細かくは解説しない予定です。そういったトピックについてはWebで情報を検索することもできますし、専門書も多数出版されていますので、他にも学習する機会は色々あるかと思います。必要に応じて解説を行なうことはあるかもしれませんが、本連載のテーマはあくまでも「Mac OS X Server」ですので、うまくバランスをとりながら連載を続けていければと思います。
◇Mac OS X Serverの入手方法
それではまずMac OS X Serverの入手方法から解説していきます。まずライセンスには10クライアント版とUnlimitedクライアント版の2種類があり、それぞれ価格が異なっています。
・Mac OS X Serverの価格
10クライアント版:52,000円(税込み)
Unlimitedクライアント版:98,000円(税込み)
このライセンスがどう違うかですが、まずはアップル社のWebサイト上にある、ライセンス数の制限についての説明をそのまま引用しておきましょう。
・Mac OS X Serverの仕様
http://www.apple.com/jp/server/macosx/specs.html
…このクライアント数の制限は、MacintoshおよびWindowsのファイル共有サービスを同時に接続するクライアント数のみに適用されます。
つまり、ファイルサービスを提供する場合、10クライアント版では同時に接続可能なクライアント数に制限があるということです。逆にそれ以外のサービスについてはライセンス上の制限ありませんので、10クライアント版であっても、例えばメールサーバでは10名以上のユーザをサポートすることができます。
どちらのライセンスを購入するかですが、Mac/Win向けのファイルサービスを利用するかどうかと、ファイルサービスを利用する場合に必要とするクライアント数を確認しましょう。このとき、現時点での状況と将来クライアント数が増えるかどうかも検討しておきましょう。
予算に余裕がある場合は最初からUnlimitedクライアント版を購入しておいてもよいでしょうし、予算を最小限に抑えたいのであれば、まずは10クライアント版から始めればよいでしょう。
もし将来クライアント数が増えて10クライアント版では対応しきれなくなった場合ですが、10クライアント版をUnlimitedクライアント版にアップグレードすることができる「Mac OS X Server v10.4ライセンスアップグレード」が52,000円で販売されています。あとからアップグレードしたほうが若干割高になりますが、最初からUnlimitedクライアント版を購入するのとほとんど価格は変わりません。このライセンスアップグレードはオンラインのAppleStoreでも購入することができます。
適切なライセンスを選択してパソコンショップ、Apple Store、代理店などでパッケージを購入すればよいわけですが、Mac OS X Serverがハードウェアにあらかじめバンドルされている製品もあります。Xserveを購入した場合にはMac OS X Serverが付属していますので、パッケージを別途購入する必要はありません。ただしXserveのモデルによって付属するMac OS X Serverのライセンスが異なっていますので、購入前によく確認を行なってください。
またあまり知られていないようですが、Mac OS X Serverにはライセンスを複数購入した場合に割引のある「ボリュームライセンスプログラム」や、3年間はメジャーアップグレード版を受け取るこのできる「ソフトウェア自動送付サービス」といったプログラムも用意されており、それぞれ教育機関向けの特別価格も設定されています。
・Appleボリュームライセンスプログラム
http://www.apple.com/jp/software/volumelicensing/avl.html
・Appleソフトウェア自動送付サービス
http://www.apple.com/jp/software/volumelicensing/amp.html
というわけで、第1回目の連載ではまずMac OS X Serverの入手方法について解説しました。今後はあと数回にわたって概要的な解説を続けてから、具体的にどのようなサービスを、どのようにして提供することができるのかを解説していく予定です。
もし本連載に関するリクエストやMac OS X Serverに関するご質問などありましたら、連載で取り上げていきたいと思いますのでhtabata@mac.comまでご連絡いただければと思います。それでは新連載これからもよろしくお願いします。
つづく
【著者プロフィール】
田畑 英和(タバタ ヒデカズ) htabata@mac.com
Apple Certified Trainer, Apple Certified System Administrator
2006年4月からサラリーマン生活にピリオドをうってとうとう独立。現在はフリーランスとして、WebObjectsによるWebシステムの開発や、アップル認定トレーニングのトレーナーとして活動中。
MOSAではこれまでメルマガにWebObjectsの記事を連載したり、湘南セミナーでの講師をつとめる。
藤本裕之のプログラミング夜話 #90
前回ここに「Carbonではこうやる」と言って紹介したアプリケーションを起動するコードについて、もしかしたらくるかも知れないと半分期待していた「ちっちっち、フジモトさんそのやり方はもう古いんですよ、今はもっと便利なAPIがあるんです」というご指摘は来なかった。なんとなく「南野陽子が来なかった東京ドームの電脳遊園地」みたいな寂寞とした空気が流れているような気がするが、Carbonのヒトって未だにあんなに面倒くさいコード書いてるの?
とはいえ、前回も書いたように、こういうコードを書いていれば細かなオプションも指定可能である。例えばlaunchControlFlagにlaunchDontSwitchを指定すれば、目的のアプリケーションをバックグラウンドで起動出来たりする。Cocoaではそれは出来ないの? それを今回は調べていこうというわけ。
普通、Cocoaのアプリケーションから他のアプリを起動するときに使うシーケンスは以下のものである(前回も書いたけど念のためね)。
……簡単だ。だけど簡単すぎて、アプリに「起動はするけどフォアグラウンドにくるな」とか伝える手管はどこにもない。ここで普通考えるのは「そんぢゃNSWorkspaceにそれが可能な他のメソッドがあるよ、きっと」ということだよね。で、読者諸兄の手間を省いて同クラスの、「launch」で始まるメソッドを以下に列挙してみる。
NSString* aPath; // ここに起動したいアプリのフルパス
[[NSWorkspace sharedWorkspace] launchApplication: aPath];
(1) - (BOOL)launchApplication:(NSString *)appName
(2) - (BOOL)launchApplication:(NSString *)appName showIcon:(BOOL)showIcon autolaunch:(BOOL)autolaunch
(3) - (BOOL)launchAppWithBundleIdentifier:(NSString *)bundleIdentifier options:(NSWorkspaceLaunchOptions)options additionalEventParamDescriptor:(NSAppleEventDescriptor *)descriptor launchIdentifier:(NSNumber **)identifier
(1)は普通のやつ、(2)は「daemon-likeなアプリのために用意されている」と解説にあるメソッドで、showIconというパラメータはつまり「そのアプリが起動していることをDockにアイコンだしてユーザに報せるかどうか」。autolaunchは「マシンの起動時に自動的に起動させるかどうか」である。これは使えない。次の(3)、やたらパラメータの多いやつは期待出来そうだがどうか。
解説によれば、こいつのoptionという2番目のパラメータで、CarbonのlaunchControlFlagに渡すような指定を行えるようだ。ここで指定可能なのは、
enum {
NSWorkspaceLaunchAndPrint = 0x00000002,
NSWorkspaceLaunchInhibitingBackgroundOnly = 0x00000080,
NSWorkspaceLaunchWithoutAddingToRecents = 0x00000100,
NSWorkspaceLaunchWithoutActivation = 0x00000200,
NSWorkspaceLaunchAsync = 0x00010000,
NSWorkspaceLaunchAllowingClassicStartup = 0x00020000,
NSWorkspaceLaunchPreferringClassic = 0x00040000,
NSWorkspaceLaunchNewInstance = 0x00080000,
NSWorkspaceLaunchAndHide = 0x00100000,
NSWorkspaceLaunchAndHideOthers = 0x00200000,
NSWorkspaceLaunchDefault = NSWorkspaceLaunchAsync | NSWorkspaceLaunchAllowingClassicStartup
};
こんだけである。上から4番目にNSWorkspaceLaunchWithoutActivationというのがありますな。ではこれを指定すれば目的を達することができそうである。descriptor は AppleEvent パラメータとあるから、上の例えばNSWorkspaceLaunchAndPrint とかを使う際にプリントしたいファイルを指定したりするのに使うわけで、オレ達の目的には関係ない。……やれやれ、思ったより簡単でしたな……。
そうか? ほんぢゃその起動するアプリはどう指定するの? パラメータの最初のやつは launchApplication: やlaunchApplication:showIcon:autolaunch: なんかの (NSString *)appName と違って (NSString *)bundleIdentifier である。この bundleIdentifier 何だ? ……というのを次回の話にしよう。あ、念のために言っておくとこれに無理やりフルパスを渡すとプログラムはハングしちゃいますから。
(2006_04_28)
高橋真人の「プログラミング指南」第88回
〜Perlについて(34)〜
こんにちは、高橋真人です。
さて、今までsort、grepと説明してきて、今回は最後のmapです。
mapという演算子は、一般にforまたはforeachと似た目的のために使われます。foreach演算子はリストの各要素に対して処理を行うものですが、mapも同じようにリストの各要素に処理を加えます。
では何が違っているのかというと、それは記述の仕方です。まずは例を見てください。
--- 例1
@list = (0, 1, 2, 3, 4, 5);
foreach (@list) { print $_ * 2 }
--- 例2
@list = (0, 1, 2, 3, 4, 5);
map { print $_ * 2 } @list;
例1も例2も共に出力結果は同じで、0246810となります。
この例を見ると、foreachとmapではリストの渡し方が異なることが分かります。foreach演算子(for演算子も全く同じ形で使えます)では、ブロックの前にリストがあります。ちなみに、以前にも出てきたように、以下のような書き方をすることもあります。
foreach $item (@list) {
#$itemに対する処理
}
この書き方では、リストの各要素は一時的に変数$itemに入れられた形で使われますが、$itemの部分を省略した場合には$_が代わりに使われます。これが先に示した使い方です。
さて、この部分を見る限りでは両者の違いは単に構文の違いだけのように見えます。ところが実はこれは少し作為的でして、map演算子をこのような形で使うことは通常はありません。
mapも、今まで見てきたsortやgrepと同じように「リストを受けて、リストを返す」という仕組みを持っているので、仮に今回のような処理を行うのであれば、以下のような書き方をするのがより一般的です。
@list = (0, 1, 2, 3, 4, 5);
print map { $_ * 2 } @list;
これが、map演算子の使い方の自然な形です。少し分かりにくいかもしれませんが、print演算子はあくまでmap演算子が返したリストを出力しているということに注意しましょう。
ところで、連載の83回目の最後に、「リストを受けてリストを返す演算子」として、「map、grep、foreach」と書いていますが、これは、「map、grep、sort」の間違いでした。今さらですが訂正させていただきます。
では、もう少しmapについて見ていきましょう。
map演算子も、sort、grepと同じようにブロックを持ちます。このブロックの中で、$_経由で渡されるリスト内の各要素に対して処理を加え、ブロックの評価値(例によって、ブロック内の最後の式の値がそれになります)を返します。
よって、上記の例のようにリストの各要素をそれぞれ2倍したリストが返されるような処理ができるわけです。
ところで、前々回のsortの時にもお話ししたように、mapのブロック内で$_に加える処理は、そのまま元の値にも反映されます。(Cの関数における参照渡しと同じと考えてください)
@list = (0, 1, 2, 3, 4, 5);
@list2 = map { $_ *= 2 } @list;
print "@list\n";
print "@list2\n";
この例では、$_ *= 2 と、$_自体の値を変更しているために、mapの結果を受けている@list2だけでなく、元の@listの中身も(変更されて)同じになっていることが分かります。
とはいえmapは、sortの場合とは違いブロックの中で処理した値はそのまま新しいリストの要素として使われることが多いので、
@list = map { $_ * 2 } @list;
この例のように、@listの中身をそのまま入れ替えてしまえば結果的には余り影響はありません。ただ、中で何が起こっているのかは把握しておかないと、思わぬバグに見舞われて混乱することになるかもしれません。
ニュース・解説
今週の解説担当:小池邦人
● Carbon ドキュメント & サンプル & SDK ナビゲーション(2006/04/28)
【開発環境】
前号で木下さんも紹介されていましたが、WWDC2006の関連ウェブサイトが更新され、Leopard(Mac OS X 10.5)のプレビュー版が発表されることが正式に明記されました。今のところ、Leopardがどうなるかについてはほとんど情報が流れていませんので、どんな進化を見せてくれるのか、今からとても楽しみです。
http://developer.apple.com/wwdc/
それに加えて「Apple Design Awards 2006」の開催の告知と作品の募集も始まりました。皆さん、チャレンジしてみてはいかがでしょうか?
http://developer.apple.com/ada/
前回紹介した「Parallels Workstation 2.1」ですが、あれから2回改良があり、現在はβ5となっています。なにやら10万人以上のユーザがダウンロードして試しているとか! 最終β版ではUSBにも対応し(まだ色々と問題があるようですが...)フルスクリーンモードでは、ファスト・ユーザ・スイッチのような「画面がぐるりと回る」エフェクトにより、OSの切り換えが可能になったようです(笑)。完成までもう一息といった感じでしょうか?
【テクニカルドキュメント】
前回から4月28日の期間中、Apple社のDocumentationサイトには新規ドキュメントが13登録されました。「...Developer Note」関連のドキュメントは、ほとんどが内容の更新です。ただし、「Mac mini Developer Note」と「15-inch MacBook Pro Developer Note」は今回が最初の登録となります。また、J2SE 5.0に関するリリースノートとデベロッパ向け読み物がひとつ登録されています。
「RAM Expansion Developer Note」
「Mac mini Developer Note」(初版)
「15-inch MacBook Pro Developer Note」(初版)
「AirPort Developer Note」
「Audio Developer Note」
「Bluetooth Developer Note」
「FireWire Developer Note」
「PCI Developer Note」
「RAM Expansion Developer Note」
「Universal Serial Bus Developer Note」
「Video Developer Note」
「Hardware Developer Note Terms and Abbreviations」
「Mac OS X Server Administrator Topics」(PDFあり)
http://developer.apple.com/documentation/index-rev-date.html
「J2SE 5.0 Release 4 Release Notes 」(リリースノート)
http://developer.apple.com/releasenotes/
「Building an Open Source Universal Binary」(読み物)
http://developer.apple.com/opensource/buildingopensourceuniversal.html
前回から4月28日の期間中、新規テクニカルノートは3つ登録され、新規テクニカルQ&Aの方も3つ登録されました。TN1103では、Macintoshの固有情報を得るための方法が幾つか紹介されています。今回、シリアル番号を読み込むためのルーチンが初めて正式に紹介されました。対応しているのはMac OS X 10.3以降となりますが、Intel CPU版Macの場合は必ず10.4以降ですので、どんな機種でも間違いなくシリアル番号を読み込めることになります。また、QA1475では、ヘッダファイルに記されているAPI名や定数名を検索する方法が解説されています。TN2133、QA1474、QA1471については、前号の木下さんの記事も参考にしてください。
TN1103「Uniquely Identifying a Macintosh Computer」
TN2110「Identifying Java on Mac OS X」
TN2147「JNI Development on Mac OS X」(初版)
http://developer.apple.com/technicalnotes/index-rev-date.html
QA1475「Tips for searching Headers, APIs and ADC reference material」(初版)
QA1471「Enumerating fonts with ATS 」(初版)
QA1474「UnsupportedClass- VersionError With J2SE 5.0 Release 4」(初版)
http://developer.apple.com/technicalqas/index-rev-date.html
【サンプルソースコード】
前回から4月28日期間中、Apple社のSample Codeサイトには、新しいサンプルソースコードが2つ登録されました。「AudioDeviceNotify」は初めての登録となります。
「AudioDeviceNotify」(Audio関連)(初版)
「BlockedEventQueue」(Java関連)
http://developer.apple.com/samplecode/index-rev-date.html
【デベロップメント SDK】
前回から4月28日の期間中、Apple社のSDKサイトには新しいSDKがひとつだけ登録されました。「FireWire SDK for Mac OS X」の最新版です。SDKに含まれているすべてのサンプルソースコードがUniversal Binary化されているようです。
「FireWire SDK 22 for Mac OS X」(Universal)
http://developer.apple.com/sdk/
◇MOSAからのお知らせと編集後記は割愛します◇