MOSA Multi-OS Software Artists

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

プログラマーに興味がある方なら誰でも入会いただけます。
MOSA Multi-OS Software Artists
===SINCE 1995===

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

MOSADenバックナンバー 2006年6月発行分

  • 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からのお知らせと編集後記は割愛します◇

     

    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.

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

    2006-06-20

    目次

    • MOSA理事コラム          第2回    林 伸夫
    • 「Wonderful Server Life」      第7回  田畑 英和
    • 藤本裕之のプログラミング夜話 #93
    • 高橋真人の「プログラミング指南」  第91回
    • ニュース・解説                小池 邦人

    MOSA理事コラム   第2回
              林 伸夫=インフォメーション・コンシェルジェ

    MOSA会員の皆様、こんにちわ。

    MOSA副会長の一人、林 伸夫です。
    かつて、「日経パソコン」、「日経MAC」の編集長をしているころは、現在MOSAの中心メンバとして活躍されている皆様に新鮮な情報をたくさん提供していただき、とにかくホットで濃い記事を載せさせてもらっていました。あの頃は、本当にお世話になりました。
    実は私事ですが、この4月で宮仕えを卒業、今度はメディアを離れ、ユーザの立場に転じて情報発信をしていこうと模索中です。これまではマックの話ばかりを記事にしていてはとやかく言われることもありましたが、今度はイチユーザー、開発者としてモノを言うわけですからかなり色濃くMacユーザー色を出していこうかと、いろいろ画策中です。
    とは言うものの、人生行路をいきなり180度転換したり、あるいは非連続にQuantum Leapするのはことのほか難しく、結局は日経パソコン・オンライン(http://pc.nikkeibp.co.jp/)などにこれまでと同じ路線でコラムを持たせてもらうなど、元の木阿弥生活が続いてしまっています。本当だったら今ごろはセイシェル辺りでのんびり充電期間を取っているはずだったのですが。

    ■プログラミング、五十の手習い

    しかしながら、せっかくフリーになり、自分でコントロールできる時間が増えたのですから、これまで表層だけかじってきたプログラミングの世界をじっくり探訪してみたいという強い欲求もむらむら湧いてもいます。これまでも雑誌編集部の仕事を支える小さなユーティリティをハイパーカードで作ったり、AppleScriptでワークフローの自動化スクリプトを作ったりしてきました。
    WebObjectsを使った編集管理システムをすご腕のプログラマに作ってもらったこともありますが、本当はこんな仕組みを、一部でもいいから自分の手で作れるようになってみたい、と夢見ているのです。ああ、そういえば、あの編集管理システムはすごかった。一言で説明すると、1日200本以上の書評をデスク5人、編集長1人(それは私でした)でガシガシ作り上げるシステム。取り上げる書籍の選択から原稿の発注、筆者の進捗管理、そしてバージョン管理まで含んだ査読プロセスの管理まで。このシステムを作ってもらって以来、私はWebObjectsのとりこになってしまいました。

    さて、大枠を作ってもらった上でなら、一部の機能を拡張するなどはある程度やれます。しかし、自分で設計したものを自分でまるまま作ってみたい。皆さんに使っていただけるウイジェットの一つくらい、是非、モノにしてみたいと五十の手習い、挑戦中です。
    しかし、本当に年には勝てないもので、あの、長い長いObjective-CのCocoa APIが覚えられない。とにかくAPIリファレンスに戻っては、あれなんだっけ、と一つずつ探索、見つけ出してはコピーペーストの繰り返し。だれだっけか、「あんなもの指が覚えちゃってますよ」って言っておられる方がいらっしゃったのですが、本当にそんな人の100倍、いや1000倍も能率が悪いのです。もっと早く本気になっていれば良かったかなと、後悔する毎日です。

    ■Windows APIがCocoaからシームレスに扱える日

    ところで、BootCampが出たことでアップルがどんな形でWindows環境をLeopardに統合していくか、興味津々の方も多いでしょう。今回はちょうどいい機会が私に与えられました。最近、私がBootCampについて考えていることをご紹介し、開発者の皆さんにとってこれがどんな意味があるのか、少しだけ、考察してみたいと思います。

    先日は朝日新聞のコラムで「BootCampというソフトをアップルが出した結果、これからはMacがWindows機としても使える」といった趣旨の説明がされていました。う〜〜ん、全くの素人さんにこのような説明をされてしまっては、大いなる誤解がまん延してしまうのでは、と心配です。確かにBootCampでWindowsをインストールすれば、MacをWindows機として使うこともできますが、そんな使い方で本当にMacユーザーは幸せになるのでしょうか? 真っ白でツルツルの極上仕上げのWindowsマシンを使うのも楽しいかも知れません。でも、Macが素晴らしいのは、筐体の素晴らしさはもちろんですが、ゴージャスなMac OS Xが使えるところにあります。Mac OS Xが動いていないMacなんてMacではありません。

    BootCampをアップルがリリースしたのには、Vista登場まではIntel Core Duo搭載のMacでWindowsは動かないと思われていた世間の目を覚ましてやろうという意図が感じられます。しかも、その仕掛けの中にはUSBやFireWire、そしてネットワークドライバもちゃんと用意できていますよということをこの目でみてもらおうという意味もあったでしょう。
    それら要素技術が揃っているという技術デモを行った後、次に見せてくれるのはなにか? それは、Mac OS Xの中にどうマイグレーションさせてくるのかというマジックだと思えます。8月のWWDCでは、そのマジックがお披露目されることでしょう。
    私はCocoaからダイレクトにWindows APIが呼べる世界、そんなMacらしいマイグレーションが実現するのではと想像しています。

    既に商品化一歩手前まで行っているParallels Desktop for Macをみれば明らかなように、Mac OS Xを使いながら、その中でWindowsアプリが動くのは当たり前、Steve Jobs CEOはそんなことで満足する人ではありません。CocoaからWindows APIに直接アクセスできる仕掛けがLeopardには用意されるのではないかという気がしてなりません。

    どうです? 面白くなってきたでしょ? MacのアプリでWindows特有の機能が組込めるのです。たとえば、動画再生ソフトでWindows Media DRMを扱える、Macの業務アプリにWindows向けにしか用意されていない個人認証デバイスが使えるとか、そんなアプリをCocoaで開発できるようになるかも知れません。これまでWindowsを用意しなければできなかったような、あれやこれやがMacのアプリケーションの中で使えるようになるのではないか、WindowsアプリのデータをMac側にドラッグ・アンド・ドロップできるようになるのでは、と見ています。

    だって、そうじゃなきゃ、WWDCで発表する意味無いでしょ? ブートするときにMacかWinを切り替える機能が付きました、だけじゃたくさんの開発者の前で説明することって、全然ありませんよね。

    林伸夫(はやし・のぶお)

    ■プロフィール
     1949年10月14日、山口県生まれ。1972年大阪大学基礎工学部制御工学科(現情報科学科)卒。富士通、スイングジャーナル社を経て、1982年日経マグロウヒル社(現日経BP社)入社。91年3月日経パソコン編集長、91年10月日経BPシステムラボ室長兼務、92年6月パソコン局開発長、92年10月より日経MAC編集長。98年3月パソコン局次長兼務。99年3月からパソコン局主席編集委員、2000年4月からブックレビュー社編集統括ディレクター兼務、2001年3月から編集委員室主席編集委員、2004年1月から編集委員室主任編集委員、2005年1月から編集委員室編集委員。2006年4月、フリーに。

     ユーザーのためのパソコン情報誌「日経パソコン」の創刊企画に参加し、同誌創刊からのメンバー。誌面を通じて、ビジネスマンがパソコンをどう使うかを啓蒙。特に同誌のソフト評価では「コンピューターに詳しくない」一般のビジネスマンにとって、パソコンはどうあるべきかというテーマを追及、「日経パソコン評価委員会チーフ」を務めてきた。連載記事、特集記事などを通じてパソコン通信、パソコン教育、デスクトップ・パブリッシング、マルチ・メディアなど、パソコンの新しい利用分野を積極的に紹介してきた。

    93年4月には「創造的ビジネスのためのマッキントッシュ活用誌」を旗印に「日経MAC」創刊も手がけた。その後、編集委員室編集委員として、デジタル化、ネットワーク化が我々の社会生活をどう変えて行くのかを、一般ビジネスマンに向けて分かりやすい語り口で解説するなど、幅広く活躍。

     2006年4月、フリーに転身後、迷えるインターネットユーザー、Macユーザーに役立つ情報提供サービスを模索中。

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

     さて、今回はMac OS X Serverの初期設定の解説です。インストールが完了した後はシステムの基本的な設定を行うことになります。Mac OS Xでもインストール後に設定を行いますが、設定項目がかなり違いますし、できれば事前にどのような設定項目があるかを確認してから設定を行うのがよいでしょう。
     また、初期設定前の(ようするにインストール前ということなのですが)準備もあります。できることなら、これから構築するMac OS X ServerをDNSサーバに登録しておきましょう。これは、初期設定中にDNSサーバを参照して自動的に設定が行われる項目があるからです。さらにサービスによってはDNSの逆引きを必要とするものもありますので、DNSサーバに登録するさいには正引きと逆引きの両方を設定しておくのがよいでしょう。つまり、サーバに割り当てるIPアドレスとホスト名をあらかじめ決めておく必要があるということです。
     自由に設定ができるDNSサーバがない場合は、これから構築するMac OS X ServerでDNSサービスを稼働させるという方法もあります。

    □リモートで初期設定
     初期設定の方法ですが、インストール方法が何通りかあったように、初期設定の方法も何通りかあります。リモートインストールの方法を解説してきましたので初期設定もまずリモートで実行する方法を解説することにします。

    リモートインストールには「サーバアシスタント」を使用しましたが、初期設定をリモートで行う場合にも「サーバアシスタント」を使用します。ネットワーク上にインストールが完了したマシンがある場合「サーバアシスタント」で検出して、リモートで初期設定を実行することができます。これを行うには「サーバアシスタント」を起動すると「ようこそ」画面が表示されますが、ここで「リモートサーバを設定する」を選択します。
     そうすると、画面上にインストールが完了して初期設定待ちのマシンの一覧が表示されます。インストール時に表示された一覧ではMACアドレスが表示されましたが、初期設定の一覧ではMACアドレスが表示されずIPアドレスからマシンを特定することになります。インストールのときと同様に1台のマシンを設定する場合にはリストには1台しかマシンが表示されませんが、複数台のマシンを設定する場合にはリストからマシンを特定する必要があります。
     マシンを特定する方法ですが、リモートインストールを行っているのであればすでにMACアドレスを調べてあるはずですので、あとはarpコマンドを使って特定のMACアドレスに対応するIPアドレスを調べることができます。arpコマンドを”-a”オプション付きで実行すればネットワーク上のマシンのMACアドレスとIPアドレスの対応表を表示することができますので、ここからMACアドレスを手がかりにして、初期設定を行うマシンのIPアドレスを調べることができます。

    ・arpコマンドの実行例
    % arp -a

     マシンが特定できれば、次に特定したマシンの「適用」チェックボックスを選択しパスワードを入力します。パスワードはリモートインストールのときと同様に、マシンのシリアル番号の最初の8桁を使用します。

    さて、これでいよいよ初期設定が開始できます。Mac OS X Serverの初期設定では次のような項目の設定を行います。

    ・言語
     サーバのデフォルトの言語を英語、日本語、フランス語、ドイツ語から選択します。
    ・キーボード
     言語で日本語を選択した場合には「ことえり」が選択可能になります。
    ・シリアル番号
     Mac OS X Server(つまりソフトウェア)のシリアル番号を入力します。もしサイトライセンスを使用しているのであれば「登録名」と「登録組織名」も入力します。
    ・管理者アカウント
     「名前(long name)」、「ユーザ名(short name)」、「パスワード」を入力して、管理者アカウントを作成します。ここで入力したパスワードはrootユーザのパスワードとしても使用されます。Mac OS X Serverの場合はデフォルトでrootユーザが有効になります。初期設定を行ったあとは管理者アカウントとrootユーザのパスワードは個別に管理されます。
    ・ネットワーク名
     「ホスト名」、「コンピュータ名」、「ローカルホスト名」を設定します。ただしホスト名は冒頭で解説したようにDNSサーバを参照して動的に設定が行われますので、直接入力するのはコンピュータ名とローカルホスト名の2つです。コンピュータ名は「システム環境設定」の「共有」パネルで設定するコンピュータ名と同じものです。ローカルホスト名はいわゆるBonjourで使用される名前になります。

    さて、今回はまずは初期設定の前半部分を解説しました。次回は引き続き初期設定について解説したいと思います。

    つづく

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

     えっと、実を言うと今回からマウスカーソルの形を臨機応変、その場の状況によって変える仕掛けについて書こうと思っていたのだが、仕事をしててちょっとぎょっとするような問題に行き当たったのでそれについて書いてみたい。一応テストプログラムも書いて、バグレポートをAppleに送っちゃったんだけど、モサ伝タカハシ編集長の助けもあって、これが全然バグではなく、ちゃんとドキュメントされているMac OS Xの仕様であることを知ってまたびっくり。で、大変勝手ながらこの場をお借りしてバグでないものにバグレポ送ったことをアップルの人とかに謝りつつ(読んでないって)、この問題の存在を広く世に知らしめ、ひいては世界の平和と人類の幸福に寄与したいと、こう思う次第である(ちょっと嘘入ったけど)。

    まず、症状をご説明しよう。どこでもいいがテキトーにフォルダを作り、その中に「ふじもと.txt」というファイルを作る。ここ、大事ね、「ふじもと. txt」。「こいけ.txt」ぢゃダメ……ってこたないか、症状が出ない(あ、だからダメなのはふじもとの方が。ややこしいな)。このファイルの存在をCocoa を使って確認しようとすると、「こいけ.txt」は「あるよ」と正しい答えが出るんだけど、「ふじもと.txt」は「おめぇに食わせるタンメンはねぇ!」と言われてしまうんである。そんな馬鹿な、と思うでしょ。おれもそう思うがそんな馬鹿なんである。
     なんぢゃこりゃあああ、とにわかに松田優作化して、なにが起こってるのか確かめるためにテストプログラムを書いてみた。あとでMOSAのサイトにでも置いてダウンロードできるようにしてもらうつもりだが、以下のようなことを行うプログラムである。

    (1)セーブパネルを表示してユーザ(ちうかテスタというか)にファイル名とその保存位置を尋ねる。プログラムでは「ブ」で始まるファイル名をつけてみてくれ、と書いてあるが、上に書いたようにひらがなの「ふじもと」でも同じことが起きる。ユーザが指定した場所に指定した名前でテキストファイルを作成する。つまり「ふじもと」と入力されれば「ふじもと.txt」を作るわけね。なおこの時、このファイル名に対して、

    BOOL result = [filename isEqualToString: filename];

    とやれば、「こいけ」だろうが「ふじもと」だろうが結果はYESであります。当たり前だけどさ。

    (2)NSFileManager の directoryContentsAtPath: というメソッドを使って、今作ったファイルを含むディレクトリの一覧を取る。この結果は NSArrayで戻されるので、それを全部ユーザに開陳する。この一覧にはちゃんと「ふじもと.txt」が入ってるのを見せるわけ。種も仕掛けもございません、と。

    (3)さぁお立ち会い。NSArray のメソッド、containsObject: を使って「ふじもと.txt」の存在をチェックする。パラメータとして渡す文字列は(1)でファイルを作ったときに使ったフルパスから lastPathComponent で切ってきて、

    BOOL exist = [filesArray containsObject: filename];

    これを実行すると、小池さんはいるけど俺はいなくなってしまうのだ(いや、漢字で書けばいるんだけど)。ちなみに一覧のNSArray を以下のように変更可能にして、上のコードを実行する直前にfilenameを(ダブるのを承知で)足してやると、なぜかそれは見つかってYESが返ってくる。

    NSMutableArray* alterArray = [fileArray mutableCopy];
    [alterArray addObject: filename];
    BOOL exist = [alterArray containsObject: filename];  // これはいつもYES

    ということはこれは単に文字コードの問題ではないわけで、いったいどーなっておるのだ、と……、いったい全体なにが原因なんだろうか? ちうかどういう風にバグったらこんなことが起こるのか、それすら皆目見当がつかないではないの。な、オレならずともバグレポ出したくなるでしょう?
     そういうわけで次回はこの問題の種明かし編。いや、知ってた人にとってはなぁにを今ごろこんなことで騒いでるんだという噺家も知れないが……落語をやってどうする、話かも知れないが、上のプログラムを実行してみてオレと同様クビをひねったあなたには驚愕の事実がいま明るみに(ちとワイドショウ入ったな)!
    (2006_06_15)
    【編集部より】
    ・テストプログラムはこちら
    http://www.mosa.gr.jp/htmdocs/article/document/COMPAREBUG.zip

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

    UNIXとしてのMac OS X

    〜Perlについて(37)〜

     こんにちは、高橋真人です。早速始めましょう。
     では、前回保留にしておいたmap、grep、sortの利用によるデータ加工の部分を説明しますが、その前に、map、grep、sortの各演算子がリストを順に受け渡す処理においてどのような役割を持つかを、以前説明した内容に基づいて整理してみます。

    sort: 指定したルールに基づき、リストを並べ替える
    grep: 指定した条件に合う要素だけを抽出する
    map: リストの各要素に対して指定した処理を加える

     これらの役割を今回のスクリプトの中でどのように利用しているかを見ていきます。まず、処理の全体構造は以下のようになっています。(<>は、あとで説明に使うための番号付けです)

    map {<<1>>} sort {<<2>>} map {<<3>>} grep {<<4>>} map {<<5>>} <>;

     既に説明しましたように、このスクリプトでは、ファイルから読み込んだ各行を要素とするリストを構築し、後ろから順に各演算子に渡していきます。以下、(後ろから)順に演算子のブロックの処理を解説します。

    <<5>>:
    { [(split /\t/)] }
    


     この処理は極めて単純です。以前にも紹介したsplit演算子がリストの要素(元のファイルでは各行に該当)をタブ文字を区切りとしてさらにリストに分解しています。式の周囲を角カッコで囲んでいるのは連載の89回で説明した無名配列の生成です。(丸カッコは、あってもなくても同じです)
     これによって、リストの各要素はそれぞれが無名配列となります。元のデータを基準に考えますと、0番めの「管理ID」から、6番めの「使わない」までがそれぞれ無名配列中の要素として収まるわけです。

    <<4>>:
    { $_->[6] =~ /False/ }

     前段の<<5>>で無名配列に納められた要素は、grepのブロック中では$_で表されるリファレンス経由で参照されることになります。よって、$_->[6]という式によって6番めの「使わない」が表されることになります。この書き方は、今回のスクリプトにおいてキモとなる部分ですので、連載89回をしっかり理解して充分に慣れてください。
     grepは「要素の抽出」ですから、ここでは「使わない」がFalseであるもののみを拾い出しています。裏を返せば「使わない」がTrueのものを捨てているわけです。
     ところで、ここではTrueかFalseかを見るのに正規表現を使っていますが、これは当時の私の技量の「問題点」でして(笑)、今の私でしたら、$_->[6]ne ‘True’ と書いていたことでしょう。正規表現よりも単純な文字列比較の方がずっと高速ですから、必要以上に正規表現を使うのは処理を遅くします。ちなみに、$_->[6] eq ‘False’ でもよいのですが、万が一TrueもFalseも入っていないケース(例えば空欄など)も想定すると、「Trueでない」を判断した方がベターかと思います。

    <<3>>:
    {
         $_->[6] = substr($_->[0], 0, 2);
         $_->[7] = $_->[5];
         $_->[7] =~ tr/亜-熙//d;
         if (length($_->[7]) < 1) {
              $_->[8] = 1;
         } elsif ($_->[7] =~ /A-Z/) {
              $_->[8] = 2;
         } else {
              $_->[8] = 3;
         }
         $_ ;
    }
    


     上から順に解説します。
     前段で使って役割を終えた6番めの要素に0番めの要素の先頭2文字を入れています。このブロック全体が、次の段のsortを行うための準備をしているのですが、私が仕事で実際に扱ったデータでは管理IDは二重構造になっていまして、先頭2文字での並べ替えが必要な理由があったのです(たぶん・笑)。
     次に、新たに7番めの要素を追加します。ここにはまず5番目の要素をコピーし、次に漢字をすべて取り去ります。
     その結果、文字列の長さが0になった場合(つまり、すべてが漢字だったということ)は、8番めの要素(新規追加)に1を、全角アルファベットを含んでいる場合には2を、それ以外は3を入れています。
     7番目の要素に関しては、この処理のあとは一切使用していないので、本来ならここはローカル変数として処理すべきでしょうね。

    <<2>>:
    {
         if ($a->[6] ne $b->[6]) {
              $a->[6] cmp $b->[6];
         } elsif ($a->[8] ne $b->[8]) {
              $a->[8] <=> $b->[8];
         } elsif ($a->[8] == 1 and $b->[8] == 1) {
              $a->[2] cmp $b->[2];
         } else {
              $a->[5] cmp $b->[5];
         }
    }
    


     既に説明したように、前段の仕込みの結果に基づいて各要素をソートします。以前にも説明したかと思いますが、各要素の比較において、文字列の場合にはcmp演算子、数値の場合には<=>演算子を使っています。(連載86回参照)

     さて、残るは最後のクライマックス(大げさ・笑)となるファイルへの書き出しですが、既に行数も大幅にオーバーしておりますので、次回をご期待ください。

    ニュース・解説

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

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

    【開発環境】

    ビルゲイツ氏が引退を表明したというニュースが大々的に流れている今日この頃ですが、皆さん、WWDCの参加登録手続きは完了していますか? 早期割引の締め切りは6月22となっていますので、参加予定の方は御注意ください。MOSAでも引き続きWWDCツアー参加者を募集していますので、こちらもお早めに!

    http://www.mosa.gr.jp/htmdocs/article/event-wwdc2006tour.php

    以前紹介した、インテルCPUの仮想化技術を使いMac OS Xで別OS(LinuxやWindows XPなど)を起動することができる「Parallels Desktop for Mac」の正式版がついに発表になりました。今から一ヶ月以内に購入すれば、$79.99が$49.99に割引きされるようです。WWDCにおいて、Apple社が自社製の同技術を発表するのを恐れているような値付け作戦ですね(笑)。それはさておき、Parallels Desktop自体は大変良くできていて面白いソフトのようです。興味のある方はぜひお試しください。

    http://www.parallels.com/en/download/mac

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

    前回から6月16日の期間中、Apple社のDocumentationサイトには新規ドキュメントがひとつも登録されませんでした。ただし、デベロッパ向け読み物は2つ登録されています。「Empowering Your Carbon Application with the VoiceOver Accessibility Interface」は、珍しくCarbonネタです(笑)。
    VoiceOver AccessibilityインターフェースをCarbonアプリケーションで活用するための詳しい解説ですが、VoiceOver自体が日本語に対応していない現実がありますので、今ひとつやる気が起きないのも事実です。「Developing Games on Mac OS X Using Third-Party Game Engines」については、前号の木下さんの記事も参照してください。なにやら最近、Apple社はゲーム関連に力を入れてますね。何かあるのでしょうか?

    「Empowering Your Carbon Application with the VoiceOver Accessibility
    Interface」(読み物)

    http://developer.apple.com/ue/accessibility/voiceoverincarbon.html

    「Developing Games on Mac OS X Using Third-Party Game Engines」(読み物)

    http://developer.apple.com/games/gameenginesonmac.html

    前回から6月16日の期間中、新規テクニカルノートと新規テクニカルQ&Aはひとつも登録されませんでした。そろそろWWDCも近いですし、何やら新製品発表間近の噂も流れていますので、関連技術者が忙しいのでしょう…。

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

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

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

    前回から6月16日期間中、Apple社のSample Codeサイトには、新しいサンプルソースコードが2つ登録されました。どちらも初めての登録です。
    「Test64BitMultiprec」では、64Bit整数値などの演算方法について幾つかのアプローチを紹介しています。

    「Test64BitMultiprec」(AltiVec関連)(初版)
    「RecentItems」(Carbon関連)(初版)

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

    【デベロップメント SDK】

    前回から6月16日の期間中、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.

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

    2006-06-13
     

    目次

    • MOSA理事コラム         第1回   矢野 孝一 ★新企画★
    • 「「Wonderful Server Life」   第6回  田畑 英和
    • 小池邦人の「Carbon API 徒然草」
    • SqueakではじめるSmalltalk入門  第63回  鷲見 正人
    • ニュース・解説               木下 誠

    MOSA理事コラム   第1回
             ヤノ電器株式会社 代表取締役社長 矢野 孝一

     ちょっとした機会からストレージに関り始め、既に20年が過ぎてしまいました。皆さんからは、ストレージの専門家と云って頂く事もありますが、その度に勉強不足の自身を反省しもっと勉強しなければと思います。 ただ、20年に渡って供給する側としてストレージに関ってこれた事で、僅かながらも経験と思慮の積み重ねは出来たのかなと考えています。
     そうした立場で、最近考えている事をご紹介させて頂きます。 物事が大きく変化する時、その前段階においては混沌とする時期があるという様な事が、幾つかの本にも書かれていました。 そうした視点で見ると、ストレージもその進化と云う点では、大きな変革を前にした混沌の時代なのかと思います。
     様々な機能が付いた製品が作られていますが、どれも「本流」というものではなく多様なニーズに対応したというモノになっているように思われます。 小手先の対応や手前だけを見たモノ作りになっているように感じるのです。 つまり、供給する側、デバイス、メディアを作り供給する側のはっきりとしたメッセージや志が、伝わって来ないのです。ユーザーの立場からみると、自身の課題に対してどのデバイス、メディアを使用すれば良いのか、明確な説明を受ける事もないまま選択してしまっているのではないでしょうか。

    Apple社のiPodやそれに関る事業を見ても、単なるデバイスの変化というのではなく、本質的なデータの取扱方法の変化の兆しを見て取れます。ストレージレスのPCやNC等と云った製品もありますが、これとは大きく異なる質のものだと思います。
     私たちも、こうした変革に向けてサードパーティーであり続けるためにも、本質的な変化をしっかり理解しそれをメッセージとして伝えられる製品や事業に移行をしたいと考えています。 そのためのパートナー作り、仲間作りを急いでいます。 もし、興味のある方があれば是非声をかけて頂きたいと思います。
     90年代のPC革命からWeb革命の時代に移って来ているとも言われますが、当時から云われていた「個人に力を」をというスローガンによって実現された大量の情報が創り出されるようになりました。 それらを、どう保持していくのか、共感されるビジョンを創り具現化の手法を提案をしていきたいと考えています。

    矢野 孝一 ヤノ電器株式会社 代表

    ●執筆者プロフィール
    矢野孝一(やの たかかず)
    ヤノ電器株式会社 代表取締役社長

    1958年岡山市生まれ。大阪教育大学 教育学部を卒業後FAエンジニアリング会社にハード&ソフトのエンジニアとして勤務、その後大阪府立中学校講師をつとめるなどしたのち、ヤノ電器株式会社にて「C&Eコンピュータ」の名称でコンピュータ関連の事業をスタート。1998年より同社代表取締役に就任、現在に至る。2000年よりMOSA会長を務める傍ら全国組織「教育とコンピュータ利用研究会」事務局長も務めている。

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

     この連載を開始してからなんだかインストールの話ばかりしていますが、今回でようやくインストールの解説は終わりになります。これまでリモートインストールの方法を中心に解説してきましたが、今回はそのほかのインストール方法について解説したいと思います。
     今回解説する方法はMac OS X ServerだけでなくMac OS Xでも共通して利用できますので、参考にしていただければと思います。

    □インストール対象のマシンをターゲットディスクモードで起動
     まず、インストール対象のマシンをターゲットディスクモードで起動します。ターゲットディスクモードで起動するには、キーボードの「T」のキーを押しながらマシン本体の電源を入れます。あるいはTigerでは「システム環境設定」の「起動ディスク」パネルからターゲットディスクモードによる起動ができますので、すでにOSがインストールされている環境では「システム環境設定」からターゲットディスクモードで起動することもできます。
     ターゲットディスクモードで起動したマシンはFireWireの外付けハードディスクとして扱えます。ですのでほかのマシンにFireWireケーブルで接続して、アクセスできます。この方法を使えばCD/DVDドライブを搭載していないXserveクラスタノードモデルにもインストールディスクからOSをインストールすることができます。
     つまり、ほかマシンをインストールディスクで起動して、そこにターゲットディスクモードで起動中のインストール対象のマシンをFireWireケーブルで接続します。OSのインストールは内蔵/外付けにかかわらず任意のボリュームにインストールできますので、マシンを2台組み合わせればターゲットディスクモード経由でOSのインストールができるのです。
     ただし、注意していただきたいことがあります。最近のMacは冷却ファンの回転数をOSで管理していますが、ターゲットディスクモードで起動中のマシンは冷却ファンの回転が制御されず、派手にまわることになります。そのため周囲に騒音をまき散らしてしまうことになりますので、作業場所にはくれぐれもご注意ください。

    □ターゲットディスクモードで起動したマシンを外付けドライブとして使用
     今度は先ほどとは逆の方法です。ほかのマシンをターゲットディスクモードで起動して、インストール対象のマシンにFireWireケーブルで接続します。こうすることでほかのマシンに搭載されているCD/DVDドライブを、外付けのドライブとして使用することができます。つまり、Macを外付けCD/DVDドライブとして使用することにより、インストールができます。

    □ネットワークインストール
     NetBootのテクノロジーを利用してOSをインストールします。この方法を使えばインストールディスクからマシンを起動する必要がなくなり、インストールディスクを使用した場合とくらべて、インストール時間も短縮することができます。OSのインストールを頻繁に行うような環境ではかなり威力を発揮します。
     Mac OS X Serverを用意してNetBootサービスを設定し、インストールするOSをあらかじめディスクイメージとしてサーバ上に用意しておく必要はありますが、設定さえしてしまえば、ネットワーク上で複数台のマシンを同時にインストールすることができます。マシンを大量にインストールしなければならない環境ではかなり省力化に貢献することになります。NetBoot/ネットワークインストールについては機会があればまた別途詳しく取り上げてみたいと思います。

    □コマンドラインからのインストール
     さらに上級のテクニックとしては、コマンドラインからインストールを行う方法も用意されています。この方法を利用することはあまりないかと思いますが、興味のある方はinstallerコマンドについて調べてみてください。

    □インストールしない
     各マシンにはあらかじめOSがインストールされた状態で出荷されていますので、もちろんそのまま使ってもよいわけです。ただしパーティションを分割したいといったような場合には基本的にはインストール前に作業を行う必要がありますので、この場合はパーティションを分割してからOSをインストールすることになります。

    というわけで、これまでOSのインストール方法について解説してきました。OSのインストールが完了した後は初期設定を行う必要があります。Mac OS Xとはまた違った初期設定がMac OS X Serverでは必要になりますので、次回は初期設定について取り上げてみたいと思います。

    つづく

    小池邦人のCarbon API 徒然草(2006/06/09)

    〜 アプリケーションのUniversal Binary化(その10) 〜

    今回から数回に分けて、Universal Binary化における最大の難関(笑)PowerPCのAltiVecコードをIntel CPUのSSE/SSE2コードに変換する作業を解説します。加えて「アプリケーションでAltiVecやSSE/SSE2を利用すべき箇所はどこか?」などについても、色々と考察してみたいと思います。

    PowerPCが、画像、映像、サウンド、圧縮伸張、科学演算処理などを高速に実行できるという評判を得ていたのは、その内部にベクトル演算ユニットであるAltiVecを搭載していたからです。AltiVecは、SIMD(Single Instruction Stream Multiple Data Stream)アーキテクチャに分類される演算ユニットです。つまり、単一の命令により複数のデータを同時に処理することができます。AltiVecは、ひとつの命令で4つの浮動小数点(単精度)もしくは4つの整数値(long値)に対して、かけ算や割り算などを効率よく実行することが可能です。そのため、単純な演算を何回も繰り返すような処理(画像フィルタ処理など)には、絶大な威力を発揮します。

    例えば、筆者は、CPUの浮動小数点演算を用いていた画像フィルタルーチンをAltiVecコードで書き直した経験があります。この書き直しにより、なんとフィルタ処理速度が7倍も高速になりました。さらに、この処理をマルチCPUに最適化することで、トータルで13倍の処理速度を得ることができました。1.5倍とか2倍でも「おっ、結構速くなったぞ!」と実感できるのですが、13倍となるとまったく別次元となります。逆に言えば、ちゃんとやれば高速化できるのに、AltiVecやマルチCPUに最適化していないため本当の能力を発揮できていないアプリケーションが、世間にはまだまだ沢山あるのも事実です(笑)。

    当然、Intel版CPUにはAltiVecは搭載されていませんが、その代わりSSEと呼ばれるSIMD演算ユニットが搭載されています。SSEは、SSE、SSE2、SSE3といった呼び名が示している通り、CPUが世代交代するのに伴いその命令数を拡張してきました。何やら、次世代のCPU(Core 2 Duo)では、これがSSE4に拡張され、さらなる高速処理が可能になると言った話も聞こえてきます。アプリケーションの処理内容によっては、Universal Binary化する時に、AltiVecコードで高速化していた箇所をSSE/SSE2コードに置き換えないと、Intel環境での処理速度がPowerPC環境と比べて見劣りすることになります。

    一番分かり易い例はQuickTimeです。QuickTimeは、画像や映像処理のボトルネックにおいて、AltiVecの能力を最大限に生かしました。当然、Intel版CPU用QuickTimeでは、その代役としてSSE/SSE2を活用していると思われます。ところが、現在のSSE/SSE2はAltiVecよりも命令数も少なく、その速度も優秀ではありません。ちまたで行われているベンチマークを見た時、マルチメディア処理においてはPowerPC G5搭載のMacintoshの方がIntel版より良い結果を示しているのは、こうした理由があるからです。まあ、QuickTimeの最適化がどこまで進んでいるのかも怪しいのですが、開発者が処理速度を稼ぐのに結構苦労している様子がうかがえます。

    そんな事情もありますから、何でもかんでもSSE/SSE2に書き直せばOKかと言うと、物事はそんなに簡単ではありません。筆者の経験からすると、最新のIntel版CPU(Core Duo)は、整数処理については同クロックのPowerPC G5より2倍以上高速です。ところが、浮動小数点処理は7割、SIMD処理については5割ぐらいの速度しか出ません。つまり、PowerPCではAltiVecを利用して高速化していた整数処理が、SSE/SSE2に書き換えると、CPU自身の整数処理を使うより遅くなってしまう場合も有り得るわけです(下手くそな記述をすると)。

    このように色々と難しい問題もありますが、まずは、Apple社が提供しているAltiVecとSSE/SSE2に関するドキュメントを紹介しておきます。AltiVecコードに精通されており、Universal Binary化においてAltiVecコードをSSE/SSE2コードに変換する作業が必要な方は、まず最初に「AltiVec/SSE Migration Guide」ドキュメントを参照しましょう。と言うより、AltiVecとSSE/SSE2に関する詳しいドキュメントは、これしか存在しません。

    「AltiVec/SSE Migration Guide」「Accelerate_sse_migration.pdf」(PDF 44ページ)

    http://developer.apple.com/documentation/Performance/Conceptual/Accelerate_sse_migration/index.html

    次に紹介するのは、AltiVecやSSE/SSE2を使うことで特定の処理を高速化するために用意されたFrameworkの解説ドキュメントです。これらのFrameworkでは、処理の高速化のためPowerPC用ではAltiVecが、Intel版CPU用ではSSE/SSE2が積極的に使われています。こうしたAPIは「Accelerate.framework」にまとめられており、アプリケーション作成時にこれをリンクすることで、自作ソースコードから呼べるようになります。

    このうち、フィルタなどの画像処理関連ルーチンは「Optimizing Image Processing With vImage」ドキュメントで解説されています。また、ベクトル演算やマトリックス演算、そして高速フーリエ変換などについては「vDSP Library」ドキュメントを、その他の多様な演算については「vecLib Framework Reference」ドキュメントを参照してみてください。もし、AltiVecコードでガリガリ記述していた箇所を、こうしたFrameworkのルーチンに差し替えることができれば、SSE/SSE2への書き換えの手間を大幅に削減できるわけです。

    「Optimizing Image Processing With vImage」「vImage.pdf」(DF 366ページ)

    http://developer.apple.com/documentation/Performance/Conceptual/vImage/index.html

    「vDSP Library」「vDSP_Library.pdf」(PDF 73ページ)

    http://developer.apple.com/documentation/Performance/Conceptual/vDSP/index.html

    「vecLib Framework Reference」「vecLib.pdf」(PDF 111ページ)

    http://developer.apple.com/documentation/Performance/Conceptual/vecLib/Reference/reference.html

    「vecLib Reference Update」「vecLibRefUpdate.pdf」(PDF 26ページ)

    http://developer.apple.com/documentation/Performance/Reference/vecLibRefUpdate/index.html

    「Accelerate Reference Updat」「AccelerateRefUpdate.pdf」(PDF 24ページ)

    http://developer.apple.com/documentation/Performance/Reference/AccelerateRefUpdate/index.html

    次回は、今回紹介した幾つかのトピックスのうち、フィルタなどの画像処理に活用できるvImage.frameworkのルーチンを、例題を示しながら解説したいと思います。

    つづく

    SqueakではじめるSmalltalk入門   第63回  鷲見 正人

     本連載では、名前は知っていてもなかなか触れる機会のないSmalltalkについて、最近話題のSqueakシステムを使って紹介しています。今回は、Morphic GUIフレームワークが提供する、システムウインドウ(…という複合モーフ)が、マウス操作に対してだけでなく、Smalltalkコードを介したメッセージングに対し、どのように振る舞うかを見てみましょう。

     Squeakシステムのアプリケーションはたいてい、システムウインドウを用い、そこに各種機能をサブモーフとして登録することで構築されています。書きかけのメモ帳である「ワークスペース」、クラス定義の閲覧・編集用でお馴染みの「システムブラウザ」、ファイラとエディタを兼ねた「ファイルリスト」など、ALTO時代から続く旧MVC GUIフレームワーク上に構築された古典的なSmalltalkアプリケーションの多くは、新しいMorphic GUIフレームワークへの移行後も、引き続き利用できるように移植されました。

    もちろん例外もあって、Morphic GUIフレームワークへの移行後に新たに必要とされて作られたソフトの中には、システムウインドウを使わないものもあります。たとえば、ゴミ箱の中味にアクセスするためのモーフ(ゴミ箱はAppleの発明で、ALTO時代にはありませんでした)や、各種モーフを分類して引き出せるようにする「オブジェクトのカタログ」…などがこれにあたります。この種のソフトでのウインドウ(もどき)の移動やサイズ変更は、コマンドクリックによりモーフとして選択した後、ハローを使って操作します。

     さて、話をシステムウインドウに戻しましょう。

     前々回の分解や、インスペクタによる解析からもお分かりいただけたように、システムウインドウは、ベースとなる矩形枠とタイトルバーにより構成されています。タイトルバーにはさらに、中央にウインドウタイトル、左側にはクローズボタンとウインドウメニューボタン、右側にはズームボタンと折りたたみボタンがあります。折りたたみボタンというのは、ウインドウをタイトルのみにする、旧Mac OSで言うところのウインドウシェード機能を司るボタンです。余談ですが、ゴミ箱と違い、この機能はALTO/Smalltalkシステムのほうがずっと先(1970年代半ば)です。

    前回提示したスクリプトにも含まれていましたが、システムウインドウ(a SystemWindow)というモーフを作って画面に呼び出すには、次のような式を評価(選択して、do it(cmd + D))します。

    (SystemWindow labelled: 'Window Title') openInWorld

     他の一般的なモーフ同様、カーソルの位置に表示するには、openInWorldの代わりにopenInHandを送信します。

    (SystemWindow labelled: 'Window Title') openInHand

     新しく作られたウインドウが、マウスポインタについてくる(ピックアップした状態になる)ので、最初にクリックした場所に設置することができます。

    もちろん、作ったウインドウをテンポラリ変数に束縛し、そこにメッセージを送っても、まったく同じです。

    | window |
    window := SystemWindow labelled: 'Window Title'.
    window openInWorld
    


     メッセージ「setWindowColor: aColor」をシステムウインドウに送信することで、その色を自由に変えられます。

    | window |
    window := SystemWindow labelled: 'Window Title'.
    window setWindowColor: Color orange.
    window openInWorld

     ウインドウの色は、あらかじめ設定しておくだけでなく、画面に呼び出した後に変えること可能です。たとえば、次のスクリプトでは、最初、オレンジで現れたウインドウが青色に変化します。変化の様子を把握しやすいように、途中で0.5秒のウエイトを入れてみました。

    | window |
    window := SystemWindow labelled: 'Window Title'.
    window setWindowColor: Color orange.
    window openInWorld.
    
    (Delay forMilliseconds: 500) wait.
    window setWindowColor: Color blue

     同様のことは、ウインドウのインスペクタでも行なえます。開いたウインドウをモーフとして選択(コマンドクリック)したときに現れる灰色のデバッグハローをshiftキーを押しながらクリックするか、次のスクリプトを評価して、ウインドウを束縛したインスペクタをあらかじめ呼び出しておきます。

    | window |
    window := SystemWindow labelled: 'Window Title'.
    window setWindowColor: Color orange.
    window inspect; openInWorld
    


     呼び出したインスペクタ下部の作業用ペインで、次のような式を評価することで、先のスクリプト中の式と同じ要領で色を変えることができます。ただ、レシーバがテンポラリ変数のwindowから擬変数のselfに変わっていることに気をつけてください。

    self setWindowColor: Color yellow

    [fig.A]インスペクタの作業用ペインでスクリプトを実行

     タイトルバーの各種ボタンをクリックしたときと同じことを、ウインドウへのメッセージングでも行なえます。…というよりは、各種機能ボタンをクリックしたときに、これらと同じメッセージがウインドウに送られる仕組みになっているので、当たり前、といえば当たり前ですね。

    “ウインドウを最大化・元に戻すトグル”

    self expandBoxHit

    “ウインドウを折りたたみ・元に戻すトグル”

    self collapseOrExpand

    “ウインドウタイトルの変更”

    self setLabel: 'Changed Title'

    “ウインドウを閉じる”

    self closeBoxHit

     閉じてしまっても、インスペクタが束縛している限りガベージコレクトの対象にはならないので、再び呼び出すことができます。

    “閉じたウインドウの再度呼び出し”

    self openInWorld

     通常はタイトルバーのドラッグによる位置の移動や、ウインドウ枠境界部のドラッグによるサイズ変更も同様にSmalltalkのスクリプトとして評価可能です。

    “サイズを変えて、デスクトップ中央に移動”

    self extent: 320 @ 240; center: World center

     次回は、このシステムウインドウのクラスであるSystemWindowを継承して、ほんのちょっとだけ機能を追加した新しいウインドウを定義してみましょう。

    バックナンバー:

    ニュース・解説

     今週の解説担当:木下 誠

    ———————————————————————-
    WWDC 2006情報
    ———————————————————————-

    今週はADCのサイトでの動きが少なかったですね。WWDCを控えた、嵐の前の静けさなのでしょうか。

    WWDC 2006のサイトは、新規情報は少ないものの、Webサイト自体が充実しつつあります。Schedulesのページもできあがっていました。すでに公表されているセッションが埋まっています。

    ざっと眺めてみると、まだまだ未発表のセッションがたくさんありますね。ここに、どのようなセッションが登場するのか。もう少しだけ待ちましょう。

    WWDC 2006 – Schedules
    http://developer.apple.com/wwdc/schedules/

    ———————————————————————-
    Mac OS Xでのゲーム開発環境
    ———————————————————————-

    「Developing Games on Mac OS X Using Third-Party Game Engines」という記事が公開されています。Mac OS X上で動作する、ゲーム開発用のエンジンが紹介されています。

    取り上げられているのは4つです。Torque Game Engine、Torque Game Builder、Unity、PTKになります。3Dゲーム向けのものや、2Dゲームに特化しているものが含まれます。

    そういえば、WWDC 2006でも、ゲーム開発者に向けた情報提供のサイトが作られていましたね(Community Focus: Games Development)。Mac OS Xの活躍する新しい領域として、ゲーム分野の開拓を狙っているのかもしれません。といって、何か特別な技術の提供がある訳でもないですが。

    Developing Games on Mac OS X Using Third-Party Game Engines
    http://developer.apple.com/games/gameenginesonmac.html

    WWDC 2006 – Community Focus: Games Development
    http://developer.apple.com/wwdc/games.html

     

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

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