MOSA Developer News[MOSADeN=モサ伝]第210号
2006-06-27
目次
- 「「Wonderful Server Life」 第8回 田畑 英和
- 小池邦人の「Carbon API 徒然草」
- SqueakではじめるSmalltalk入門 第64回 鷲見 正人
- ニュース・解説 木下 誠
「Wonderful Server Life」 第8回 田畑 英和
まずは前回の補足から。Mac OS X Serverの初期設定をリモートで実行する方法を解説していますが、「サーバアシスタント」に一覧表示されるリストから初期設定を行うサーバを特定するためにarpコマンドを使用する方法を紹介しました。「サーバアシスタント」の一覧表示ではマウスをリストに重ねますと自動的にMACアドレスがポップアップで表示されますので、arpコマンドを使用しなくとも「サーバアシスタント」だけで初期設定を行うことができます。
もっともこの方法ではサーバのMACアドレスを1つずつ確認する必要がありますので、複数台のサーバを一度に設定する場合にはarpコマンドでIPアドレスとMACアドレスの一覧をあらかじめ確認しておいたほうが便利かと思います。
それでは初期設定の設定項目の続きを解説いたします。
・ネットワークインターフェイス
使用可能にするネットワークポートの指定を行います。必要に応じてネットワークポートを追加することもできます。各ポートで使用するプロトコルも選択でき、選択可能なプロトコルは「TCP/IP」と「AppleTalk」の2つです。1つのポートで両方のプロトコルを有効にすることができます。また「TCP/IP」は複数のポートで有効にすることができますが、「AppleTalk」を有効にできるポートは1つだけです。
・TCP/IP接続
使用可能に設定したネットワークポートのTCP/IPに関する設定を行います。ここでは「システム環境設定」の「ネットワーク」パネルと同様の設定を行います。通常は手入力でIPアドレスなどのパラメータを設定することになります。
手入力でIPアドレスを入力するときですが「xxx.xxx.xxx.xxx/16」のように最後にサブネットのビット長を追加しますと、タブキーで入力フィールドを移動するときに自動的にサブネットマスクとルーターのアドレスを入力してくれるので便利です。
・ディレクトリの利用設定
ここではMac OS X Server上でのディレクトリサービスであるOpenDirectoryの役割を設定します。役割は以下の3つから選択することができますが、ここではデフォルトの「スタンドアロンサーバ」のままにしておくのがよいです。
-> スタンドアロンサーバ
-> ディレクトリシステムに接続
-> オープンディレクトリのマスター
初期設定では完全に設定できない場合もありますし、初期設定後いつでも設定できますので、まずは初期設定を完了させネットワークの状態を確認してからOpenDirectoryの設定を行った方が確実に設定を行うことができます。
・サービス
システム起動時に開始するサービスを選択します。ただしここでサービスの開始を選択した場合、初期設定のままサービスが起動してしまいます。サービスの開始は後から「サーバ管理」を使用していつでも設定できますので、初期設定時にサービスの開始を設定する必要はあまりありません。
ただしサーバにディスプレイを接続せずヘッドレスで運用するような場合には「Apple Remote Desktop(ARD)」の開始をここで選択しておくと便利です。ARDを開始するように設定すれば、初期設定後ただちにARDを使用してリモートからの画面の監視や制御が可能になります。初期設定でARDの開始を選択した場合、初期設定で登録した管理者アカウントでARDによる接続が可能になります。
・時間帯
サーバの設置場所の時間帯を設定します。日本の場合は「東京」と「大阪」を選択できますがどちらも同じ時間帯(JST)が使用されます。
・ネットワークタイム
コンピュータの時刻をネットワーク上で同期するのに使用するネットワーク・タイム・サーバの設定を行います。ここではあらかじめ登録されているタイムサーバを選択することもできますし、任意のタイムサーバを指定することもできます。また、初期設定時には設定できませんがMac OS X Serverをタイムサーバとして設定することもできます。
以上で初期設定は完了です。設定した内容を適用するとサーバの初期設定が実行され、いよいよサーバが利用可能な状態になります。リモートでの初期設定を適用する前に、設定内容をテキストファイルに保存することもできますので、記録のためにファイルを保存しておくと便利です。ここで保存したファイルのエンコーディングはUTF-8になります。
それでは次回はそのほかの初期設定の方法について解説したいと思います。
つづく
SqueakではじめるSmalltalk入門 第64回 鷲見 正人
本連載では、名前は知っていてもなかなか触れる機会のないSmalltalkについて、最近話題のSqueakシステムを使って紹介しています。
前回は、システムウインドウに対して普段、なにげなく行なっているGUI操作が、内部的にはそのまま、オブジェクトとしてのウインドウ(SystemWindowのインスタンス)へのメッセージ送信で実現されており、当然のことながら、同様のことをSmalltalkコードとしても記述可能であることを体験していただきました。次のステップとして、このシステムウインドウを使った簡単なアプリケーションを作ってみたいと思います。
お題はGUIビルダです。…と申しましても、Interface Builderのような、あんな立派なものをここで作るのは無理なので、動作モデルをとてもシンプルなものにいたします。
イメージとしては、組み込むべきGUIウィジェットを(もちろんSqueakシステムには、OS XのAquaほど多彩で洗練されたものはないのですが、それでもいくつかある候補から…)選択して、ダミーのウインドウにドロー系ツールの要領で矩形を描くと、それが指定した矩形範囲に設置される…というのでいかがでしょうか。できあがったGUIウィジェットを含んだウインドウは、それと同じものを作るためのSmalltalkコードとしてはき出す機能を持つことも想定します。
作業に取りかかる前に、まずは、ウォーミングアップと復習を兼ねて、ドロー系ツールライクに矩形を描く操作などのマウス操作より、必要な情報を抜き取る方法を、いつもどおり脱線ぎみにおさらいしてみましょう。
マウスの操作から情報を取り出す方法にはいくつかありますが、よく使われるメソッド名は #fromUser です。いわゆるユーティリティメソッドで、レシーバとして指定されたクラスに属するインスタンスを返してきます。このとき、直前のマウス操作から情報を抜き出して、インスタンスのプロパティにそれを反映させます。
たとえば、クリックした場所の座標を得るには、
Point formUser
を print it (cmd + P) します。Pointは、端的には座標オブジェクトの属す
るクラスです。
print it操作の直後、マウスカーソルは十字(クロスヘア)になり、クリック操作が行なわれるまで、他の操作を受け付けなくなります。クリックすると同時に、マウスポインタのホットスポットの位置の座標(Pointのインスタンス)が返されます。ちなみに、Point class >> #fromUser の定義は、こんなふうになっています。
Point class >> fromUser
Sensor waitNoButton. "ボタンが押されていたら放すまで待つ "
Cursor crossHair show. "マウスカーソルをクロスヘアに "
Sensor waitButton. "ボタンが押されるのを待つ "
Cursor normal show. "マウスカーソルを通常の矢印に "
^ Sensor cursorPoint "現在のポインタの位置を返す "
そのまんまですね。Sensor cursorPoint は、この連載の最初の頃に取り上げた、簡易ペイントツールでも登場しているイディオムで、評価すると(クリックを待たずに)ただちにマウスカーソルのホットスポットの位置を返してきます。なお、このメソッド「Point class >> #fromUser」は、クラス Pointではなく、クラス Point の属するクラス(メタクラス)の Point class に定義されていることに注意してください。
今回、システムウインドウ内へGUIウィジェットを設置するために必要な矩形情報も、同様にして得ることができます。今度は、Point の代わりに、Rectangle、つまり矩形クラスに同じメッセージ「fromUser」を送ることで、Rectangle class >> #fromUser という別のメソッドを起動します。
Rectangle fromUser
この式の print it の直後、右下に開いたカギ型のポインタに変わるので、適当な場所で、ドローツールで矩形を描く要領でマウスをドラッグ操作します。ドラッグを終えてマウスボタンから指を離すと同時に、それまで描いた矩形領域の左上と右下からなる、矩形オブジェクト(a Rectangle)が返されます。
余談ですが、このとき起動される Rectangle class >> #fromUser の定義は、このようになっています。
fromUser
^ self fromUser: 1 @ 1
これは、マウスの動きを強制するグリッドを設けず(言い換えれば、最小単位の1×1ピクセルによる強制を指示して)#formUser: を起動しすることを意味します。念のため、#fromUserと#formUser: は別のメソッドなので注意してください。Java風に、同名メソッドのオーバーロード(多重定義)と考えてもよいのですが、それよりはもっと単純に、メソッド名にはコロンまでが含まれる…(当然、その有無で区別されるべき)と考えたほうが、より現実に即しています。
グリッドでの強制がどんなものかは、次の式のように、パラメータに1 @ 1以外を与え print it すれば、すぐ分かります。
Rectangle fromUser: 16 @ 16
Rectangle class >> #formUser: の定義は、Point class >> #fromUser とは違い、ちょっと複雑ですが、これまでの知識でも読み解けなくもないと思います。もし、興味があればチャレンジしてみてください。「fromUser:」の部分を選択して browse it (cmd + B)でブラウザを呼び出し、上のリストから、Rectangle class fromUser: {instance creation}の項目をクリックすれば見ることができます。
ここで、矩形オブジェクトといっても、あくまで抽象的なもので、描いた矩形やそこに含まれる画像が切り取られるわけではないことに注意してください。やはり復習なのですが、画像を切り取るには、画像オブジェクトを定義したクラス Form に、同じ formUser を送信します。
Form fromUser
a Rectangle を得るときと同様の操作で、それが終わると、a Form が返されます。どんなものが切り取られたか見てみたいときは、こんなふうにして、帰ってきた a Form にさらに自身を画面左上に表示するよう指示することで可能です。
Form formUser displayAt: 0 @ 0
ここで早速、Point fromUser を使ってみるのも面白いでしょう。
Form fromUser displayAt: Point fromUser
最初のドラッグで選択した矩形から切り取った画像を、二度目のクリックの場所に表示します。なお、遊んで汚してしまった画面は、デスクトップメニューの「ディスプレイを再表示 (r)」できれいにできます。なお、この種の遊びをするときには、はじめからコードに再描画を折り込んでおくという手もあります。
Display restoreAfter: [Form fromUser displayAt: Point fromUser]
切り取った画像をモーフにしてしまうのも、またひとつの方法です。
Form fromUser asMorph openInHand
このコードでは、切り取った画像は、ただちに同等の表示内容のモーフに変換され、マウスでピックアップした状態になります。スケッチモーフに変換すれば、ペイントツールを使った編集も可能です。
| sketch |
sketch := SketchMorph withForm: Form fromUser.
sketch center: Display center.
sketch openInWorld.
sketch editDrawing
fromUserについては、Color fromUser や、StrikeFont fromUser も面白いと思います。是非、print itして、遊んでみてください。
バックナンバー:
ニュース・解説
今週の解説担当:木下 誠
———————————————————————-
WWDCツアー申し込み締め切り迫る
———————————————————————-
WWDC 2006ツアーの申し込み、いよいよ締め切りが近づいています。
Appleのサイトからの直接申し込みでは、早期申し込みによる割引は6/23日で終了。アップルジャパンのサイトから申し込める、近畿日本ツーリストによる「WWDC 2006パッケージツアー」は、6/30まで。MOSAの「WWDC 2006ツアー」も、6/30までです。
まだの方は、お忘れなきよう、お早めに。
———————————————————————-
QTKitのチュートリアル
———————————————————————-
QTKitのチュートリアルドキュメント、「Using the QTKit Framework」が公開されています。
QTKitは、QuickTimeをCocoaから簡単に利用できるようにした、フレームワークです。長い歴史を持つQuickTimeは、圧倒的な高機能を誇りますが、その膨大な数のAPIのため、ビギナーが簡単に使えるものではありませんでした。それを、Cocoaらしく、Interface Builderのドラッグ・アンド・ドロップで利用できるようにしたのが、QTKitです。
このドキュメントでは、QTKitを使ってムービー再生アプリケーションを作る手順を、ステップ・バイ・ステップで紹介しています。また、過去に同様の内容の記事が、MYCOMジャーナルで紹介された事がありました。そちらも、参考になります。
Using the QTKit Framework
http://developer.apple.com/quicktime/qtkit.html
【レポート】QuickTime Kit – CocoaでQuickTimeプログラミング(MYCOMジャーナル)
http://journal.mycom.co.jp/articles/2005/05/06/qtkit/
———————————————————————-
Shake 4.1 SDK
———————————————————————-
ビジュアルエフェクト作成ソフトウェア、Shake 4.1のためのSDKが登場しています。Shakeを拡張するための、プラグインを作成する事が出来ます。
先日登場したShake 4.1ですが、Universal Binary化を果たすとともに、従来の30万円超から62,000円という、大幅な値下げで話題を呼びました。そのため、Shakeはこれが最終バージョンとなり、Final Cut Proに統合されるのではないか、という噂もあります。
Shake 4.1 SDK
http://developer.apple.com/appleapplications/download/index.html
◇MOSAからのお知らせと編集後記は割愛します◇
記事投稿受付 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.