MOSA Multi-OS Software Artists

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

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

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

2007-03-27

目次

  • 「Wonderful Server Life」       第43回  田畑 英和
  • 藤本裕之のプログラミング夜話   #111
  • 高橋真人の「プログラミング指南」  第109回

Wonderful Server Life」  第43回  田畑 英和

  〜OpenDirectory DHCPクライアント編〜

 Mac OS X Server(およびMac OS X)のアップデートがリリースされました。今回リリースされたアップデートでバージョンがv10.4.9になりました。Tiger向けのアップデートがまだリリースされるかどうかは分りませんが、Leopardのリリースも控えていることから、最終アップデートとなるかもしれません。
 リリースされたアップデートですが、まずPowerPC版とUniversal版に分かれています。Mac OS XはPowerPC版とIntel版の2つに分かれており、アーキテクチャごとにアップデートも分かれていますが、Mac OS X Serverはv10.4.7から、PowerPCとIntelの両方に対応したUniversal版が存在します。
 前回のアップデート(v10.4.7)で、Universal版のアップデートは直前のバージョンからのアップデートだけでした。今回のアップデート(v10.4.8)からは、PowerPC版とUniversal版の両方で、直前のバージョンからのアップデートと、v10.4.0以降のどのバージョンからもアップデートできるComboアップデートがリリースされています。
 ここで注意が必要なことがあるのですが、たとえPowerPC搭載のMacを使用していたとしても、そこにUniversal版のMac OS X Serverをインストールしている場合、アップデートはPowerPC版ではなくUniversal版をインストールする必要があります。つまり、どのアーキテクチャのCPUを使用しているかではなく、どのOSをインストールしているかで、使用するアップデートが決まります。ソフトウェア・アップデートが利用できる環境では、適切なアップデートが自動的に選択されますので、ソフトウェア・アップデートを使ったアップデートが確実でしょう。
 今回のアップデートでは様々な修正が行われていますが、Xsan関連の修正なども含まれています。また、単体でもリリースされていた夏時間に関する変更が含まれていたり、セキュリティに関する修正も行われています。Panther向けにはセキュリティの修正のみのアップデートも公開されました。

・Mac OS X Server 10.4.9 Combo Update (PPC)
http://www.apple.com/jp/ftp-info/reference/macosxserver1049comboupdateppc.html
・Mac OS X Server 10.4.9 Combo Update (Universal)
http://www.apple.com/jp/ftp-info/reference/macosxserver1049comboupdateuniversal.html
・Mac OS X Server 10.4.9 Update (PPC)
http://www.apple.com/jp/ftp-info/reference/macosxserver1049updateppc.html
・Mac OS X Server 10.4.9 Update (Universal)
http://www.apple.com/jp/ftp-info/reference/macosxserver1049updateuniversal.html
・Security Update 2007-003 (10.3.9 Server)
http://www.apple.com/jp/ftp-info/reference/securityupdate20070031039server.html
・Security Update 2007-003 (10.3.9 Client)
http://www.apple.com/jp/ftp-info/reference/securityupdate20070031039client.html

◇LDAP設定

 今回は、クライアント側でのLDAPの設定について解説します。LDAPの基本的な設定方法については、第24回の連載ですでに解説済みですが、今回はDHCPを利用したLDAPの設定について解説したいと思います。
 第24回で解説した方法では「ディレクトリアクセス」を使ってLDAP(つまり
OpenDirectory)のサーバのアドレスを手動で設定しました。この方法ですと、ディレクトリサービスを利用するすべてのクライアントで、同様の設定を繰り返す必要があります。ですが、前回解説しましたDHCPの機能を使えば、サーバ側だけでLDAPの設定を行い、クライアントの設定を自動化することができます。

