MOSA Multi-OS Software Artists

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

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

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

2006-08-08
 

目次

  • MOSA理事コラム          第4回   佐藤 徹
  • 「「Wonderful Server Life」   第14回  田畑 英和
  • 小池邦人の「Carbon API 徒然草」
  • SqueakではじめるSmalltalk入門  第67回  鷲見 正人
  • ニュース・解説               木下 誠

MOSA理事コラム   第4回 「WWDCとインターネット」
                  岩田 勇  株式会社エルゴソフト

MOSA会員の皆様、今年も暑い夏をどのようにお過ごしでしょうか。タイミング良くWWDCの開催の頃に私の原稿をご覧に頂くことになりましたので、少しWWDCのネタに触れてみたいと思います。

今年のWWDCは8月7日からサンフランシスコの真ん中にあるモスコーンセンターで開催されますが、数年前まではサンフランシスコから1時間半ぐらいのところにあるサンノゼという街のコンベンションセンターでゴールデンウィーク明けに行われていました。
参加するとなるとゴールデンウィークを含めて半月ぐらい会社を空けることになるので、毎回その準備でかなり四苦八苦した記憶があります。
その昔はe-mailや携帯電話なんて便利な道具はありませんでしたから、日本とのやりとりは基本的にFAXになってしまい、問い合わせて回答まで1日ぐらいかかります。ですから、半月不在でも業務にも支障が無いように一通り手配する必要があったのです。(今では現地の夜中でも平気で携帯に電話が入りますから…。逆に準備は楽になりましたが…)参加する側からみれば、簡単に邪魔が入らないわけですから、この隔離された環境で1週間どっぷりと新技術に浸れるという点では楽しい一時ではあります。もちろん観光旅行ではありませんから、仕入れた最新情報を日本に報告する義務があります。その昔はキーノートが終わった後、日本の朝一の時間にあわせてホテルに戻り、速報を国際電話で報告なんてことをしていました。
今では、キーノートが終わると速報をe-mailすることになりますが、キーノートで発表された内容をまとめ報告しても、チョット聞き漏らした箇所なんかは日本で様々な速報サイトを見ていた人間の方が詳しくて、間違いを訂正されるなんて、笑えないこともありました。
以前はWWDCに参加するのには、最新情報を収集するという明確な目的がありましたが、最近は少々薄れてきているように感じます。
振り返ってみると、インターネットや携帯電話という通信インフラが気がつかない内に、私たちの行動に大きく影響を与えていることに驚かされます。
ところで、毎年WWDCでは新製品の発表があります。今年は何が発表されたのでしょうか。皆さんの予想は的中しましたか?(ちなみに私は、昨年のIntel Macの発表を当てました)
日本にいらした皆さんはどうやってそれを知りましたか。
やっぱりインターネットは便利なツールなんですね。

■プロフィール
岩田 勇
いわた いさむ

株式会社エルゴソフト
取締役マーケティング部長
1963年生まれ。1986年エルゴソフトへ入社。
EGBRIDGE、かな漢字変換エンジンなどの開発担当、EGWORDの開発責任者を経て、2002年より同職。
現在のMacBook Proで、個人購入のMacとしては Mac SEから数えて10台目。
この夏、MacBook Proのパームレストの熱さに耐えきれるか不安に思うに日々を過ごしている。

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

 さて、この原稿はWWDC前に書いておりますが、この号が配信されるころにはもう基調講演も終わり、新しい発表で話題が持ち切りなことでしょう。基調講演ではサーバ関連の発表はあまり期待できませんが、なんといっても今年の目玉はLeopardですね。これまでと同様ならばLeopardとLeopard Serverが同時にリリースされるでしょうから、Intelへの切り替えとあわせて今後の対応を考えていかなければなりません。

さて、前回までMac OS X Serverの管理ツールについて解説してきましたが、今回はもう1つサーバ管理に役立つツールをご紹介しておきましょう。前回まではMac OS X Serverに標準で付属する管理ツールを解説してきましたが、今回ご紹介するツールはアップルの製品ではありますが、別売のソフトです。
 標準で付属する管理ツールの多くはネットワーク対応しており、リモートでの管理ができます。また、Mac OS X Serverはデフォルトでsshが有効になっていますので、「ターミナル」からコマンドラインでリモート操作することもできます。つまりほとんどの管理作業はリモートでもできるのですが、なかには画面を直接操作したい場合もあるでしょう。たとえばGUIでしか操作できないソフトをサーバ上で使うことも考えられますし、そもそもGUIでの操作のほうが慣れている方もいらっしゃるでしょう。
 そんなときに役に立つのが「Apple Remote Desktop(ARD)」です。ARDを使えば、ネットワーク上のマシンの画面をリモート操作することができます。サーバ機の場合はモニタを接続せずにヘッドレスで運用したりもしますが、そんなときでもARDを使えばリモートで画面を操作することができます。

