MOSA Multi-OS Software Artists

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

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

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

2008-01-29

目次

  • 「「Wonderful Server Life」    第63回   田畑 英和
  • 小池邦人のCarbon視点でCocoa探求
  • ターミナルの向こうから      第18回  海上 忍 

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

■  〜新Xserve〜

 MacWorld開催前にMac ProとXserveの新モデルが発表されました。今回は新しくなったXserveについて取り上げてみたいと思います。

◇8コアに進化したXserve
 前モデルはデュアルコアのIntel Xeon 5100を2基搭載できましたが、今回のモデルチェンジではCPUが4コアのIntel Xeon 5400に変更になりました。CPUを2基搭載して8コアの構成を選択できるようになっていますのでパフォーマンスの向上が期待できます。OnlineのApple Storeでの標準構成は次のような仕様になっています。

・Xserve標準構成(359,800円)
  CPU:2.8GHz 4コア Intel Xeon 1基
  Memory:2GB(2 x 1GB)
  HDD:80GB SATA(7200rpm)
  グラフィック:ATI Radeon X1300

 このように標準構成では4コアになりますが、BTOでのオプションを選択すれば、2.8GHzまたは3.0GHzの4コアXeonを2基搭載できるようになっています。
 メモリスロットは8基用意されており、全てのスロットに4GBのメモリを使用すれば32GBまで拡張できるようになっています。ただし4GBのメモリを8枚用意するとなると非常に高価格(Apple Storeで32GBを選択すると価格が1,163,820円も上がる)になりますので、ここまでメモリを使用するのはかなり限られたケースになるかと思います。
 HDDは前モデルと同様にドライブベイが3基用意されており、シリアルATAまたはSASのドライブが使用できます。BTOでは1TBのドライブ(SATA)を3基使用すると3TBのストレージを実現することができます。さらに前モデルでも用意されていたRAIDカードがオプションで装備できますので、これを使用すればハードウェアによるRAID(JBOD/0/1/5)を構築することができます。
 前モデルから標準装備されるようになったグラフィックカードは新モデルでも標準装備になっており、BTOではグラフィックカードを省くこともできます。
グラフィックカードを省くと価格が若干(6,090円)下がります。Xserveはネットワーク上のほかのMacからリモート管理が出来ますので、必ずしもグラフィックカードは必要ありませんが、万が一ネットワークに問題が生じた場合にはリモート管理ができなくなりますので、いざというときに備えて標準構成のままグラフィックカードを搭載しておくのもよいでしょう。

 インターフェイスにも変更がありました。これまではフロントパネルにFireWire 400のポートが1基装備されていましたが、これがUSB 2.0のポートに変更になりました。前モデルでも新モデルでもリアパネルにもUSBポートが装備されてはいますが、スペースが限られておりメモリスティックなどを使用するとものによってはうまくささらなかったりしましたので、スペースに余裕のあるフロントパネルもポートが装備されたことでUSBデバイスは使いやすくなったのではないでしょうか。ただしこれまで装備されていたFireWire 400のポートは廃止され、リアパネルにはFireWire 800のポートが2基装備されています。その他のポートは、ギガビットEthernetのポートが2基とDB-9のシリアルポートが1基装備されています。

 拡張スロットはPCI Express 2.0に対応したものが2基用意されており、ライザーカードを使用すれば片方の拡張スロットではPCI-Xのカードを使用することもできます。拡張スロット用のカードとしては、SCSIカード、ギガビットEthernetカード、4GbのFibre Channelカードが用意されています。

 OSは昨年発売になったMac OS X Server v10.5 LeopardのUnlimitedクライアント版が付属します。サーバを構築する場合、同時に発売になったMac Proを使用するといった方法もありますが、この場合Mac OS X Serverは別途購入する必要がありますので、トータルコストバランスを考えればXserveでの運用のほうが有利な場合があります。もっともXserveはラックマウント用のサーバであり、奥行きもかなりありますので設置場所をあらかじめ考慮しておく必要があります。