・「ディレクトリアクセス」でのLDAPの設定
http://homepage.mac.com/htabata/MXS10.3/img/DA/DA_06.png

 DHCPであらかじめLDAPのサーバアドレスを設定しておいた場合、クライアント側では手動で「ディレクトリアクセス」を設定することなく、自動的にLDAPの設定が行われます。つまり、LDAPサーバのアドレスを自動的に検出することができるわけです。
 この機能を使えばわざわざ、各クライアントコンピュータ上で手動で設定をする必要がなくなり、設定作業がかなり楽になります。ただし、DHCPを使ってLDAPの設定を行う場合注意が必要な点があります。

 DHCPでLDAPのサーバのアドレスを取得したとしても、ディレクトリサービスの機能をすべて利用できるわけではありません。LDAPサーバのアドレスを取得することにより、LDAPによるサーバへのアクセスはできるようになるのですが、認証を行うことができないのです。具体的には、ネットワークユーザの認証ができないことになります。
 DHCPでLDAPの設定をしつつ、ネットワークユーザの認証も有効にするには、クライアント側での追加の設定が必要になります。「ディレクトリアクセス」のLDAPの設定画面に「DHCPから割り当てられたLDAPサーバを自動検索ポリシーに追加する」というチェックボックスがありますが、このチェックを入れることでネットワークユーザの認証が可能になります。
 DHCPでLDAPのサーバのアドレスを提供している場合、「ディレクトリアクセス」のDHCPのチェックが入ってるかいないかにかかわらず、LDAPサーバのアドレスを自動検出することによってLDAPサーバへのアクセスはできるようになります。ですが、認証を行う場合には追加の設定が必要になるということです。
認証が出来なくても、クライアントコンピュータからサーバ上のネットワークユーザのレコードにアクセスはできますが、レコードにアクセスできることと、認証ができるかどうかは個別の設定になりますので注意が必要です。
 DHCPの環境でディレクトリサービスを利用している場合、ネットワークユーザの認証に問題がある場合には「ディレクトリアクセス」の設定を確認してみてください。

つづく                               

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

 承前。実現したいサービスはお決まりだろうか。オレはヒトにサービスされるのは好きだがするのは嫌いだ? まぁそういうご仁もいるかもしれぬがここはそういう場ではないので無視して進める。

 前回具体的に使ってみてもらったのでお分かりと思うがこのサービスという機能、確かにそのサービスを提供するのはこちらだが、受付窓口は外部委託である。つまりあの「サービスメニュー」というのはどう考えてもサービス・プロバイダーたるアプリケーションの一部ではない(だってアプリケーションが起動してなくても出てるもんね)。喩えて言えばあれはそのぉ、ぺーいち兄さんが出しているタウンページの広告みたいなもんであり、ある決まった約束事に従ってあそこに自分行きのメニューを載っけてもらうわけである。以下その約束事……。
 
 まず第一に、アプリケーションの「info.plist」の中に「NSService」というプロパティを作る。タイプは Dictionary の Array、Dictionary には以下のキーとそれに対応したデータを設定する。

 キー:NSMenuItem
 データ:Dictionary、サービスメニューに追加するメニューアイテム(後述)。
 キー:NSKeyEquivalent
 データ:Dictionary、短縮キーの指定(これも後述)。
 キー:NSMessage
 データ:String、このメニューが選ばれたときアプリケーションが受け取るメッセージ。
 キー:NSPortName
 データ:String、このリクエストを受けとるポート……普通はアプリケーションの名前。
 キー:NSSendTypes
 データ:Array、このサービスが受け取るペーストボードのタイプ。複数指定可。
 キー:NSReturnTypes
 データ:Array、このサービスが返すペーストボードのタイプ。複数指定可。
 キー:NSUserData
 データ:String、上のNSMessage のパラメータとして受け取れるオプションデータ。
 キー:NSTimeout
 データ:String、サービスのレスポンスを待つ時間、指定しないと30秒。

 上に「(後述)」と書いた部分を解説する。NSMenuItem、NSKeyEquivalentの内容であるDictionaryの中身はそれぞれ1つだけ。どちらも “default” というキーで、NSMenuItemの方はメニューの文字列を、NSKeyEquivalent の方は短縮キーに使う1文字(モディファイヤは Command + Shift に固定)を指定する。
 また、これらのローカライズには、言語環境ごとに「ServicesMenu.strings」というファイルを作る。中身はアプリケーション本体で使う「Localizable.strings」と同じ。

“defaultで指定した文字列” = “ローカライズのために置き換える文字列”;

という具合。短縮キーの1文字もローカライズできるわけだ。……あんまりお勧めはできないけどね。
 なお、「Finder」みたいに階層メニューを作りたい場合は、NSMenuItemの指定の際に下の階層との間を「/」で区切って書く。「Finder/Open」とかね。……やってみたことは無いけどたぶん三段階層はできない。できないよな?
 もちろんそのサービスが「プロセッサー型」(前回出てきた言葉、覚えてますか?)である場合には NSReturnTypes とかは指定しないでOK。

 さて、これでぺーいち兄さんはめでたくタウンページに広告を出すことができました。広告だけ出しておいて実際に注文が来てもサービスを提供できないと困るので、次回はそっちをやります。ほんぢゃまた。
                            (2007_03_23)

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

プログラマのためのオブジェクト指向再入門(17)

