MOSA Multi-OS Software Artists

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

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

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

2006-06-06

目次

  • 「Wonderful Server Life」      第5回  田畑 英和
  • 藤本裕之のプログラミング夜話 #92
  • 高橋真人の「プログラミング指南」  第90回
  • ニュース・解説                小池 邦人

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

 さてさて、いよいよMac OS X Serverのリモートインストールを実行する方法について解説します。前回はインストール対象のマシンをインストールディスクから起動するところまでを解説しました。

□「サーバアシスタント」でインストール対象のマシンを選択
 次の手順としては、ネットワーク上の別のMacにインストールしたサーバ管理ツールの「サーバアシスタント」を起動します。このツールを使ってリモートでMac OS X Serverのインストールを実行するわけですが、起動すると次の3つのオプションが選択できます。

・リモートサーバにソフトウェアをインストールする
・リモートサーバを設定する
・ファイルまたはディレクトリレコードに設定情報を保存する

 この中から「リモートサーバにソフトウェアをインストールする」を選択します。するとネットワーク上でインストールディスクから起動中のマシンを自動的に検出して一覧表示します。インストールディスクから起動中のマシンがネットワーク上に複数存在した場合にはすべてのマシンが一覧表示されます。
 1台のマシンだけをインストールする場合には一覧に1台分のマシンしか表示されませんので確実にマシンを特定できますが、複数のマシンが表示されている場合にはまずは一覧から各マシンを特定する必要があります。
 一覧には各マシンの「IPアドレス」、「ホスト名」、「MACアドレス」などが表示されます。インストールディスクから起動中のマシンはDHCPによってIPアドレスが割り当てられるため、IPアドレスからマシンを特定するのは難しいです。そこで一覧からマシンを特定するにはMACアドレスが重要になります。つまり、あらかじめインストール対象のマシンに搭載されているEthernetインターフェイスのMACアドレスを調べておく必要があります。
 MACアドレスの調べ方ですが、たいていマシンのどこかに書かれています。どこに書かれているかは機種によって異なりますが、Power Mac G5ではサイドパネルを外した内側、Xserveの場合は背面、iMacではスタンドの底にMACアドレスが書かれています。実際には「Ethernet No.」と表記されていたりもしますが12桁の英数字がMACアドレスですので、すぐに調べることができると思います。マシンによっては筐体をひっくり返す必要がありますので、できれば電源を入れる前に調べておきましょう。

□シリアル番号での認証
 MACアドレスが分かれば、それを手がかりに「サーバアシスタント」に表示された一覧からマシンを特定して「続ける」ボタンをクリックします。するとパスワードの入力を求められるのですが、このとき使用するパスワードはインストール対象となるマシンのシリアル番号(ハードウェアのシリアル番号)です。今度はマシンのシリアル番号を調べる必要があるのですが、シリアル番号もMACアドレスと一緒にマシンのどこかに書かれています。ですので、MACアドレスを調べたときには一緒にシリアル番号もメモしておくのがよいでしょう。

・Appleのハードウェア製品のシリアル番号の確認方法
http://docs.info.apple.com/jarticle.html?artnum=303372

 パスワードはシリアル番号の最初の8桁を使用します。このとき大文字小文字を区別しますのでパスワードを入力するさいは注意してください。じつは正確なパスワードを入力しても認証に失敗する場合があります。これは、マシンを修理したさいにロジックボードを交換するとシリアル番号がクリアされる場合があるためです。こういったシリアル番号が設定されていない状態のマシンではパスワードとして「12345678」を使用します。

□インストールの実行
 パスワード認証が完了すればサーバの言語を選択します。言語は英語、日本語、フランス語、ドイツ語から選択できます。次に重要な情報やソフトウェア使用許諾が表示され、使用許諾に同意するとインストール先のボリュームを選択する画面が表示されます。「サーバアシスタント」では既存のボリュームを選択するだけですので、パーティションを分けてインストールを行いたい場合には、あらかじめパーティションを分割しておく必要があります。
 インストール先のボリュームを選択すれば後はいよいよリモートインストールの実行です。インストールを実行するときにはボリュームを削除してからインストールを行うこともできます。インストール中は進捗状況が「サーバアシスタント」の画面上に表示されます。CD-ROMからインストールする場合は途中でディスクの交換が必要になりますが、DVDの場合は一発でインストールできます。

 というわけで、リモートインストールについて一通り説明してきました。OSのインストールには他にもいくつかの方法がありますので、次回も引き続きインストールについて解説したいと思います。

つづく