◇次回はディレクトリサービス
 さて次回からはまたLeopard Serverについての解説に戻りたいと思います。様々なサービスがありますのでどこから始めていくか悩むところですが、まずはシステムの中核ともなるディレクトリサービスから始めていきたいと思います。実はLDAPによるアカウント管理、Kerberos/パスワードサーバによる認証など基本的な構成はあまりTiger Serverから変わっていないのですが、Leopardで新たに導入された標準/ワークグループ構成におけるディレクトリサービスの役割など、あらかじめよく分っていないと混乱しやすい部分などもありますので、変更点なども交えながら詳しく解説していきたいと思います。
                             次回へつづく

小池邦人のCarbon視点でCocoa探求(2008/01/25)

〜 既にあるものは使いましょう! 〜

今回は、アバウトウィンドウへのボタンや画像の配置、ボタンとアクションのリンク、記述したソースコードの解説などを行います。また、練習用に追加した不要なソースコード部分を外す処理も行います。

About.nibファイルに登録したAboutウィンドウは、そのままでは空っぽなので、お気に入り画像やコピーライト文字列、そしてウィンドウを閉じるときに使う「OK」ボタンなどを配置します。まずウィンドウを選択し、インスペクタのIdentityのClassをNSWindowのサブクラスである「NSPanel」に変更しておきます。続いてAttributeの方に戻り、使わない「Resize」や「Minimize」のチェックを外します。Titleの下の「Frame Name」に何らかの名称を代入しておくと、そのウィンドウをオープンした位置が自動で記憶されますが、アバウトはいつもスクリーンの中心に表示させる予定なので、このカラムへの名称代入は必要ありません。

まずは画像です。先んじてAboutに表示したいJPEG画像ファイルを用意して、Xcodeの ShinbunShi3プロジェクトの「Resources」グループに登録しておきます。本サンプルでは、Koike.jpg、About.jpg、Symmetry.jpgといった画像ファイルが用意されています。そうすると、これらの画像アイコンがInterface Builderのライブラリの「Media」タブに表示されますので、ここからドラッグ&ドロップでAboutウィンドウへ配置します。もし表示画像に枠が必要なら、インスペクタのAttributesで「Border」の種類を選択できます。これらの画像は最終的にはアプリケーションパッケージのResourcesフォルダに
格納され、nibファイルからアクセスされることになります。

ボタンの配置は簡単です。Interface Builderのライブラリを「Objects」タブに切り替え、そこからボタンオブジェクトをドラッグ&ドロップで好みの位置に配置したら、インスペクタのAttributesのTitleに「OK」を代入します。Carbonで、Returnキーを押す事で反応するデフォルトボタンを作るのには、AttributesのTypeを「Default」に設定すればOKでした。しかし、Cocoaのボタンではそれに準じる設定がありません。どうすれば良いのかとしばらく悩んだのですが(笑)「Key Equiv.」にReturnキーを入力すれば良い事に気がつきました。これで表示も青色に変わります。つまり、Carbonで言うところの
Cancelボタンであれば、ここにEscキーを入力しておけば良いわけです。

続いて、OKボタンのアウトレットをFile’s Owner(AboutController)の_okButtonに設定(リンク)する作業と、 ボタンのターゲット・アクション(押されたときに実行されるメソッド)をAboutControllerのcloseAbout:に設定する作業を行います。リンク対象となるアウトレットはAboutController.hに記述されている…

IBOutlet id _okButton;

です。Carbonで言えば、そのボタンのControlRefがこの変数に代入されると考えればOKです。ターゲットアクションの方は、AboutController.hに記述されている…

- (IBAction)closeAbout:(id)sender

です。 Carbonの場合には、ボタンにcommand(OSType)を設定でき、CarbonEventでそれを判別することでターゲットとなる処理ルーチンを実行するのですが、Cocoaでは、そのルーチンを直接ボタンに教え込む事ができると考えれば良いでしょう。さっそくリンク作業を行ってみます。

OKボタンを選択してインスペクタを表示します。ConnectionsのSent Actionsにある「selector」の右端の丸をドラッグします。すると「青い線」が表示されますので、引き延ばしてその先頭をFile’s Owner(青い立方体)アイコンに重ねます。そこでマウスを離すと、近くに「closeAbout:」と「showWindow:」という2つのメソッドが表示されますので、closeAbout:の方を選択します。これでアクションのリンクが完了しました。