〜XcodeによるPowerPlant X入門(1)〜

 こんにちは、高橋真人です。
 いきなりテーマの変わって、もしかしたら驚いた方もいらっしゃるかもしれませんが、あくまでオブジェクト指向と非オブジェクト指向における実装の仕方の違いを説明する過程の一部です。
 オブジェクト指向を理解するという過程において、市販の入門書やWebなどの情報だけで理解できる人はいいのですが、私自身もそうだったように、具体的なコードを示されないと、さらには実際に自分自身でプログラムを動かしながら確認しないと今ひとつピンと来ないという人がいます。
 この「プログラミング指南」を書く上で私が読者層と想定しているのもそういう類いの人たちですから、ここは手っ取り早くPowerPlant X(以下PPx)を実際に動かしてもらう方が得策と考えたわけです。
 今回、実際に私が試してみたところ、予想以上に簡単にXcode上でPPxを動かすことができることが分かりました。
 特にお伝えしたいことは、PPxは言ってみればただのC++ソースの集合体でしかありませんから、PPxのインストールによってシステムを汚してしまうことは全くありませんし、試してみて必要ないと判断すれば、単にフォルダごと消去すればよいだけの話です。
 また、PPxはオリジナルPowerPlantから引き継いだ設計思想として「コンパクトで独立したクラス構造」を持っていますから、いわゆるPPxアプリでなくとも、PPxのクラスライブラリを部分的に利用することが可能です。まだ試していないので想像ですが、Cocoaアプリからですら利用できるのではないかと踏んでいます。
 何度もお話ししているように、PPxは実際に開発されていた期間が短かったため、備えている機能は余り豊富ではありません。ただ、最初からMach-O形式を対象にしていますし、最終リリース(つまり、オープンソース化されたもの)においてはCarbon用のNibファイルを利用する形になっています。
 ですから、Carbon APIを利用するためのクラスライブラリという見方でPPxを見てくださってもそれはそれで構わないわけです。
 とにかく、少しのディスクスペースと少しの時間がありさえすれば、現在Macの開発をしている方ならば誰でも気軽に試すことができますので、この連載を目にされているすべての方に試していただけたらと思っています。
 それでは、早速手順の解説を始めましょう。

☆以下の作業は、管理者権限を持つユーザーでログインした状態で行ってください。

 前提とする作業環境ですが、現時点での最新のもの(Mac OS X10.4.9、Xcode 2.4.1)とします。PPx自体はPantherに向けて開発がスタートしたので、Panther上でもできないことはないかもしれませんが、私が少し試した感じではちょっといくつか調整が必要な印象です。
 また、推奨環境としてIntel Macをお勧めします。PPxはC++のテンプレートをかなり積極的に使用しているため、CodeWarriorでの経験では、PowerMac G5などを使ってもビルドにはかなりの時間を要しました。対して、私の手元のMacBookで試したところ、「感動的に速く」(笑)ビルドできたので、IntelMacを推奨とします。

◆PowerPlant Xの入手
 まずは、PowerPlant Xを入手します。
 CodeWarrior Mac版の開発終了に伴い、オープンソースになりましたので、入手先はSourceForgeです。

 入手先には以下の二通りがありますが、後者の方がおすすめです。

入手法1: dmgファイルのダウンロード

SourceForgeのopen-powerplantのサイト
http://sourceforge.net/projects/open-powerplant
に行き、PowerPlant.dmgをダウンロードします。(リンクをいくつかたどる必要がある)
 dmgマウントの際に「システムを壊すかもしれない」とのメッセージが出る場合があります。単に、中からフォルダを一つ取り出す(コピーする)だけなので、問題ないと思いますが、責任は取れません。
 入手法2がどうしてもできない場合に限り、こちらを選んでください。

入手法2: Subversionのレポジトリの取得
 入手先は、同じくSourceForgeのサイトです。Subversion(コマンド名はsvn)というのは、ソースコードのバージョン管理のためのシステム(cvsよりも新しい。もちろん高機能)で、現在のopen-powerplantの開発にもSubversionが使われていますので、ソースコードも最新のものを取得できます。
 お使いのMac OS XにSubversionがインストールされていない場合もありますので、以下の手順で行ってください。(ちなみに、既にSubversionをインストールしてある方はそれをお使いになっても構いませんが、Subversionのバージョンによって、以下のレポジトリの取得がうまく行かない例が報告されています。ご参考まで)

・Subversionの取得
http://metissian.com/projects/macosx/subversion/
から、
1.3 stable UB
http://metissian.com/downloads/macosx/subversion/subversion-client-1.3.1.dmg
を落とし、インストールします。