藤本裕之のプログラミング夜話 #92

 やれやれ、こないだまで「今年はいつまでも寒くて」とか言ってたと思ったら今日など蒸し暑くてたまらんではないか。おまけに(全然おまけぢゃない)我らがベイスターズは不動の最下位だし。そういえば今月22日はMOSAの総会である。木曜日の昼間だから繰り合わせる万障も多からんと思うが(だから「万障」なんだけどさ)みなさん、特に若い人はぜひ出席して建設的な意見を開陳してくださいまし。

そんなことはさておき、前回まででなんとか見つけた「バックグラウンドでアプリケーションを起動する by 天才桜木……ぢゃなかった Cocoa」のあのやり方は、しかしその前にオレがさんざんくさした Carbon でのやり方と大して変わらないくらい面倒くさいのだった。このままではいかなオレでも Cocoaを使え、Carbon よりラクだ、と強弁はできない。……うけけ、しかしここに一発、AppleScript という隠し球があるのだった。

突然話は変わるが、皆さんは AppleScript を使ったことがあるだろうか。あれを使ったことがあるヒトなら誰でも知ってる構文(というのも大げさだが)にこういうのがある。

tell application "なんとかかんとか"
   launch
end tell


 これをコンパイルして実行すると、「なんとかかんとか」というアプリケーションが起動する。おあつらえむきにバックグラウンドで。ちうか、AppleScript の世界では launch されることと、フォアグラウンドに引っ張り出されることは完全に分けて考えられており、Cocoa の

[NSWorkspace sharedWorkspace] launchApplication: aPath];

と同じことをやろうとすると、

tell application "なんとかかんとか"
   launch
   activate
end tell

と1行増えるのである。ま、それはさておき、上の方のAppleScriptをCocoaから実行するのはとっても簡単なのだ。

まずは以下のようにちゃんと目的のアプリを起動できる(そしてactivateはしない)スクリプトを作る。あ、ここではフルパスからアプリ名を抽出するところは端折ってるが、つまりは lastPathComponent を取ってそいつの拡張子を省けばいい。

NSString* appName;    // ここにアプリ名が入ってるとする。
NSString* aScriptString =
NSAppleScript* aScript = [[[NSAppleScript alloc]
     initWithSource: [NSString stringWithFormat:
     @"tell application \"%@\"\nlaunch\nendtell\n", appName]] autorelease];
【編集部注↑】
 次にこいつをコンパイルして実行する。

NSDictionary*    errorInfo; // もしエラーが起きればここにその情報が返る。
if([aScript executeAndReturnError: &errorInfo] != nil){
      // 正常ならNSAppleEventDescriptorが返る。この処理ではそれを使って
      // なんかやる必要はない。
}else{
      // なんかのエラーが起きた。
}


 さらに図に乗って、起動したアプリをフォアグラウンドに持ってくる場合にもこいつを使えば(上のスクリプトの書式定数をもう一種、launchのあとにactivateを行うヤツを作っておき、パラメータによって使い分ければいい)、他のアプリケーションの起動という処理が一本化してすっきりする。
 もちろんこれを使った起動には、直接 Carbonの LaunchApplication() などをコールする場合に比べて時間がかかるだろうが、アプリケーションの起動をループの中で行って1秒間に何個起動出来るかを競うようなプログラムを書くわけぢゃなし。ユーザにとっては気にならない程度の差であるはずだ。え、CarbonからだってAppleScript は使えるだろうって? ……そのご意見は聞こえないふり(笑)。
(2006_06_02)
【編集部注】
このソースにはバックスラッシュが必要ですがメルマガでは円記号で記述します。
円記号も場合によっては欠落する場合がありますので全角円記号で記述すると

  @"tell application ¥"%@¥"¥nlaunch¥nendtell¥n", appName]] autorelease];


となります。『¥』をバックスラッシュに置き換えてご利用ください。

高橋真人の「プログラミング指南」第90回

UNIXとしてのMac OS X

〜Perlについて(36)〜

 こんにちは、高橋真人です。
 さて、Perlネタの最後のお話として解説している、リストデータをmap、grep、sortなどの演算子で順に受け渡しながら処理していくやり方ですが、前回までで個々の技術の解説を終え、ようやく全体を説明することができるようになりました。
 では、スクリプトを最初から見ていきます。(スクリプト全体は連載の第84回に載ってます)