ARDの環境をセットアップするにはまず管理用のMac(Mac OS Xで大丈夫です)を1台用意してください。そして、管理用のMacにARDをインストールします。ARDですが、こちらは別売のソフトですのであらかじめ購入しておく必要があります。ARDのライセンスには2種類ありApple Storeでの価格は以下のとおりです。

ARDの価格
・Unlimitedマネージドシステム版 57,000円
・10マネージドシステム版 34,000円
http://www.apple.com/jp/remotedesktop/

 ARDの最新版はVer3が最近リリースされ、2種類のライセンスが用意されています。2つのライセンスの違いですが、10マネージドシステム版では同時に10台以下のマシンしか管理することができません。Unlimitedマネージドシステム版では同時に管理できるマシンの台数に制限はなく、無制限に管理することができます。
 一方ARDの管理対象となるマシンですが、Mac OS XおよびMac OS X ServerにはあらかじめARDの機能が備わっています。この機能を有効にするには「システム環境設定」の「共有」で「Apple Remote Desktop」を開始します。また開始にするだけではダメでして、別途アクセス権の設定も行う必要があります。
 ARDでマシンを管理するには、管理用のMac上であらかじめ管理対象のマシンをリストに追加しておく必要がありますが、このときユーザ認証が求められます。つまり、管理対象のマシン上でアクセス権の設定を行い、ユーザ認証に用いるアカウントを指定しておく必要があるのです。またARDでは様々な操作ができますが、許可する操作もアクセス権の設定で指定できます。

準備が整えばさっそく管理用のMac上で、管理対象のマシンをリストに追加しましょう。管理対象のマシンが多い場合は、「iTunes」のようにマシンをグループ化して管理することもできます。マシンをリストに追加したらまず「管理」メニューから「クライアントソフトウェアをアップグレード」を実行しましょう。ARDの最新版はVer3ですが、Ver3はまだリリースされたばかりですので、管理対象のマシンには少し古いバージョンのARDが組み込まれています。
 アップデートを実行しないと最新版で追加された機能が使えなかったりしますので、まずはアップデートを行いましょう。アップデート作業は、管理用のMac上で一括して実行できます。複数のマシンを同時にアップデートすることもできるのですが、同時にアップデートを行う場合動作が不安定になることがあります。1台1台個別にアップデートを行う場合には特に問題はありません。

さて、ARDでどのような管理ができるかですが、基本的な機能としては監視と制御があります。監視機能では複数台のマシンの画面を同時に監視することができます。監視対象のマシンが多くて1画面に表示しきれない場合は、定期的に画面を切り替えながら(自動的に切り替わります)すべてのマシンを監視することができます。ARD3では画面監視用のDashboardウィジェットも用意されています。
 制御機能では管理対象のマシンの画面をリモートで操作できます。ARD3からは制御の機能が強化されて、ローカルマシンとリモートマシンとの間でドラッグ&ドロップによるファイルのコピーが出来るようになりました。またクリップボードの内容もローカルとリモート間でやり取りすることができます。ARD2までは制御中の画面操作はそのまま管理対象のマシンの画面上に表示されていましたが、ARD3からは新たにカーテンモードが加わり、このモードで制御しますと管理対象のマシン上では画面がロックされて、管理者の操作を隠すことができるようになりました。
 その他にもARDではパッケージをリモートインストールしたり、管理対象のマシンの情報(ハードウェアおよびソフトウェアに関する情報)をレポートしたり、Unixコマンドを送信したりできます。また、管理対象のマシンのスリープ、再起動、システム終了、起動ディスクの変更などもでき、複数台のマシンを管理しているときには特に威力を発揮します。これらの操作はただちに実行することもできますし、スケジュールを設定しておいて特定の日時に実行することもできます。
 ARDはシステム管理を強力にサポートしてくれますので、ぜひ導入を検討してみてはいかがでしょうか。

つづく

小池邦人のCarbon API 徒然草(2006/08/04)

〜 Carbonモダンアプリケーションへの道(その1) 〜

今回からは、「Carbonモダンアプリケーションへの道」というテーマで、Carbon APIに関連する最新の話題を取り上げてみます。

