MOSA Multi-OS Software Artists

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

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

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

2006-07-18

目次

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

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

 さて、インストール〜初期設定の解説が終わり、いよいよ本格的なサーバ構築の解説を始めて行きたいと思います。前回解説した初期設定の自動化のために保存する設定情報ですが、設定情報の中にはMac OS X Serverのシリアル番号や管理者アカウントのパスワードなども保存されますので、保存した設定情報の扱いについてはくれぐれもご注意ください。

□ホスト名の確認
 初期設定が終わりますとサーバが再起動し、ログインウインドウが表示されます。Mac OS Xの場合にはデフォルトで自動ログインの設定が有効になっていますが、Mac OS X Serverの場合には最初からログインウインドウが表示されます。また、この時点ですでにrootユーザでのログインも出来る(Mac OS Xの場合はデフォルトでは出来ない)ようになっています。このようにMac OS XとMac OS X Serverではデフォルの設定が違う部分もあります。
 初期設定後の再起動が完了したら、さっそくログインしてまずは設定の確認を行いましょう。リモートでサーバを操作する場合にはsshによるログインが可能です。Mac OS X Serverではデフォルトでsshが有効になっていますので、最初からsshによるリモートログインが可能です。sshでサーバにアクセスするには「ターミナル」上で次のようなコマンドを入力します。

・ssh
$ ssh 管理者アカウントのユーザ名@サーバのアドレス
あるいは
$ ssh サーバのアドレス -l 管理者のユーザ名
例:$ ssh admin@192.168.0.10 あるいは ssh 192.168.0.10 -l admin
※管理者アカウントのユーザ名:admin サーバのアドレス:192.168.0.10

 初期設定時にサーバ側で「Apple Remote Desktop(ARD)」を開始するように設定してあればARDでアクセスする(この場合、別売の管理ツールが必要)のもよいでしょう。
 サーバにログインしたらまずはネットワークの設定(IPアドレス、サブネットマスク、ルーター、DNSサーバなど)を確認しましょう。リモートで設定を行い、入力ミスなどの原因でネットワークの設定に失敗した場合にはサーバにネットワーク接続できないかもしれません。そのときはサーバ機本体を直接操作して設定を確認し、ネットワークの再設定を行います。ただしヘッドレスでリモート設定を行った場合にはちょっと厄介です。本体を直接操作できないうえにネットワーク接続もできない状態ですからちょっとお手上げ状態になります。あらかじめ記録しておいた設定情報を手がかりに復旧を試みるか、どうしてもサーバを操作できない場合は、頑張って再インストールしてください:-)。

ネットワークの設定に問題がなければ次にサーバ機のホスト名を確認します。第7回の記事で解説しましたが、Mac OS X Server v10.4はDNSサーバを参照してホスト名を動的に設定します。ですので、正しいホスト名が設定されているかどうかを確認します。ホスト名を確認するには「ターミナル」で”hostname”コマンドを実行します。

・hostnameコマンドの実行例
$ hostname
tigerserver.example.com

 このようにFQDN形式のホスト名が表示さるかどうかを確認します。設定に問題がなければ、hostnameコマンドの実行結果にはあらかじめDNSサーバ上に設定しておいたホスト名が表示されます。

□IPアドレス/ホスト名の変更
 サーバを構築した直後にIPアドレスやホスト名を変更することはあまりないかと思いますが、間違ったパラメータを設定してしまった場合も考えられますので、変更方法を解説しておきましょう。IPアドレスの変更なら「システム環境設定」の「ネットワーク」パネルで簡単に変更できますが、Mac OS X Serverの場合にはいきなりIPアドレスを変更すると問題になる場合があります。各種サービスの設定がIPアドレス/ホスト名に依存していたりしますので、いきなり設定を変更するとサービスがうまく動かなくなってしまう可能性があります。
 そこでIPアドレスの変更を補助するコマンドとして”changeip”コマンドが用意されています(Mac OS Xにこのコマンドはありません)。変更の手順は以下のようになります。