#0: 管理ID
#1: 基本語
#2: よみ
#3: 品詞
#4: ルール種別
#5: 対象語
#6: 使わない

 まず先頭部分はコメントで、対象とするデータがタブ区切りによって構成されているために、その内訳を記述しています。
 このスクリプトは実際の仕事で使ったものと言いましたが、処理する対象のデータは、とある日本語処理システム用の辞書データです。大体以下のような感じになっています(一部手を入れて加工してあります)。

MOD 転換社債 てんかんしゃさい 1100 EF CB F
MOD 電荷結合素子 でんかけつごうそし 1100 EF CCD F
MOD 電気自動車 でんきじどうしゃ 1100 EF EV F
ORG 電源開発 でんげんかいはつ 1100 EF 電発 T
MOD 電子掲示板 でんしけいじばん 1100 EF BBS F
ORG 電子掲示板 でんしけいじばん 1100 EF BBS T

 各項目の間にあるはタブを表しています。両脇に空白が入っていますが、読みやすくなるように入れただけで、実際のデータにはありません。
 簡単にデータの内容を解説します。まず5項目めはコメントにあるようにルール種別を表しています。ここで言うルールとは「データの性質」とでもとらえておいてください。上に挙げた例ではすべてこれが「EF」となっていますが、ルールがEFの場合には、6項目めの「対象語」が2項目めの「基本語」に対する略語を表すという決まりになっています。つまり、2番めのデータを例にすると、「CCD」は「電荷結合素子」の略語を表している、ということです。
 また、1項目めですが、ORGはオリジナルデータ、MODは修正を加えたデータであることを意味します。というのは、この辞書データの管理方針として、オリジナルのデータを直接修正はせず、修正のある場合にはMODという「管理ID」を付けて上書きをする、ということになっているからです。
 3、4項目めがそれぞれよみがなと品詞コードを表しているのは容易に読み取れるでしょう。
 最終項目は「使わない」となっていますが、ここがTである場合にはこの項目は使用しないことになります。前述したように、MODによって上書きされたORGのデータは使用しないのでTになっているわけです。

さて、処理の部分です。肝心のmap、sort、grepによるリスト処理部分は次回に回すとして、今回はそれ以外の部分についてです。

$file = $ARGV[0];
$file .= ".sort";

open OUT, ">$file" or die;
MacPerl::SetFileInfo('YoED', 'TEXT', $file);

map {} sort {} map {} grep {} map {} <>;

MacPerl::Answer("Done");
MacPerl::Quit(2);


 map、sort、grepの部分の細部を省略すると、全体はこのような形になります。
 まず、「コマンド引数からファイル名を取り出す」というのが最初の部分ですが、ここではMacPerlを使ったので、MacPerlで作ったドロップレットにドロップされたテキストファイルが$ARGV[0]を経由してわたってきます。
 ファイルがわたってくるとは言っても、あくまでPerlはUNIXの世界の言語なので、実際にわたってきているのはファイルのフルパスを表す文字列です。
 次の行では書き出し用のファイル名を設定しています。単純に’.sort’という拡張子(?)を付け足しているだけです。.= という演算子は、C言語で使われているのと同じ用法です。Cでの a += n が a = a + n と等価になるように、a .= n は a = a . n と同じ意味となります。ドット演算子はPerlでは文字列を結合する演算子ですから、文字列aの後ろに文字列nが結合されるわけです。
 さて、出力ファイルの名前が決まったので早速開きます。既に説明しているように、出力ファイルを開いて(なければ作成してから)、OUTというファイルハンドルに接続しています。
 map、sort、grepの行を除くと、残りの3行にはすべてMacPerl::というprefix(前置詞)が付いています。これは、MacPerl独自の拡張機能を表しています。
 まず、SetFileInfoですが、これはファイルのクリエータとタイプを設定します。ここでは私がOS 9時代に愛用していたYooEditというフリーのテキストエディタのファイルになるように設定をしてあります。
 Answerは、ダイアログボックスを表示し、引数の文字列をメッセージとします。
 Quitは、MacPerlを終了させます。MacPerlでは、スクリプトをドロップレット形式で保存しても、実際の処理を行うのはMacPerl本体の方なので、スクリプトの処理が終了してもMacPerl本体は立ち上がったままとなります。デバッグしている時にはこの方が都合がよいのですが、最終的にスクリプトが完成して単独のドロップレットとして使う場合には、処理と同時に終了してくれた方が好都合なのでQuitを使って終了させます。
 余談ですが、MacPerlにはドロップレットの中にPerlの実行環境を同梱して、MacPerlのインストールされていない環境でもスクリプトを動かせるようにする仕組みが備わっています。
 終了する条件のコントロールなどを引数を変えることで調整できますが、詳しくはMacPerlのオンラインヘルプを参照してください。

