HOME      

チュートリアルのメインページへ シンコム ホームページへ
このチュートリアルのメインへ
Cincom Smalltalkページへ

入門書 : パーセル

パーセルは、VisualWorksのコードを含む、単純なファイルです。例えば、テトリスゲームのような完全なアプリケーションを含んでいる場合もあります。一方、開発をする手助けとなるコードを含んでいる場合もあります。この場合、ある特定のタスクを実行するコードの集まりとして、すなわちコンポーネントとしてパーセルを考えることが可能です。UIPainterのようなパーセルがそうです。このパーセルは、グラフィカル・ユーザ・インタフェイスを生成する手助けをします。外部にコードの集まりを格納することによって、開発環境を可能な限り小さく、可能な限り簡素に保つことが可能です。必要としているものだけを使用すればよいのです。完全なアプリケーション(テトリスゲームのような)では、コードを1つのファイルに収める方法が効率的です。

この入門書は、パーセルの詳細説明することが目的です。より高度なSmalltalkプログラミングで深く追求し始めると、パーセルは無くてはならないものになります。これらの強力なファイルにすこしでも詳しくなるように最善を尽くします。

パーセルとは何?

上記の説明でまだ十分理解できていない場合は、コードを知的な方法でファイルに保存すること、と考えてください。この知的とは、他のパーセルをロード(前にロード)するパーセルの能力から由来します。UIPainterパーセルを使用してGUIアプリケーションを作成するとき、これを認識するでしょう。

例えば、GUIアプリケーションを作成するとき、UIPainterパーセルが既にロードされている必要があります。このパーセルは、新しいキャンバス(ウィンドウ)の生成や、キャンバス上にボタンや入力フィールドなどのオブジェクトを配置することを可能とするVisualWorksのコードが含まれています。しかし、単なる"ファイルに保存"で作業を保存した場合、単純にクラスとそのメソッドが保存されるだけです。UIPainter(開発コード)は何も保存されません。しかし、パーセルとしてコードを保存すれば、開発を継続するために必要なコンポーネントであるUIPainterパーセルを保存したパーセルから呼び出すことができます。

VisualWorksが起動したときに、UIPainterパーセルが自動的にロードされないと仮定します。"ファイルに保存"でGUIコードを保存しただけであったならば、VisualWorksを起動するたびに、GUI編集のためUIPainterを最初にロードして、コードをファイルインしなければなりません。パーセルでUIPainterをプレロードすれば十分なので、自身のパーセルをロードするだけですみます。

パーセルは何に似ている?

下図はファイルブラウザ画面のキャプチャです。parcelsディレクトリが表示されています。すべてのファイルを表示することはできませんが、ファイルブラウザツールは、このディレクトリに146個のファイルあることを示しています。


図 A-1. ファイルブラウザによるparcelsディレクトリ一覧

ファイルの一覧を見ると、同じ名前のファイルが必ず2つあります。通常、パーセルは対に成っています。"完全"なパーセルは、PSTファイルとPCLファイルの2つのファイルから成っています。


図 A-2. 完全なパーセルは2つのファイルから構成

.PSTファイルは、パーセルのソースコードを含みます。ロードしたパーセルのコードをブラウズするとき、システムはそのパーセルのクラスやメソッドのソースコードとして.PSTファイルを見に行きます。

.PCLファイルは、"パーセル ローダ"でロードするとき、システム内にコードをインストールするために使用します。.PCLは、ロードのスピードを向上するためにバイナリ形式です。.PST(ソース)ファイルは、コードを要求されるまでディスクに置かれたままです。これは、.PSTファイルを含まないことによって、ユーザはソースなしでパーセルの配布を可能です。

パーセルは、なぜ"洗練"されたファイルインなのか?

パーセルは、依存しているパーセルの一覧を保持しています。例えば、VisualWorksのヘルプをロードすると、VWHelpと呼ばれるパーセルをロードしています。しかしながら、VWHelpパーセル内部では実際に、他のパーセルのホストとしてロードしています。


図 A-3. VWHelpパーセルが要求する他のパーセル

この機能が無ければ、分割されたコードの集まりをひとつ一つファイルインしなければなりません。2番目に、これらの他のコードの集まりをどのようにして知るのでしょう?

なぜパーセルがSmalltalkコードを格納する効率的な方法なのか?

開発の立場からすると、パーセルはコンポーネント技術です。各パーセルは、明確な用途を持ち、"必要とされる"基礎を呼び込みます。


図 A-4. 基本VisualWorksイメージ外にコードを保持

GUIアプリケーションを生成しないなら、UIPainterパーセルは必要ありません。データベースにODBCでアクセスするアプリケーションを作成する場合、ODBCEXDIパーセルが必要になります。そうでなければ、そのようなパーセルはロードしないはずです。DLLに格納されたWindows関数を呼びたい場合、DLLCCパーセルが必要になります。そうでなければ、そのようなパーセルはロードしないはずです。必要とするパーセル(コンポーネント)だけをロードすればよいのです。結果、必要としないコードでイメージのスペースが肥大化することはありません。

パーセルのロードの仕方は?

VisualWorksメインランチャウィンドウから、システム>>指定パーセルのロード...メニューを選択してください。


図 A-5. 指定パーセルのロードダイアログ

この一覧を絞り込むためには、文字とワイルドカード(アスタリスク)を指定します。

既にロードされているパーセルを知るには?

パーセルの一覧を表示すると、既にロードされたパーセルはイタリックで表示されます。例えば、VisualWorksのヘルプをロードします。VisualWorksメインランチャウィンドウから、ヘルプ>>ヘルプのロードメニューを選択してください。そして、すべての一覧を確認するためにアスタリスクを使用して、パーセルのロード画面を表示してください。


図 A-6. VWHelpパーセルはロード済

パーセル一覧の最初の方にある複数のArborパーセルも同様にロードされていることに注意してください。


図 A-7. VWHelpパーセルがロードされたとき、Arborパーセルもロードされた。

パーセルローダはこれらのパーセルをどこから見つけるのか?

パーセルローダは、"パーセル パス"に存在するすべてのPCLファイルを検索します。パーセルパスは、通常パーセルが置かれているであろうディレクトリの一覧です。この一覧は、システムメニューの環境設定で設定可能です。

VisualWorksメインランチャウィンドウから、システム>>環境設定メニューを選択してください。環境設定ダイアログが表示されたら、 左にあるツリーにパーセル パスという項目が見つかります。パーセル パスをクリックしてください。


図 A-8. パーセル パスの一覧

パーセルは単なるツールですか?

違います。パーセルには、完成されたアプリケーションを含むことが可能です。Tetrisをロードしてみましょう。


図 A-9. Tetrisパーセルのロード

OKボタンをクリックした後、何が起きたか見てください。

まとめ

パーセルについての詳しい情報は、Application Developers Guide(AppDevGuide.pdf)にあります。PDFファイルは、\docディレクトリにあります。