「モダンアプリケーションを作りたければCocoaを使えば?」という意見もあるでしょうが(笑)、それを言ってしまうと本連載の意味が無くなりますので、「最近のCarbon APIも随分とモダンになったもんだ」という暖かい眼差しで気長にお付き合いください。具体的には、自作ソースコードに太古から鎮座している「レガシーなCarbon API」を、最近登場した「モダンなCarbon API」に差し替えていく作業を解説します。例えば描画処理であれば、QuickDraw APIを用いている箇所をQuartz 2D(Core Graphics)APIで差し替える作業などが対象となります。当然、新しいAPIはMac OS Xに最適化されていますので、こうした差し替え作業の積み重ねが、自作アプリケーション全体のパフォーマンスや操作性の向上につながるわけです。

それから、今回は、モダンAPIへの差し替え作業を急がなければならないもうひとつの大きな理由が存在します。Mac OS Xが登場した時、我々デベロッパーは自作アプリケーションを延命するため、ソースコードに記していた旧ToolBox APIの多くをCarbon APIへと差し替えました。この作業を「アプリケーションのCarbon化」などと呼んでいましたが、確か、System 7が登場した時や、MacintoshのCPUがIBMのPowerPCに切り替わった時にも、小規模でしたが、そうした差し替え作業を行った記憶があります。しかし、インテル版CPUを搭載したMacintoshの登場で発生した「Universal Binary化」においては、こうしたAPIの差し替え作業は不要でした。そんなわけで、少々油断をしていたら、実際にはその裏で、Apple社による今までにない大規模な「API切り捨て作戦」が展開されていたのです。

Carbon Frameworkを用いてプログラミングをされている方は既にご存じだと思いますが、Mac OS X 10.4(Tiger)のDeveloper Tools(Xcode Tools)では、Apple社が「これからは使うことを推奨しない」と明言したAPIの存在を確認することができます。Frameworkのヘッダファイルの定義に「*** DEPRECATED ***」というコメントが入っているAPIがその対象です。Xcode 2.3で「Mac OS X 10.4(Universal)SDK」を用いている場合、もしソースコードにこうしたDEPRECATED APIが記述されていると、コンパイル中にその都度警告が表示されます。古いソースコードを実際にコンパイルして試してみると、ちょっとした規模のものでも数百、プロジェクトが大規模になれば1万を越える警告が表示される場合もあります。それほど多くのAPIが、Apple社により「推奨しない」という烙印を押されたことになるわけです。

例えば、数百ものAPIが定義されているQuickDraw.hヘッダファイルでは、コールバック用のUniversal Procedure Pointer API(名称の最後がUPP)を除くと、生き残っているAPIはわずか60弱のみです。それ以外はすべてDEPRECATEDとなっています。また、QD.hの一部である、QuickdrawText.hやQDOffscreen.hを見てみると、既存APIは全滅していることが分かります(涙)。ところで、Xcodeが表示する警告ですが、なにやら「旧友」をバカにされているような気分になり、古くからのMacintoshプログラマにとっては感じ良くありません…。この警告の除外は、プロジェクトアイコンやターゲットアイコンを選択し、「情報を見る」で表示されるウィンドウの「ビルド」タブで行います。上部のコレクションメニューから「GNU C/C++コンパイラ4.0」「警告」を選び、「推奨されない関数についての警告」のチェックを外しておけばOKです。

では、DEPRECATEDと言うのは具体的に何を指すのでしょうか?そして、このAPIの運命はいったいどうなるのでしょうか(Cocoaにもあるらしい)?「推奨されない」とは、こうしたAPIがそのうちシステムから完全に取り除かれることを意味しています。とは言っても、今すぐ取り除いてしまうと、そのAPIを用いているアプリケーションは、その時点で起動不可になります。昔々、Apple社は、SCSI ManagerのAPIを完全に削除してデベロッパーから大ひんしゅくを買ったことがありました。そうした経験上、突然の廃止はあまりにも無謀だと理解しているでしょうから、API自体はしばらくの間システム中に残るはずです。その代わり、最新SDKのヘッダファイルからはAPI定義が削除されるでしょう。現状でも、ヘッダファイルには定義されていないが、システム内には存在していて機能しているAPIがいくつかあります。