echo $PATH
で、/usr/local/binがコマンドサーチパスに入っていることを確認します。この項が理解できない場合、これはMac OS Xに限らずUNIXの一般的な話ですので、Webなり書籍なりを調べてください。
(このステップを省略したい場合、以下のコマンドsvnの前に/usr/local/bin/を付加すれば、とりあえず実行はできます)

・レポジトリからソースコードツリーを取得
 ターミナルを起動して、以下のコマンドを実行します。
svn co https://open-powerplant.svn.sourceforge.net/svnroot/open-powerplant/trunk open-powerplant

 以下のようにサーバー認証関係のエラーなどが出て、対処法を聞いてきますので、

MacBook:~ someone$ svn co https://open-powerplant.svn.sourceforge.net/svnroot/open-powerplant/trunk open-powerplant
Error validating server certificate for 'https://open- powerplant.svn.sourceforge.net:443':
- The certificate is not issued by a trusted authority. Use the
   fingerprint to validate the certificate manually!
Certificate information:
- Hostname: *.svn.sourceforge.net
- Valid: from Oct 27 12:05:58 2006 GMT until Oct 28 13:05:58 2007 GMT
- Issuer: Equifax Secure Certificate Authority, Equifax, US
- Fingerprint: f2:6c:fe:bb:82:92:30:09:72:dd:1c:b3:e7:56:69:c7:7a:df:67:3e
(R)eject, accept (t)emporarily or accept (p)ermanently?


とりあえずtで答えてやればいいでしょう。

 あとは、いろんな出力が出て、ほぼ数分で終了します。(ネットワーク経由でデータを取ってくるので、当然ネットワークにマシンがつながっている必要があります)
 取得が成功すれば、ホームにopen-powerplantというフォルダができているはずです。この中のPowerPlantXというフォルダが今回必要なものです。

◆PowerPlant Xのインストール
 上記の手順で入手したPowerPlantXという名のフォルダを/Libraryにコピーします。(決して、/System/Libraryに入れないように)

◆MoreFilesXのインストール
 続いて、PowerPlant Xが利用するAppleのファイル処理用のサンプルコードを入手します。

http://developer.apple.com/samplecode/MoreFilesX/index.html

 .zipファイルをダウンロードし、解凍されたフォルダを上記でコピーしたPowerPlantXフォルダの中にコピーしてください。

 以上で、インストール作業は完了です。
 先ほど取得したopen-powerplantフォルダの中には、解説のドキュメントも入っていますので、興味のある方は覗いてみてください。

書籍紹介             Objective-C MacOS X プログラミング
 
解説担当:高橋政明

Objective-C MacOS X プログラミング
荻原 剛志著
ソフトバンククリエイティブ ISBN4-7973-3334-0 ¥4,410(税込)

 Objective-Cの日本語リファレンスとして貴重な一冊です。
 カテゴリ、プロトコル、スレッド処理、分散オブジェクトなどについての説明も詳しく載っています。残念ながらUI関係や描画等の解説は少ないためこれ一冊でCocoaのすべてをカバーするわけではありませんが、Cocoaでの開発になくてはならない資料のひとつです。C言語に関する基本的な知識のある読者を想定しているそうです。

 この本は2006年に、Mac OS X 10.4のドキュメントに基づいて新たな内容を盛り込み書き直したものだそうです。原本は2001年に(株)広文社から出ていました。2006年版には「アプリケーションの構造」と「キー値コーディング」の章が追加され、Appendix Bに「コーディングの指針」も追加されました。
※参考:Cocoaコーディングガイドライン(英文)
http://developer.apple.com/documentation/Cocoa/Conceptual/CodingGuidelines/index.html

webでは目次が参照できないようですので章だけ列挙します。
01 オブジェクトに基づくソフトウェアの作成 02 Objective-Cのプログラム03 継承とクラス 04 オブジェクトの型と動的結合 05 メモリ管理とオーナーシップ06NSObjectクラスとランタイムシステム 07 Foundationフレームワークの重要なクラス 08 カテゴリ 09 抽象クラスとクラスクラスタ 10 プロトコル 11 オブジェクトのコピーと保存 12 デリゲートと通知 13 アプリケーションの構造 14 例題:簡易画像ビューア 15 例外とエラー16 スレッド 17 分散オブジェクト 18 キー値コーディング

▼出版社のweb (ソースコ−ドのダウンロードサービスあり)
http://www.sbcr.jp/books/products/detail.asp?sku=4797333340

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