・サーバのIPアドレス変更手順
(1)changeipコマンドを実行
(2)実際にIPアドレスを変更
(3)サーバを再起動


 changeipコマンドでは変更前と後のIPアドレス、変更前と後のホスト名を入力します。changeipコマンドの詳しい使い方はmanページを参照してください。また、パラメータなしでchangeipコマンドを実行するとコマンドの使用例が表示されます。Mac OS X Server v10.4.6以降でchangeipコマンドを実行する場合にはホスト名をFQDNで指定する必要があります。

・changeipの使用方法
$ changeip [directory-node | -)] old-ip new-ip [old-hostname new-hostname]
・TIL「changeip に対しては、完全指定のドメイン名が必要となる」


http://docs.info.apple.com/jarticle.html?artnum=303495

つづく

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

 つうことで約束どおり今回から「マウスカーソルの形を位置と状況に応じて変える仕掛け」について書く。そんなの知ってるぞというヒトもなかにはいると思うが、この手の小技ってのは「やる気になればちょいちょいと出来るさ」と思ってわざわざそのプログラミングのために時間とかを取っておかず、納品間際のせっぱ詰まった時になって、あ、そう言えばマウスポインタの形を変えるんだっけ、どこを見ればやり方が書かれているんだ?」と探すのに大苦労したりするもんなので(これはオレの実体験ではない。為念)、一応この連載で取り上げておく価値があろうと、考えたのである。

まず基本から。マウスカーソルの形を扱うのは NSCursor というクラスである。使い方は NSColor と似ている。例えばよく見かける「開いた手」のカーソルをセットするには

 [[NSCursor openHandCursor] set];

と、これでいい。NSColorの

 [[NSColor redColor] set];

つうのと同じでしょ? 簡単である。最もこういう風にティピカルなカーソルシェイプがクラスメソッドで生成できるようになったのはMac OS X10.3以降のことで、それ以前は自分でカーソルシェイプのイメージファイルを用意し、initWithImage:hotSpot: とかでカーソルを作って持ってなくちゃいけなかったんだけどね。

