アプリケーションのインストール
【以下【】の中は訳者が付け足したものです。】
このレッスンでは、わたしたちのCurvesプログラムを、ダブルクリックで起動できるアプリケーションとしてインストールしましょう。
まず始めに、レッスン19で説明したGrDemoをロードしてください。ただし、今回は、プログラムを実行しないでください。
Mac OS X 10.4ユーザーへの注意::QuickDrawに関するトラブルを避けるため、Tigerユーザーは、Mach-O PowerMopsを使っている場合には、grDemoのソースコードを少し変更する必要があるでしょう。ファイル'grdemo'の中に、GRWINDクラスのNEW:
メソッドの定義があります(170行目)。この
メソッドの定義の中の、'RR tAddr tLen docWind'という行と、'true false'という行の間に、次の一行を挿入してください。
$ 40000000 OR \ use QD on Tiger
つまり、このメソッドの終わりの部分は次のようになります:
RR tAddr tLen docWind \ initial rect, title, window type
$ 40000000 OR \ use QD on Tiger
true false \ visible, no close box
dView \ the main view
new: super \ create the window!
それから保存して、ファイルを(リ)ロードしてください。
installと打ち込んで実行するか、Utilitiesメニューから'install...'を選択してください。どちらかの方法で、【68k Mopsの場合は】次のダイアローグボックスが現れるでしょう。:
試しに、コントロールをクリックしてみてください。(ボタンはまだクリックしないでください)
Dictionaryの数値が増えると、同じ量だけHeap数値が減少することに気付くでしょう。スタックについても同様です。ここで定義しているのは、あなたのアプリケーションで利用可能なメモリーをどのように使うか、です。‘stack’スペースは、パラメータースタックとリターンスタックに当てられます。システムは様々な
システムコールが行われたときにはパラメタースタックを使うことになりますから、この数字を20000より小さくしないようにお勧めします。
Dictionaryの数字は辞書のために割り当てられるメモリーの量を示していますが、これは現在既に割当てられているものに追加される分です。ここで行っているのは、既にロードされたアプリケーションのインストールなのですから、ここにあまり大きな数値は必要ありません。というのは、私達のアプリケーションが走行しているときには、もうこれ以上定義が辞書にコンパイルされることはないだろうからです。
Heapの数字は、プログラムが走行しているときにシステムに要求して利用可能になるメモリーの量を示しています。ここの数値は、利用可能なこの種のメモリーの最大量です。基本的には、スタックと辞書スペースが割り当てられた後に残ったものは全てヒープのために利用できます。ここに現れる数字は単なる参考でしかありません。というのは、インストールされたあなたのアプリケーションが走行しているときに利用可能なメモリーの量は、インストールを実施しているときの量と同じではないかもしれないからです。
ですから、スタックと辞書のために本当に必要なものだけを利用して、アプリケーションの走行中に利用可能なメモリーを最大にしておくのがよいでしょう。
通常は、アプリケーションをインストールするときには、それらは放っておかれることになるでしょう。 そうすれば、デフォルトでヒープへの割当が最大になります。 もしもボタンをクリックして値を変更してしまった場合は、"Max Heap"ボタンを押すことによって、デフォルトの設定に戻ることができます。
デフォルトのスタックへの配分が20000であることがわかるでしょう。これは私達の推奨する最低値です。辞書についてはたった128です。これは、あなたのアプリケーションが文字列をHEREに移動するコードを実行するような場合に備えた安全マージンを取ってあるに過ぎません。あなたのアプリケーションがHEREにもっと多くの領域を必要とすることがわかっているなら、この数値を調整することができます。このデモプログラムについては、しかし、その必要はありません。
さて、メモリー要求項目をチェックしたら、installをクリックしてください。次のようなダイアローグが現れるでしょう。実は、PowerMopsでは、これが最初のダイアローグとなります。また、PowerMops版は、特別なチェックボックス‘Generate shared library’も持っています。これについては、後でお話ししましょう。
このダイアローグでは、あなたのアプリケーションのクリエーターコードとファイルタイプを設定できます。これらは共に、4文字コードです。詳しくはInside Macintoshに説明されています。
あなたのアプリケーションを広く配布したいときには、これらのコードをAppleに登録して異なるプログラムが同じコード番号を用いないようにする必要があるでしょう。しかし、個人的に利用する場合には、何でも好きな4文字を利用することができます。このデモプログラム、Curvesについては、"CRVS"を選びました。
Curvesはそれが領有するドキュメントは持ちませんから、その他の欄は空白にします。アプリケーション名"Curves"を適切な欄に打ち込み、バージョン文字列に当たるものを書きます。この例では、‘version 1’を入れました。意味はわかるでしょう。 ダイアローグボックスは次のように見えるでしょう。:
前のレッスンで、‘スタートワード’と‘エラーワード’を説明しました。このダイアローグは、それぞれに、GOとCRASHを示唆しています。これは実際に私達が使ったワードの名前ですから、これはこのままにしておきます。
インストールされたアプリケーションでのこれらのワードが扱われ方はvectorsのメカニズムのおかげで、非常に単純です。これについてはレッスン20で触れました。
vectorは、いくつかのForthシステムでDEFERred wordと呼ばれているものと、基本的には同じものです。vectorはアドレスを保管しています。普通のワードと同じやり方でvectorを呼び出したときには、しかし、実行されるのは、そのアドレスが指しているワードです。このアドレスはいつでも変えることができます。スタートワードとエラーワードは二つのベクトルQuitVecとAbortVecに格納されます。
(やや紛らわしい名前ですが)QuitVecは、ワードQUITが実行されたときにはいつも実行されます。これは、実際には、Mopsのインタープリテーション
ループ(キーボード入力を待ち、それを実行する
ループです)の各回の初めにあります。通常は、QuitVecは何もしません(NULLを指しています)が、インストールされたアプリケーションでは、スタートワードを指すように設定されています。このスタートワードは、不定回
ループで、クリックなど何であれ入力を処理し続けるべきものであって、それ自身が終了してしまってはいけません。もちろん、アプリケーションは最終的には終了しますが、それはスタートワードから呼び出される何らかのワードで処理されるユーザーアクションに応えてのものでなければなりません。これは、スタートワードは、その最後のセミコロンを抜けてはいけないということを意味します。もしそうなると、QUITの残りの部分が実行されて、キーボード入力をMopsワードとして解釈しようとします。これは、明らかに、インストールされたアプリケーションで起って欲しいことではありません。— Mopsウィンドウはおそらくもうそこにはないでしょうから。
AbortVecは、通常、Mopsのエラーメッセージが現れるエラーをMopsが感知したときに呼び出されます。QuitVecと同じように、それもはじめはNULLを指しています。インストールされたアプリケーションでは、ユーザーにスタックダンプを見せたくはないでしょう(そして、ともかく、MopsウィンドウやfWindはそこにはないでしょう)から、あなたのエラーワードは、何であれあなたのアプリケーションにふさわしいことをなすべきであり、おそらく、BYEを実行して終了し、Finderに戻ることになるでしょう。スタートワードと同様、これも終わりのセミコロンを抜けてはいけません。というのは、そうなるとMopsはMopsスタイルのエラーメッセージとスタックダンプを表示しようとするからです。
さて、ダイアローグボックスについて続けましょう。
‘Include fWind’と‘fWind visible’はチェックのないままにしておきます【PowerMopsにはこれらのチェックボックスはありません】。これらは、"拙速(quick and dirty)"アプリケーションに利用できるキーボード入力およびテキスト出力用の簡単なウィンドウに関係しています。これは、実は、Mopsの基礎的な核部分がMopsシステムの残りの部分をロードする前に使用しているものです。Curvesは、自分自身のウィンドウを持っていますから、このウィンドウを使うことはありません。ですから、これらのボックスはチェックのないままにしておいて、InstallにおいてfWind用のリソースを無視してもよいことを教示するわけです。同様に、インストールされたアプリケーションにはコード生成機能は必要ないといえるでしょう。
もうダイアローグの必要な部分は全て埋めましたので、OKをクリックしましょう。このとき、標準的なファイルナビゲーションダイアローグが現れます。アプリケーションをインストールする場所のフォルダーを選択して、Saveをクリックします。PowerMopsは直ちに終了するでしょう。それから、あなたが選択したフォルダーをのぞいてみれば、新しいアイコン(68k MopsとPEF/CFM PowerMopsの場合)またはフォルダー(Mach-O PowerMopsの場合)で、‘Curves’という名前のものをみつけることができるでしょう。これがあなたのインストールしたアプリケーションです。
しかし、このアプリケーションはまだ起動できません。メニューリソースが含まれていないからです。
68k MopsとCFM PowerMopsの場合:
その追加はリソースエディターで行うことができます。ResEdit、あるいは何らかのリソースフォークエディターでいいですが、それを起動し、demo.rsrcファイルを開きます。demo.rsrcファイルをダブルクリックするだけでも大丈夫でしょう。そして、‘全選択(Select All)’をした上で‘コピー(Copy)’します。それから、(まだResEdit上での作業です)Curvesのアプリケーションファイルを開き、‘貼付け(Paste)’します。それからアップデートされたCurvesを保存し、ResEditを終了します。
Mach-O PowerMopsの場合:
ファインダー上でdemo.rsrcのコピーを作り、それを(名前はdemo.rsrcにして)、新たに作られたフォルダー構造の中の‘MacOS’フォルダーに入れます。それから、‘Curves’というフォルダー名の後に、‘.app’拡張子を追加します。
あなたの新しいアプリケーションは、適切なアイコンを持っておらず、原始的なアプリケーションアイコンしかついていないでしょう。しかし、それ以外は完成しました。ダブルクリックして起動することができます。
アイコンに関しては、Part IIの第五章でお話しします。
これから進むべき道
あなたはもう随分と Mops とオブジェクト指向プログラミングを経験しました。Mops が Macintosh ツールボックスとどのような形で連絡して、あなたのプログラムとMacとの間の通信の方法を単純化しているのか、についても見てきました。いまや、あなた自身のプログラムで実験を始めるべきときです。Part II のいくつかの章は、Macintosh上でMopsプログラミングを行う際のもっと細かな点について詳細に説明しているので、あなたの進むべき道を示してくれるはずです。
Mops辞書にある既定義クラスとワードのパワーを知ることは重要です。読んで済ますことからは得られないものもあるとはいえ、このマニュアルのPart IIIで詳説された既定義クラスのメソッドを一定時間かけて研究して、あなたに利用可能な構築素材を見つけるようにするのもよいでしょう。 Part IVのMops索引や用語集をながめるのもよいでしょう。そこには、メソッドのために指定できる演算についてのアイディアを与えてくれる、たくさんの組み込みワードを見つけることができるでしょう。
このマニュアルや様々なMopsファイルの中には、利用可能なたくさんの参考資料が含まれています。それら利用しつくす最良の方法は、独自のクラスの定義に取りかかり、あなたがつくったオブジェクトにメッセージを送る実験をすることです。 ちょうど話し言葉と同じように、Mopsについても、その実地経験を多く積めば積む程、より短時間で難なく使いこなせるようになることでしょう。
最終更新:2018年12月10日 18:42