ニュース・解説

 今週の解説担当:小池邦人

● Carbon ドキュメント & サンプル & SDK ナビゲーション(2006/06/02)

【開発環境】

「Xcode 2.3」が登場しました。v2.1から差し替えて利用していますが、これといった問題は発生していません。当方の環境では、プロジェクト内の文字列全置換で取りこぼしが発生する現象が起こっていたのですが、残念ながらまだ直っていません。日本語コメントなどが何か悪さをしているのでしょうか?

今回は、久しぶりにMOSA会員専用掲示板(MOSAdeBB)に登録されたスレッド内容を紹介します。現在、BBSにおけるスレッド数は100を越え、書き込みも600近くなされています。まだMOSAdeBBを覗いたことのない会員の方は、ぜひ一度お立ち寄りください。

http://www.mosa.gr.jp/mosadebb/modules/newbb/

【談話室】フォーラムから…

「Intel CPU版 iMacの外部HDからの起動」
「Cocoaテキスト関連のドキュメント要約を登録」
「WWDC 2006」
「会員オフ会「MOSAメンバーズカフェ」(4/12)開催!」
「オープンソースカンファレンス2006 Tokyo/Spring」
「インテルソフトウェア開発製品 Mac OS X版」
「ちょっと感心した90度映像回転!」
「ADCからアンケートメール」
「五番街のアップルストア」
「MOSA WWDC2006ツアー」
「新しいMacBookを見てきました!」
「Xcode 2.3が登場!」
「MOSAメンバーズカフェWESTおじゃましました」
「Quartz Debugerの「Show Beam Sync Tools」」

【プログラミング技術Q&A 中・上級】フォーラムから…

「実行時に追加したコントロールにTabキーでフォーカスが渡らない」
「AppleEventターゲットが落ちたことを検出できますか?」
「画像アイコン作成用のAPIはどこ?」
「未定義関数の参照に警告フラグが出るようにしたいが?」
「ATSUIでTruncationを使ったときの(…)の位置」
「ドライバ(KEXT)からIOHIDPointingライブラリの使い方を教えてください。」
「Carbon Mach-O でのネットワークアプリケーション開発について」
「CocoaJavaアプリをUniversal Binary化したいのですが」
「PowerPlantを使ったアプリをUniversalBinary化しようとしています」
「Quartzで印刷するときの座標の原点は?」
「Front Rowでのリモートコントロール」
「Localizable.stringsファイルのエンコーディング」
「Info.plstで指定するデータ形式名のローカライズ」
「Pasteboardへコピーする画像の形式は」
「HICustomViewでDrag & Drop」
「Mac OS X 10.2.8で起動できない?」
「共有ボリュームの区別」
「Window Size情報のAuto Positionの謎」

【プログラミング技術Q&A 入門・初級】フォーラムから…

「Carbonアプリのサンプルコード」
「MIDIアプリ作成のヒントを知りたい」
「NSPopupButtonをプログラムで初期化」
「Interface BuilderのNSTableViewの操作」
「メニューバーのアプリケーション名変更」
「PowerPlantのLPeriodicalのようなクラスはありますか?」
「FireWire(USB)接続のハードディスクをアンマウントする方法」
「BackGroundOnlyアプリでツールパレットの実現」
「ヘッダファイルの変数定義の方法について」
「QuickTimeのアップデート内容」
「NSBezierPathで線の色を指定する」
「NSLog()は動作するけどプログレスバーは動かない…」
「Cの関数にメソッドのポインタを渡す方法」
「MyDocumentのポインタを得たい」
「windowが選択された時にコールされるbecomeMainWindow」
「CarbonとCocoa」
「16進数で表示、入力」
「InterfaceBuilderでFileOwnerを変更したいがうまくいかない」
「XCODEの参考資料について」
「バイナリデータ(配列)を保存する方法」
「NSTableViewのcolumnにチェックボックスとテキストを混在する方法」
「Window(View)上のオブジェクトポインタをプログラムで取得する方法」
「アプリのシリアルナンバー」
「NSTableView内のNSSliderCellなどの変更反映」

【テクニカルドキュメント】

前回から6月2日の期間中、Apple社のDocumentationサイトには新規ドキュメントが多数登録されました。前号で木下さんも紹介されていましたが、5月23日付けで、今までのDocumentationサイトが「Guides」と「Reference」の二つに分かれました。Referenceには数多くの初版ドキュメントが登場していますが、数が多すぎるため、今回は掲載を省略します。ただし、はやくも5月31日には追加ドキュメントが5つ登録されています。