続いて、File’s OwnerのConnectionsを表示します。Outletsの「_okButton」から線を引いてウィンドウ上のOKボタンにリンクします。同様に、Outletsの「window」の方は、Aboutウィンドウのアイコンにリンクします。これで両アウトレットのリンクが完了しました。こうしたオブジェクト間の線によるリンクは、インスペクタからだけではなく、オブジェクトをControlキーを押しながらマウスクリックすることでも可能です。

上記のアウトレットやアクションのリンク作業は、About.nibファイルがXcodeのプロジェクトに登録されていないと行えません。また、 アウトレットのwindowをリンクし忘れると、AboutController(WindowControllerのサブクラス)が自分の担当するウィンドウをnibファイルから読み込めなくなりますので(表示できない)注意してください。

ところで、今回用意した_okButtonアウトレットの実際の用途はありません(単にリンクの練習用)。また、 ウィンドウを閉じるアクションのcloseAbout:の方は、NSWindowクラスの以下のメソッドで代用できます。

- (void)performClose:(id)sender

これは、ファイルメニューの「閉じる」が選択された時のアクションでして、そのメッセージは現在のフロントウィンドウに渡ります。ですから、OKボタンのselectorアクションをこちらに変更すれば、closeAbout:とまったく同じ結果を得られます。このアクションへリンクするには、selectorからの線をFirst Responder(赤い立方体)アイコンの方へ延ばし、表示されたアクションの中からperformClose:を選択すればOKです。

そんな訳で、NSWindowControllerのサブクラスとして用意したAboutControllerクラスが不必要となりました。そこで、AboutControllerクラスを使わなくてもOKな様に、nibファイルとソースコードを若干修正します。
まずは、About.nibのFile’s OwnerのClassをAboutControllerからNSWindowControllerに変更し、続いてApplicationConroller.hの内容を…

@interface ApplicationConroller : NSObject
{
    AboutController *_aboutController;
}

から

@interface ApplicationConroller : NSObject
{
    NSWindowController *_aboutController;
}


へと修正します。そして次に、ApplicationConroller.mの内容を…

- (IBAction)openAboutWindow:(id)sender
{
    if( ! _aboutController )
        _aboutController=[[AboutController alloc] init];
    [[_aboutController window] center];
    [_aboutController showWindow:self];
}


から

- (IBAction)openAboutWindow:(id)sender // Aboutウィンドウを表示させるメソッド
{
    if( ! _aboutController ) //  アバウトウィンドウは最初に一度だけ作成される
    {
        _aboutController=[ [NSWindowController alloc]
                    // NSWindowControllerクラスのインスタンス化
                                     initWithWindowNibName:@"About"];
                    // Aboutウィンドウを指定nibから読み込みNSWindowController管理下に
    }
    [[_aboutController window] center]; // Aboutウィンドウを中心位置へ移動
    [_aboutController showWindow:self]; // Aboutウィンドウを表示する
}


へと修正します。最後にプロジェクトから、AboutController.hとAboutController.mを外し(削除)てしまえば、修正作業は完了です。

次回は、「しんぶんし 3」で必要とされるだろうデータ構造(モデル・オブジェクト)について考えてみます。基本的には、複数の画像ファイルを管理するのに必要とされるデータ構造です。本連載で作成したプロジェクトファイルは、MOSA Exchangeに順次アップロードされています。今回分の名称は「ShinbunShi3_08_01_25.zip」です。

つづく                                

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

〜 Yet Anotherなテキスト処理系を考える (2)〜

 前回は、GhostScriptというアプリケーションの概要について説明しました。今回は、日本語処理との関係と、GhostScriptとの「対話」について取り上げます。