こうした移行はいつ起こるのでしょうか?それがデベロッパーとして最も気になる点ですが、困ったことにApple社はその時期を明言していません。つまり「そのうち」と言うことのようです(涙)。例えば、ヘッダファイルからの定義削除がMac OS X 10.5で実行されたと仮定しましょう。Xcodeプロジェクトにおいて、最新のSDK(Mac OS X 10.5 SDK)を用いCarbon Frameworkをリンクすると、DEPRECATED APIを含んだソースコードは「未定義エラー」で正常にMakeできなくなります。つまり、DEPRECATED APIをソースコードにひとつでも含んでいるアプリケーションは、10.5の最新SDKを用いて開発を継続することが不可能になるわけです。ただし、API自身はシステムに存在しているので(多分)、Mac OS X 10.4 SDKを用いて開発したアプリケーションは、10.5でも起動できます。

さて、Mac OS Xが登場して既に5年以上経過していますので、モダンだと言っても導入されてから随分と時間が経っているAPIもあります。しかし、いまだしぶとくMac OS 9が生き残っている現状を見れば、有名なアプリケーションであろうが、そのソースコード内にレガシーAPIが大量に生き残っている可能性は大です。まあ、今回のような大規模なAPI廃止は、デベロッパー側にも大きな負担をかけますので、差し替え作業まで手が回らないのが現実でしょう(Universal Binary化だけでも大変なのに…)。そんなわけで、この件に関しては、Apple社の舵取りが重要な意味を持ちます。うまく裁いて欲しいところです。そして、お願いですから、API自体の破棄は10年後ぐらいにしてください(笑)。

次回は、もう少し詳しくDEPRECATED APIを調査してみたいと思います。いったい、どんなAPIが消え、どんなAPIが生き残ったのか?APIの差し替え作業をするにも、まずこの点を把握しておかなければ始まりません。

つづく

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

本連載では、名前は知っていてもなかなか触れる機会のないSmalltalkについて、最近話題のSqueakシステムを使って紹介しています。

前回まで、ポップアップメニューやウインドウの出し方、クリックやドラッグ操作から情報を得る方法、ウィジェットがあらかじめ決められたモデルに仕事を丸投げする様子、などを観察しました。以上を用いて、本題の、シンプルなGUIビルダの製作にとりかかることにいたしましょう。

なお、これから作るGUIビルダについては、Super ASCIIの1991年10月号に掲載された青木淳さんの「Smalltalkソフトウェア開発」に登場するサンプルプロググラム「ViewBuilder」を参考にさせていただきました。この連載の全記事はWebで公開されていて、現在も読むことができます。Squeakでのお気楽なプログラミングとはまた違った、プロの目線での高度なSmalltalkの操り方を垣間見ることができて面白いので、興味のあるかたは是非。

http://www.sra.co.jp/people/aoki/SuperAsciiJ/

▼GUIビルダのクラス「GuiBuilder」を定義する

クラス定義については、すでに第15回でご紹介済みのことなのですが、ずいぶんと間があいてしまいましたので、復習を兼ねて、改めて手順を示したいと思います。

クラス定義はシステムブラウザを使います。定義済みクラスのブラウズには、そのクラス名をタイプして入力後、選択して、browse it(cmd + B)するショートカットがありました。しかし、新規にブラウザを開くには、デスクトップメニューの「開く…」から明示的に指示する必要があります。あるいは、デスクトップをクリックして(ポップアップするデスクトップメニューは無視して)cmd + B…というショートカットを使うのもよいでしょう。

新しく作るクラスは必ず“カテゴリ”に属していないといけません。適当なクラスカテゴリが既存のものに見つからないとき、上段右端にあるクラスカテゴリ一覧枠の黄ボタンメニューから「add item…」を選んで追加できます。ここでは、たとえば「Category-MosaDen」などとして「了解」(Accept)しましょう。

[fig.A]クラスカテゴリの追加

クラスカテゴリ追加と同時に(あるいは、既存のクラスカテゴリを選択すると)下のコード枠にそれに属する新しいクラスを定義のためのテンプレートが現われます。「NameOfSubclass」の部分を定義したいクラス名に変えてaccept(cmd + S。黄ボタンメニューからなら「了解」)することで、クラス「Object」のサブクラスとして指定した名前のクラスを新規に作成することが可能です。上段二番目のクラス一覧枠に名前が現われれば成功です。

[fig.B]新しいクラス「GuiBuilder」の定義

▼作業用のウインドウを開くメソッドを定義

ワークスペースなどでは、クラス(ワークスペースなら「Workspace」)に「open」というメッセージを送ることでウインドウを開くことができます。これから作るGUIビルダでも、この方法を真似ることにしましょう。クラスに「open」を送信することで起動されるメソッド(クラスメソッド)「#open」は、GuiBuilderクラスのクラス「GuiBuilder class」に定義します(GuiBuilder class >> #open)。