さて、上に「マウスカーソルの形を位置と状況に応じて変える」と書いたが、この「位置」というのはつまり「そのアプリケーションに含まれる何らかのビューの上」を意味する。具体的な例を挙げよう。Safariの画面だ。Safariを起動してMOSAのページ(http://www.mosa.gr.jp/)を開き、あちこちカーソルを動かしてみてほしい。場所によってカーソルが「デフォルトの矢印型(arrowCursor)」から「人さし指だけ伸ばした手の形(pointingHandCursor)」や「文字入力のキャレット型(IBeamCursor)」とかに変わるはずである。

これを実現するため、NSViewに resetCursorRects というメソッドが用意されている。これ、デフォルトでは何にもしない。awakeFromNib とかと同じで、サブクラスによってオーバーライドするためのもの。これをオーバーライドして何をするかというと、「この四角形の中に入ったらマウスカーソルはこのシェイプになるんだかんな」ということを指定するのである。例えば:

-(void) resetCursorRects {
     [self addCursorRect:NSMakeRect(10, 10, 100, 100)
                    cursor:[NSCursor openHandCursor]];
     [self addCursorRect:NSMakeRect( 120, 120, 100, 100)
                    cursor:[NSCursor pointingHandCursor]];
}

とすれば、(10,10)を基点とする縦横100の四角形の中にカーソルが入ると自動的にそのシェイプは openHandCursor になってくれる。(120, 120) を基点とする同じ大きさの四角形の中に入れば pointingHandCursor になってくれる。便利でしょ?

でもこれだけでは、上で見たSafari のように、そこに表示されるものによってカーソルの形を変えることはできない。例えばこのビュー上で、上の2つの四角形をドラッグできるようにする。一度ドラッグして位置が変わったらその新しい位置でカーソルが変わらなくちゃ変である。それをどう実現するか、次回はそれを見ていこう。

(2006_07_13)

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

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

 こんにちは、高橋真人です。
 かねて予告していましたように、前回の連載でPerlに関してのお話は終了したわけですが、これを機会にこのところずっと続けてきた「UNIXとしてのMac OS X」についても一旦区切りを付けたいと思います。とはいえ、Mac OS XのUNIX的な側面に関して書きたいことはまだいくらでもあるので、これで完全に終わりにするつもりはありませんが。

 さて、新しい話題としてスタートするのはオブジェクト指向です。
 この連載をずっと読んでくださっている方は「またオブジェクト指向か」と思われるかもしれません。確かに、連載の第15回から49回までオブジェクト指向をテーマにお話しいたしました。ですが、あれから2年ほどが過ぎようとしている今、私の中ではオブジェクト指向技術の必要性がさらに高まったような気がしています。
 もっとも世間では、2年前とあまり変わることなくオブジェクト指向は花盛りです。むしろ、今ではオブジェクト指向が当たり前になり過ぎて、あえて殊更にオブジェクト指向をうたうことすらしないケースも出てきた感があります。こんな状況を見るにつけ、私は「本当に皆が当たり前のようにオブジェクト指向を使いこなせているのだろうか?」と疑問を持ってしまうのです。オブジェクト指向が盛んになったからといって、技術そのものが学びやすくなったとは思えないし、それどころか関連技術は増える一方なので、初学者にとっては取っ付きにくさはさらに倍増!といった感じなのです。

Mac OSでのCocoaにおいても見られるように、今や主要なOSのネイティブ開発のメインはオブジェクト指向技術であるようです。C#(Windows)、Java(Linux)と、決してCやアセンブラが使われていないわけでもないのに、一見すると「オブジェクト指向以外の技術は不要になった」とでも言わんばかりの勢いです。
 OSのネイティブな開発環境以上にオブジェクト指向が盛んなのがWeb開発の世界。日本発のRubyを今や世界的に大ブームにさせているRuby on Railsに代表されるRapid開発系のWebアプリケーションに勢いを得て、「手軽に、素早く」が要求されるWebの開発においては、オブジェクト指向を使わない方が珍しいぐらいの印象すら受けます。

私がMOSAでやらしていただいている「硬派のためのプログラミング道場」という講座では、「プログラミングの基礎力としてのC言語」ということで1年間にわたってCのみを勉強します。それくらい時間と手間をかけても、講座終了までにCをマスターする人はまれです。しかし、最後まで講座に付いてきてくださった方は例外なく「基礎的な技術がいかに重要であるか」を理解されています。
 実際、私の実感でも、どんなに人間寄りのオブジェクト指向技術が盛んになろうがCやアセンブラなどのコンピューター寄りの開発ツールが重要であることに変わりはなく、仮にオブジェクト指向技術だけで完結している仕事においても、これらの基礎技術があるかどうかで、結果にも効率にも大きな違いが出てくるのは疑いないところです。

そうは言っても、わざわざ長い時間をかけてCを学習しても、それだけで「いまどきのMacプログラム」が作れるようにならないのはつらいところです。私の講座を受講された人のほとんどが「Macのプログラム一つ作れるようになるのにこんなに時間がかかるものだとは思ってもみなかった」と感想を漏らされます。
 Cから始めてひとつずつ技術を積み上げてきて、ようやく何とかグラフィックインターフェースの入り口まで来れた人からすれば、この先さらにオブジェクト指向などという難しそうな技術を習得し、自在に使いこなすだなんてことは「夢のまた夢」なのではないかと思ったとしてもおかしくはありません。
 しかし、オブジェクト指向を日常的に技術として使っている私の実観から言うと、「確かにオブジェクト指向は奥深い広大な技術ではあるものの、決してとっつきにくいものではない」のも正直なところなのです。
 そもそも、オブジェクト指向という言葉そのものが、ともすれば「プログラムの中で独立した複数の実体が動き回る」という印象を与え過ぎ、それがかえって現実への理解を邪魔している面もあるような気がします。
 たとえば、私が日常的に書いているC++コードを見ても、部分的にはCで書いたコードと余り違いが分からない場合もあるくらいで、ましてや「オブジェクトがメッセージをやり取りしながら動いている」ところなど、見えるはずもありません(笑)。

 ただその一方で、何年もオブジェクト指向の技術を使って仕事をしているのに、「未だにオブジェクト指向と言われてもピンと来ない」と漏らす人も少なくないのです。
 かつて「Javaで書くと嫌でもオブジェクト指向になってしまう」などと言われたこともありましたが、今になってみれば「Javaで書いても全然オブジェクト指向っぽくない」コードはさほど珍しいものでもなかったりします。

こういう状況下で、私は、どうすればもっと多くの人、とりわけ日常的にコードを書いているプログラマの人々にオブジェクト指向を理解し使いこなしてもらうにはどうしたらよいのだろうかとよく考えます。
 そこで、この連載であえてもう一度オブジェクト指向というテーマに取り組んでみようと思ったわけです。もちろん、私自身は今までに数多くのオブジェクト指向の本、特に入門書の類いを目にしていますが、こんな観点から見た場合、私が満足できる本はそんなに多くはなかったのです。
 たとえば、オブジェクト指向の全容を伝えようとするあまりに、かえって初心者にとってオブジェクト指向を必要以上に難しいものに見せてしまったり、正確さを期する余り、本質的な部分をかえって見えづらくしてしまったりと、なかなか効果を上げられていないのです。
 確かにオブジェクト指向の応用範囲は広く、今でもその活用範囲は拡張し続けていますから、それを伝えることは簡単ではありません。

でも、そんな時に「いい加減でもいいので、日常的にコードを書いている立場からオブジェクト指向を主観的に語ることがあってもいいのでは」と思って、今回再度このテーマに取り組むことにしたのです。
 ですから、一般に行きわたっている「オブジェクト指向講座」とは毛色の違った切り口で、多分に正確さを欠いて、一見オブジェクト指向とは見えないような話が展開される可能性も充分にあり得ます。
 ですが、この連載を読んでくださる方の中に一つでもオブジェクト指向に対する新たな視点が芽生えてくれれば私の試みは成功です。

ニュース・解説

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

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

【開発環境】

昔から大変不思議に思うのですが、日本のアップル社には営業やマーケッティングの担当重役はいても、開発や技術系の担当重役は存在しません。日本ではMacintoshの売上が少ないため、その重要度からして必要無いという判断なのでしょうか?しかし、世界的に見ても、日本にはApple社と関係しそうな大手技術系メーカが数多く存在しています。日本に何らかの技術部隊とその担当重役を置くという戦略は、日本市場単独のためではなく、世界的な戦略の一環として考慮すべき事項ではないでしょうか?まあ、大将はそう考えていないのでしょうね…誰か尋ねてみてくれませんか(笑)。

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

前回から7月14日の期間中、Apple社のGuidesサイトには新規ドキュメントが10登録されましたが、Referenceのサイトには新規登録はありませんでした。
Apple社が教育機関用に販売を開始した廉価版iMacのハード仕様ドキュメントが登録されたため、それに関連するハードがらみのDeveloper Noteがすべて更新されています。また、Apple Scriptに関するリリースノートとデベロッパ向け読み物がそれぞれひとつずつ登録されています。最近のデベロッパ向け読み物はしぶくて(笑)有用な内容が多いですので、すぐさま日本語訳ドキュメントも登録して欲しいところです…。

「17-inch iMac for Education Developer Note」(初版)
「AirPort Developer Note」
「Audio Developer Note」
「Bluetooth Developer Note」
「Ethernet Developer Note」
「FireWire Developer Note」
「PCI Developer Note」
「RAM Expansion Developer Note」
「Universal Serial Bus Developer Note」
「Video Developer Note」

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

リリースノート

「AppleScript Release Notes」(改訂)

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

「Improving Your Software with Xcode and Static Code Analysis Techniques」
(読み物)

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

前回から7月14日の期間中、新規テクニカルノートはひとつも登録されませんでしたが、新規テクニカルQ&Aの方はひとつだけ登録されました。

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

QA1438「How do I use asserts while debugging?」(初版)

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

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

前回から7月14日の期間中、Apple社のSample Codeサイトには、新しいサンプルソースコードが5つ登録されました。すべてJavaとQuickTime関連のサンプルであり、改訂版としての再登録となります。

「AddTextMovie」(Java&QuickTime関連)
「ImageFile」(Java&QuickTime関連)
「QTSimpleApple」(Java&QuickTime関連)
「QTStreamingApple」(Java&QuickTime関連)
「TimeCode」(Java&QuickTime関連)

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

【デベロップメント SDK】

前回から7月14日の期間中、Apple社のSDKサイトには新しいSDKがひとつも登録されませんでした。

http://developer.apple.com/sdk/

 

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