「CPlusTest Reference 」
「Kernel Framework Reference」
「KPI Reference」
「Mac OS X Man Pages」
「Miscellaneous User Space API Reference」

http://developer.apple.com/reference/index-rev-date.html

Guidesの方にも数多くのドキュメントが登録されました。ただし、大部分は今までの内容のマイナーチェンジです。今回は、その中で初版と内容が大幅変更になったドキュメントだけをピックアップしました。 また新規のリリースノートが12、デベロッパ向け読み物が3つ登録されています。

「Cocoa Application Tutorial Using Objective-C」(PDFあり)
「HBA Device Driver Programming Guide」(初版)(PDFあり)
「Network Services Location Manager (Legacy)」(PDFあり)
「OpenGL Programming Guide for Mac OS X」(PDFあり)
「Pasteboard Programming Topics for Cocoa」(PDFあり)
「Secure Coding Guide」(初版)(PDFあり)
「Shell Scripting Primer」(初版)(PDFあり)
「Strings Programming Guide for Cocoa」(PDFあり)
「Strings Programming Guide for Core Foundation」(PDFあり)
「Xcode 2.3 User Guide」(日本語訳PDF有り)

http://developer.apple.com/documentation/index-rev-date.html

リリースノート

「AppleScript Release Notes」
「AppleScript Release Notes (Mac OS X 10.3 and earlier)」
「Carbon Developer Tools Release Notes」
「Developer Documentation Release Notes for Xcode 2.3」
「GCC 3 Release Notes」
「GCC 4 Release Notes」
「GDB Release Notes」
「Interface Builder 2.5.4 Release Notes」
「J2SE 5.0 Release 4 Release Notes」(PDFあり)
「Xcode 2.3 Release Notes」
「Xcode Build Settings Release Notes」
「Xcode Expert Preferences Release Notes」

http://developer.apple.com/releasenotes/

「Introducing Xcode 2.3」(読み物)

http://developer.apple.com/tools/xcode/newinxcode23.html

「Newest Features of the ADC Reference Library」(読み物)

http://developer.apple.com/macosx/newinreflibrary.html

「Building a Universal Binary Framework from Open Source」(読み物)

http://developer.apple.com/opensource/opensourceuniversalframework.html

前回から6月2日の期間中、新規テクニカルノートと新規テクニカルQ&Aはひとつも登録されませんでした。珍しいですね(笑)。

http://developer.apple.com/technicalnotes/index-rev-date.html

http://developer.apple.com/technicalqas/index-rev-date.html

【サンプルソースコード】

前回から6月2日の期間中、Apple社のSample Codeサイトには、新しいサンプルソースコードが16登録されました。その中で「LiveVideoMixer2」だけが初版となります。今回は、JavaからQuickTimeを活用するサンプルが数多く再登場しています。

「CreatePictFile」(Java&QuickTime関連)
「CustomMedia」(Java&QuickTime関連)
「DukeMovie」(Java&QuickTime関連)
「ImportExport」(Java&QuickTime関連)
「KeyboardController」(Java&QuickTime関連)
「MovieCallbacks」(Java&QuickTime関連)
「MovieTextFinder」(Java&QuickTime関連)
「Music」(Java&QuickTime関連)
「PlayMovie」(Java&QuickTime関連)
「PlaySound」(Java&QuickTime関連)
「PlayTune」(Java&QuickTime関連)
「TimeCallbackDemo」(Java&QuickTime関連)
「mageProducing」(Java&QuickTime関連)
「LiveVideoMixer2」(QuickTime関連)(初版)
「ImageProducing」(Java&QuickTime関連)
「SoundMemRecord」(Java&QuickTime関連)

http://developer.apple.com/samplecode/index-rev-date.html

【デベロップメント SDK】

「Xcode 2.3」
「Computer Hardware Understanding Development (CHUD) Tools version 4.3.3」

http://developer.apple.com/tools/download/

 

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

 

MOSA Developer News   略称[MOSADeN=モサ伝]
      記事投稿受付 http://www.mosa.gr.jp/topics/mdn-toukou.html
Apple、Mac OSは米国アップルコンピュータ社の登録商標です。またそのほかの各製品名等はそれぞれ各社の商標ならびに登録商標です。
このメールの再配信、および掲載された記事の無断転載を禁じます。
特定非営利活動法人MOSA  http://www.mosa.gr.jp/
Copyright (C)2006 MOSA. All rights reserved.