Cocoaのアプリケーション作成シリーズでは、画像ファイルをPNGで作成していますが、Internet Explorer 5ではなぜかヘルパーの設定が変で、初期状態ではうまく画像が表示されません。設定をちょっと変えるだけでいいのですが、その方法は以前にMDOnlineで記事にしましたけど、MacWIREにも転載されているので、それを御覧ください。3ページ目あたりにその設定方法があります。
◇Internet Explorer 5のMac版がついに登場:見かけの変化やレンダリング機能の向上などより多彩なブラウザに
http://www.zdnet.co.jp/macwire/0003/28/n_iereview1.html
PNGファイルだと、ロスのない圧縮をするので、JPEGとGIFのいいところを合わせたもようなものだと理解しています。なお、Netscape 4.Xでは表示できなかったと思います。PNGだと不便に思われる方も多いかも知れませんが、ご了承願いたいと考えています。もっとも、JPEGでもいいのじゃないかという気もあるのですが、せっかくですから新しいものを積極的に使うことにします。
(新居雅行 msyk@mdonline.jp)
アニーズ・クラフトはMac OS Xとソフト開発ができるDeveloper ToolsをインストールしたPower Mac G4 Cubeを「ココアセット」として販売する。電源を入れればMac OS Xの開発が可能なG4 Cubeということになる。開発用に別途マシンを用意する予定のあるようなユーザだと、ソフトウエアの導入の手間を省くことができるだろう。450MHz/64M/20GBのG4 Cubeがベースになっており、Mac OS X Public Betaと、Developer Toolsをインストールした状態で出荷する。Kyle氏のサイン入りの「BGCD for MacOS X」やアニーズのTシャツもセットに含まれる。3タイプのセットがあり、セットAは256MBのメモリを追加して\198,000となっている。セットBは256MBのメモリを2枚と15インチのApple Studio Displayをセットにして\296,000となっている。セットCは、セットBに加えてレンタルサーバの代金も含めて\348,000となっている。Mac OS X Public BetaやDeveloper Toolsはバンドルするのではなく、インストールの代行を行なう。利用者は別途、AppleStoreから\3,500でMac OS X Public Betaを購入する必要がある。また、ADC(Apple Developer Connection)のオンライン会員(会費は無料)にも登録する必要がある。ユーザーが入手したMac OS XとDeveloper Toolsをアニーズクラフトが代わってインストールし、操作チェックをするというスタンスだ。期間は2000年12月20日までとなっていて、申込方法は同社のページに記載されている。また、Mac OS 9に切り替えて使うこともできる。同社では、今後、ストリーミング配信を利用してのCocoaのプログラミング講座も企画しており、「ココアセット」は受講で利用できる予定となっている。
関連リンク:Annies Craft
カテゴリ:Macintosh本体, Power Mac, ProjectBuilder/Interface Builder, Mac OS X
JavaでCocoaアプリケーションを作るシリーズの始めてのアプリケーション作りを紹介しているが、前回までにProject Builderの使い方やInterface Builderの使い方を説明した。特に、Interface Builderが単なるGUI作成ツールではなく、コントロールなどの関連性を定義できる点を示したかった。実用的にはあまりしないことだが、コントロール間を直接結び付けて、連係した動作をするあたりをチェックした。
いよいよ、プログラミングに話は進む。こうしてウインドウにコントロールを配置し、それらを適当に設定するだけでは、普通は望むプログラムを作ることはできない。ボタンを押したらなにか処理をしたりするようなことをプログラムとして記述しなければならない。古くはHyperCardがそうしたプログラムを記述しやすくするような体系を取っていたが、今ではREALbasicやあるいはWindowsでのVisual Basicでも、同様に、コントロールと背後にあるプログラムを連係させるような動作を行なう。ただ、これらの開発ツールでは、ある動作をしたときに呼び出されるものの名前が決まっていて、その決められた名前の一連のプログラムを作るとうのが基本になる。しかしながら、Cocoaの体系では名前で対応を取るということをしない。操作そのものにフォーカスすると「線を引いて対応付ける」ということで、コントロールとプログラムの対応を取ることができる。まさにオブジェクト指向そのものなのである。
ここで、プログラミングの考え方として、Model-View-Controller(MVC)という手法を意識してもらいたい。いくつかサイトを探しておいたので、どういうものなのかということはそちらも参照するとよいだろう。もちろん、Sherlockで検索するともっとたくさんのページが見つかる。
◇MVCモデルという言葉をよく聞きますが何のことですか?
http://www.atmarkit.co.jp/fjava/javafaq/j2ee/j2e07.html
◇使わないと損をするModel-View-Controller
http://www.jac-net.com/~tarzan/smalltalkers/mvc/mvc.html
◇MVCデザイン
http://www.bekkoame.ne.jp/~sakamo_m/BeansFlavor/Swing3/SSS01-02.html
MVCの考え方は、ソフトウエアをどのように構成するかといった方針を与えるものだ。複雑になりがちなGUIアプリケーションの構成を整理する。まず、画面に見えているコントロールなどをViewとして考える。そして、実際に管理したいデータをModelとする。抽象的にはそういう意味だが、Modelについてはデータベースの中身だったり、あるいは単に変数をオブジェクトとして表現するというようないろいろなケースがあるだろう。そして、ControllerはViewとModelを管理するというものだが、場合によっては入力の処理を行なうといった表現もされる。ある意味では3階層システムでもあるわけだ。
Interface Builderでビジュアルに作成できるコントローラ群は、ここではViewと見ることにしよう。具体的な目的のあるアプリケーションなら、Model層については子細に設計するところだが、今回のアプリケーションではそこまでの目的意識はないので、Model層は省略する。そして、ViewをコントロールするControllerを、クラスとして定義するということを行なう。そのクラスで、コントロールを操作した時の振る舞いを記述することにする。
ただ、こうした中間層のクラスの作り方としては、かなり自由度があるというのはどの開発環境でも同じだろう。むしろ、決められた作り方しかできないほうが問題が出やすい。たとえば、Project Builderを使っていて、そうした中間層クラスを、1からスクラッチで書くということももちろん可能だが、ここでは、Interface Builderの機能を最大限に使う方法を紹介したい。Interface Builderは、ユーザインタフェースの意味でのインタフェースをビルドするものだけでなく、ソフトウエアの境界部分を定義するビルだでもあるわけだ。
さて、ここでは、Cocoa-Java Document-based Applicationというひな形を作り、そこで最初から用意されているMyDocument.nibファイルにコントロールを配置した。そのコントロール類を処理するControllerクラスを定義したい。Interface Builderで、MyDocument.nibの文書ファイルに相当するウインドウをアクティブにして、そのウインドウの「Classes」のタブを選択しておく。そして、新しいオブジェクトを作るのであるが、いきなりオブジェクトを作るのではなく、基本的には既存のクラスのサブクラスとする。ただ、もし、特に意図がなければ、オブジェクトの基底クラスであるNSObjectを親クラスにすればいい。リストから、NSObjectを探して選択し、ClassesメニューからSubclassを選択する。
◇NSObjectを親クラスとして新しくサブクラスを定義する
すると、ウインドウ内では、NSObjectの1階層下に「MyClass」という名前のクラスが定義される。ここでは、「MyWindowController」という名前にその場でキータイプして書き換えておいた(あまりいい名前ではないのだが…)。
◇作成したクラスをMyWindowControllerという名前にした
さて、このMyWindowControllerクラスはクラスだからプログラムで記述される。そのため、ここで、インスペクタを呼び出し、ポップアップメニューからAttributesを選択しておく。すると、このクラスを記述する言語が何かを指定するパネルになるので、Javaを選択しておこう。インスペクタは良く使うので表示したままにしておくのが便利だが、邪魔になったのならDockにしまっておくという便利な使い方ができる。
◇インスペクタで言語をJavaに選んでおく
カテゴリ:Cocoa, ProjectBuilder/Interface Builder, 今から始めるCocoaプログラミング
続いて、作成したクラスにOutletとActionを追加する。これはプログラムを知っている人にとっては、Outletはインスタンス変数、Actionはメソッドと呼ぶ方が分かりやすいだろう。プログラムの中で行ないたいことは、ウインドウに配置されたコントロールの値を取ってくるなどの処理を行ないたい。そのために、プログラム中で、コントロールを参照している必要がある。どう参照するかというところが、開発ツールでは大きく異なる。純粋にJavaだけでソースを書くと、コントロールは自分でnewキーワードで生成するので、参照はそのときに変数に記録するという手法を取る。Basic系言語では、コントロールの名前がそのままあたかも変数のように使え、それがコントロールを参照している。Interface Builderでは、あくまでやり方の1つという前置きを置くが、Outletをコントロールと結び付ける。そうすることで、クラスの中から、コントロールを参照できるようになるのである。また、Actionを定義することで、今度はクラスの外、たとえばコントロールの操作からメソッドを呼び出すことができる。こうして、OutletとActionを使って、クラスはその外部、ここではコントロール群とやりとりができるというわけだ。
Outletを作成するには、クラスを選択した状態で、ClassesメニューからAdd Outletを選択する。そうすると、他のクラスはグレーで隠されたようになり、対象としているクラスにだけフォーカスが当たったような表示になる。そして、クラス名のさらに下位にOutletsとActionsという項目が加わり、ここに定義したOutletやActionが並ぶことになる。ここでは、新しく作られたOutletにTextField1という名前を付けた。同様にして合計3つのOutletを作成した。名前から容易に分かるように、後からテキストフィールドに結び付けるつもりだ。
◇lassesメニューからAdd Outletを選択する
◇Outletの1つが作られるので、名前を変更した
◇合計3つのOutletを作成した
同様にして、作成したクラスのMyWindowControllerに、Actionを定義する。ClassesメニューからAdd Actionを選択するが、クラス名を選択していなくても、クラスの中の何かを選択している状態でもかまわないようだ。そして、新しく作られたActionの名前を「clickButton()」とした。図では見えにくいが、最後は、半角のカッコを引数を付けないで指定しておく。メソッドだからカッコがつくと思えばいいだろう。
◇ClassesメニューからAdd Actionを選択する
◇clickButtonという名前のActionにした
こうしてOutletとActionを定義すれば、それでクラスの定義がMyDocument.nibに残ることになる。クラスはある意味ではプログラムの設計図であって、実際に稼動させるには、オブジェクトとして生成するという風に解釈できる。生成あるいはインスタンス化などとも言われるが、プログラムでインスタンス化を行なう場合には、Javaの場合は「new クラス名」という構文が使われる。だが、Interface Builderを使った作業では、Interface Builderの中でインスタンス化をしてしまうのである。インスタンス化するプログラムのステートメントを記述するわけではない。
ウインドウのクラス名部分を選択している状態で、ClassesメニューからInstanciateを選択する。すると、そのクラスのインスタンスが作成される。インスタンス自体は、MyDocumet.nibウインドウのInstancesのタブのパネルで参照できる。「MyWindowC...」となっているのが、MyWindowContollerクラスをインスタンス化したものである。
◇ClassesメニューからInstanciateを選択
◇インスタンス化されたものがアイコンとして見える
このインスタンス化ということは、開発ツール上でインスタンス化したという見方ができる。すでに存在するオブジェクトとなっているわけだ。また、クラスではなく、インスタンス化したオブジェクトであるという点も意識しておく必要があるだろう。そして、実際にビルドしたソフトウエア上でも、インスタンス化される。つまり、.nibファイル内で特定のクラスのインスタンス化がなされていれば、実行したときも、フレームワークの機能が働いてインスタンス化されるわけである。言い換えれば、プログラム上で、「new MyWindowController()」のような記述がなくても、インスタンスは生成されるわけである。
次回は、いよいよインスタンスとコントロールを結ぶことにしよう。
カテゴリ:
Marcel Bresink Sotware-Systemeは、Mac OS Xでの設定ファイルを参照したり編集可能なエディタ「PrefEdit」のβ版をリリースした。2001年1月31日までの期限付きとなっている。Mac OS Xのアプリケーションやあるいはシステムは、一般にはXML形式でさまざまな設定を、ユーザのホームフォルダにあたる~/Library/Preferencesというフォルダにファイルとして保存している。もちろん、それぞれをテキストエディタで開いて編集などは不可能ではないが、PrefEditを使うと、すべての設定がまとめて一覧されると考えればよい。Desktopのコラム表示のように、3分割されたリスト表示があり、階層付けられて記録されている設定をブラウズし、特定の項目を変更することもできる。各種アプリケーションやシステムの設定がこれらの設定ファイルにあることが分かるが、PrefEditではそれの編集や検索をサポートする。もちろん、不用意に変更することはお勧めできないが、開発の補助ツールとしてはもちろん、ある意味では解析などにも利用できる。ちょっと意味的には違うのだが、Mac OSでのResEditのような位置付けのツールであると言ってもよいだろう。システムの奥深くを覗き見たりしたいユーザはもちろん、開発者にとっては必須のツールではないだろうか。なお、すべてのシステム設定をPrefEditで参照できるわけではない。設定によってはNetInfoのディレクトリに納められているものもある。また、設定ファイルは、Preference fileと呼ばれるが、DockにあるSystem Preferencesとは混同しないようにする必要がある。System Preferencesは、必ずしもPreference fileを変更するとは限らないのである。
関連リンク:Resources for Mac OS X
カテゴリ:ユーティリティ, Mac OS X
QuickTimeの種類やバージョンを知る方法がTech Info Libraryに掲載された。「QuickTime設定」コントロールパネルを使うが、バージョンについては、「About QuickTime」をポップアップメニューで選択したページで確認できる。通常版のQuickTImeかProバージョンかは、「Registration」をポップアップメニューで選択したページで確認ができる。
関連リンク:QuickTime: How to Determine Which Type and Version Is Installed
カテゴリ:Knowledge Base(旧TIL), QuickTime
Tech Info Libraryに掲載されていた、Disk First Aidの「MountCheckエラー」に関する文書が更新されている。Ver.8.5.5まではこのエラーを出していたが、このエラーは、Mac OS X Public Betaを起動しているボリュームにおいて、ある種の情報の取得が正しくできないことによるもので、ボリューム自体は安全に利用できる。Disk First Aid 8.6では、この問題を間違って認識する点が修正されている。
関連リンク:Mac OS X Public Beta: Disk First Aid Finds MountCheck Errors
カテゴリ:Knowledge Base(旧TIL), Mac OS 9
Tech Info Libraryに、Gigabit EthernetタイプのPower Mac G4や、Power Mac G4 Cubeのディスプレイについての文書が掲載された。
http://til.info.apple.com/techinfo.nsf/artnum/n25221
Power Mac G4 (Gigabit Ethernet), Power Mac G4 Cube: Connecting Additional
Tech Info Libraryに、G4での追加ディスプレイについての文書が公開された。Power Mac G4は最初の状態では、ADCコネクタ向けのディスプレイが1台追加できるが、さらにPCIタイプのディスプレイカードを追加することで、追加のディスプレイが利用できる。Power Mac G4 Cubeは追加のカードは利用できず、ディスプレイは1台しか使えない。
◇Power Mac G4: Supported Digital and Analog Resolutions
http://til.info.apple.com/techinfo.nsf/artnum/n58756
Rage 128 ProベースのPower Mac G4やG4 Cubeでの、デジタル出力およびアナログ出力の利用可能な解像度や周波数に関する数値が一覧されている。
カテゴリ:Knowledge Base(旧TIL), Power Mac