クラスメソッド(メタクラスに属するメソッド)の定義には、クラス一覧枠でターゲットとなるクラスを選択した状態で、その枠の下にある「クラス」ボタンを押してモードを切り替えます。

[fig.C]クラスメソッド定義モードへの切換え

クラス同様、メソッドも必ず“カテゴリ”に属している必要があります。ただ、クラスと違ってカテゴリを特に指定せずに定義することが可能です。そのときは「as yet unclassified」というカテゴリに自動的に分類されます。でも、#openは一般に「instance creation」というカテゴリに属していることが明らかなので(#openをbrowse it(cmd + B)して、既存の#openを一覧すると分かります)、今はこれに倣うことにします。

メソッドカテゴリ一覧枠(上段右から二番目)の「– all –」をクリックして選んでから、改めて同じ枠の黄ボタンメニューの「new category…」を選び、ポップアップするメニューから「instance creation」を選択します。リストに「instance creation」が追加されたら、それをクリックして選択した後、下のコード枠で、次のコードを入力(タイプするか、このメールから最後のコメント行までをコピー&ペースト)し、accept(cmd + S)します。

open
   | window |
   window := SystemWindow labelled: 'GUI Builder'.
   window model: self new.
   ^ window openInWorld

"GuiBuilder open"

イニシャルを尋ねられたら適当に答えて「了解」(Accept)します。メソッド一覧枠(上段右端)に「open」が現われれば成功です。最終行のコメントは、動作チェックに使えます。ダブルクオーテーション「”」の内側(行頭の「”」と「G」の間か、末尾の「n」と「”」の間)をダブルクリックすると、ダブルクオーテーションで括られた中味が選択されるので、その状態でdo it(cmd +D)します。「GUI Builder」というタイトルのウインドウが開けば成功です。

[fig.D]GUIビルダウインドウの呼び出し

▼ちょっとした修正

前述の「GuiBuilder class >> #open」の記述中にある、a SystemWindowに送られている「model: self new」というメッセージは、そのセレクタ「#model:」が示すように、パラメータがモデル(Modelのサブクラスのインスタンス)であることを期待します。ところが、GuiBuilderはModelのサブクラスにはしていないので、今は大丈夫なように見えても、将来、なにかしら問題が起こりそうに思えます。GuiBuilderの定義を変更することで、これを修正しておきましょう。

ブラウザに戻って、クラス一覧枠の「instance」ボタンを押してブラウズモードをメタクラスからクラスに切り替えてください。クラスの定義が下のコード枠に現われるので「Object」を「Model」に書き換えてaccept(cmd + S)します。「Recompiling GuiBuilder」という表示が出て、それが消えれば変更作業は終わりです。

[fig.E]ObjectからModelへのスーパークラスの変更

もっとも、実のところObjectには、歴史的な経緯でModelの主要なメソッがすでに定義済みのため、Objectのまま進めても問題はないはずなのですが、一応、念のため。

次回は、ウインドウのタイトルバー左寄りに設置されているボタンでポップアップする「ウインドウメニュー」に、ウィジェット設置のためのメニュー項目を追加する方法を紹介します。

[fig.F]GUIビルダウインドウの「ウインドウメニュー」

バックナンバー:

ニュース・解説

 今週の解説担当:木下 誠

———————————————————————-
WWDC 2006開幕!
———————————————————————-

いよいよ、8月7日からWWDCが始まります。この記事が配信されている頃には、基調講演も終わっている事でしょう。多くの噂に上ったハードウェアは登場しましたか?そして、Leopardの出来はいかがでしょう?

AppleのWWDCのWebサイトには、「WWDC 2006 Attendee Site」というものが登場しています。トップページよりログインすることで、視聴するセッションのスケジュールを組み立てる、アジェンダを作成する事が出来ます。これを活用してみるのも、面白いかもしれません。

WWDC 2006
https://developer.apple.com/wwdc2006/

———————————————————————-
多数のサンプルが登場
———————————————————————-

この記事を書いているのはWWDCの前ですが、ADCのサイトに多くのサンプルが登場しています。

対象となる範囲も、JavaやAppleScriptから、QuartzComposerまで、多岐にわたっています。

おそらく、WWDCが始まれば、もっと多くのサンプルが登場する事でしょう。

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

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

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

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

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

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

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

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

AttachAScript
http://developer.apple.com/samplecode/AttachAScript/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.