・GhostScriptと日本語処理の関係
 フリーなPostScript互換インタープリタとして開発がスタートしたGhostScirptは、当初日本語を扱えませんでした。そもそもPostScriptのType1フォントフォーマットは欧文を前提としており、扱えるデータが1バイト256文字種に制限されていたことが理由です。有志ユーザの手により日本語化も行われていましたが、正式に扱えるようになったのはコンポジットフォントをサポートしたバージョン3の代です。
 それからしばらくの間は、コンポジットフォント(バージョン5からはCIDフォントも)を使うことで日本語に対応してきましたが、GS-CJKプロジェクトの働きにより、CIDフォントの扱いが簡略化されるとともに、TrueTypeフォントがサポートされました。種類が多く入手しやすいTrueTypeフォントのサポートにより、GhostScriptの日本語対応は格段に向上したといえます。
 上記の経緯から、最新バージョン(v8.61)のGhostScriptはデフォルトで日本語に対応していますが、巷ではいまだ「日本語版」と銘打ったパッケージが配布されています。これは、日本語用のフォントマップなど、日本語処理に必要だがGhostScriptの標準配布物には含まれないリソースをパッケージングしたものです。フォントの設定には興味がない、とりあえずPostScript互換インタープリタを試せればそれでいい、という場合には、前回も紹介した「GPL/ESP Ghostscript 8.15.4 for MacOSX 10.5 (ppc/intel)」をインストールすればOKです。

http://www2.kumagaku.ac.jp/teacher/herogw/index.html

・なぜMac OS XでGhostScript?
 Mac OS XでGhostScriptを必要とする場面は、大きく分けて2つあります。
 その1つが、LaTeXで作成したPostScriptファイル(.tex → .dvi → .ps)の出力です。Mac OS Xの描画/印刷エンジンQuartzは、フォント名だけでなくフォントデータそのものを埋め込んでプリンタへ送信しますが、LaTeXで作成したPostScriptファイルのようにフォントデータを持たないものを処理するときには、PostScriptインタープリタが必要となります。
 しかし、Mac OS Xでこの役割を担うはずのPSNormalizer.framework(およびフロントエンドのpstopdfコマンド)は、2バイト文字に対応していません。処理対象外のフォントはすべてCourierに置換されてしまうため、Ryumin-LightやGothicBBB-Mediumといった日本語フォントの部分は、意味不明となります。それが、GhostScriptを必要とする理由です。
 もう1つが、前回解説した「印刷時のフィルタ」です。この場合GhostScriptは、プリンタ記述言語や印刷システム(CUPS)へ橋渡しするドライバとしての機能を果たします。このときは、ユーザサイドがGhostScriptの存在を気にかける必要はほとんどありません。

・GhostScriptの使い方
 能書きが多くなってしまったので、肩慣らしにGhostScriptと「対話」してみましょう。前述のGhostScriptパッケージをインストールすると、「gs」コマンドがインストールされるので、ターミナルから「gs」を実行します。すると、バージョン名などが表示されたあとに、次のようなプロンプトが表示されるはずです。

- - - - -
GS>
- - - - -


 これが、GhostScriptのシェルです。ここへPostScriptのコードを入力すれば、GhostScriptが処理を行います。PostScriptは逆ポーランド記法の言語ですから、「3+4」の計算は「3 4 add =」のような要領で行うことになります。

- - - - -
GS>3 4 add =
7
- - - - -


 足し算だけでは味気ないので、簡単な絵を描いてみましょう。ただし、今回利用しているGhostScriptは、出力デバイスとしてQuartzをサポートしていないので、X11の描画機能を利用します。X11.appを起動し、そちらのターミナル(xterm)から「gs -sDEVICE=x11」としてGhostScriptを起動します。現れた真っ白なウインドウが、GhostScriptのシェルから実行したコマンドの出力先となります。
 次に示すコマンドは、X座標=300 / Y座標=400の位置に、半径200ポイントの黒塗りの円を描きます。あとはPostScriptプログラミングの領域の話となりますが、正方形や正三角形を正確に描くときなど意外に重宝する(画像ファイルを出力先に指定できます)ので、お手すきのときに調べてみてはいかがでしょうか。

- - - - -
newpath
300 400 200 0 360 arc fill
- - - - -

ニュース解説   MOSAic

★★★ 開発関連のニュースはwebに掲載中 ★★★
http://www.mosa.gr.jp/?page_id=1017

・12月のニュース
http://www.mosa.gr.jp/?p=1476

◇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.