1.
[ファイル]>[新規作成]>[アプリケーション](Macintoshの場合は[ファイル]>[新規]>[アプリケーションの新規作成])を選択します。
3.
[ファイル]>[名前を付けて保存]を選択し、ファイルをJMPソースファイルとして保存します。拡張子は.jmpappsourceです。
2.
オブジェクトを[Module1]タブにドラッグします(または、オブジェクトをダブルクリックします)。
5.
(オプション)アプリケーションの実行時にモジュールが起動しないようにするには、「オブジェクト」ペインでモジュールを選択し、[Auto Launch]の選択を解除します(モジュールのうち1つだけをテストする場合などに便利)。
6.
アプリケーションビルダーの赤い三角ボタンメニューから[アプリケーションの実行]を選択し、アプリケーションをテストします。
2.
「プロパティ」ペインで、「Module Type」を指定します。
「Variable Name」プロパティを変更します。
ret = Module1 << Create Instance()は、ダイアログが完了するまで値を戻しません。その時点では、ダイアログはなくなっています。そのため、戻り値は、モジュールインスタンスへのハンドルにはなりません。New Window()と同じく、戻り値は{Button(1 | -1), User Data}のような形式になります。(1 | -1)は、OK(1)とCancel(-1)ボタンのどちらが押されたかを示します。
User Data()は、モジュールインスタンスの新しいプロパティです。ダイアログの実行中、モジュールのスクリプトは、ユーザデータを設定することができます。
thisModuleInstance << Set User Data(...);
New Window()と同様、[OK]ボタンや[キャンセル]ボタンが含まれていない場合は[OK]ボタンが追加されます。
モジュールインスタンスには、オプションの「Validate」スクリプトプロパティがあります。このスクリプトは、モーダルダイアログにのみ使用され、New Window()On Validate()のように動作します。[OK]ボタンが押されたときに呼び出され、入力を受け付けるときは1、閉じる操作を許可しないときは0を戻します。
ヒント:「Validate」プロパティを使用すると、thisModuleInstance << Set User Data()を呼び出すことができます。
モーダルダイアログは、他の種類のモジュールとは異なり、モジュールスクリプトが完了するまで表示されません。他の種類のモジュールの場合、ウィンドウは、thisModuleInstance << Create Objectsの呼び出し中に作成されます。モーダルダイアログの場合は、この時点で表示すると、制御が停止し、表示されているボックスの内容を初期化する手段がなくなってしまうため、表示されません。ウィンドウがまだ作成されていないため、ウィンドウタイトルの設定、クローズ時に実行するスクリプトの設定といったアクションを行うことはできません。
ワークスペースにオブジェクトをドラッグすると、オブジェクトの左上隅が最も近いグリッド点に配置されるように調整されます。より細かく配置したい場合は、アプリケーションビルダーの赤い三角ボタンのメニューで[グリッドにスナップ]の選択を解除します。また、JMPの環境設定を使うと、すべてのアプリケーションで[グリッドにスナップ]を無効にできます それには、[ファイル](Macintoshの場合は[JMP])>[環境設定]>[プラットフォーム]>[JMP App]を選択します。
図14.5 に、コンテナ内にオブジェクトをドラッグする方法を示します。
図14.5 コンテナ内にオブジェクトをドラッグする例
コンテナオブジェクトを配置する座標を細かく決めたい場合は、オブジェクトを選択した後、「X Position」「Y Position」のプロパティを変更します。新しいX座標を入力した後、Tabキーを押し、オブジェクトの移動を確認してから、新しいY座標を入力します。
オブジェクトを左上隅に配置するには、右クリックして[隅に移動]を選択します。このオプションは、XとYの座標を0に設定します。Macintoshの場合は、Ctrlキーとcommandキーを押しながら[隅に移動]を選択します。
ヒント: 
図14.6 パネルをアウトラインに変更
ヒント: オブジェクトの[Horizontal]プロパティを選択したり、選択を解除したりすると、ボックスの配置方向を簡単に変更できます。
図14.7 コンテナツールバー
Windowsの場合、[編集]>[クリア]を選択すると、モジュール内のすべてのオブジェクトが削除されます。
たとえば、図14.8 のようなRadio Boxのリスト項目を設定するには、「Item1」と「Item2」をダブルクリックして、新しいリスト項目を入力していきます。
図14.8 ラジオボックスのオブジェクトプロパティ
オブジェクトの詳細を参照するには、オブジェクトを右クリックし、[スクリプトのヘルプ]を選択します。選択したオブジェクトが強調表示され、JMPのスクリプトの索引が開きます。「スクリプトの索引」にスクリプトが用意されている場合は、それを実行するとオブジェクトの例を確認できます。
テキストエディタを使ったアプリケーションの編集が不可能になります。ユーザが実行するアプリケーションだけが暗号化されます(.jmpappファイルとJMPアドイン内のアプリケーション)。スクリプト(データテーブル、ジャーナル、およびアドインに保存されたスクリプト)が、暗号化されます。暗号化の詳細については、「プログラミング手法」章の「スクリプトの暗号化と暗号解読」を参照してください。
図14.9 データテーブルを開くためのプロンプト
これらの名前空間内のスクリプトを見るには、[Scripts]タブをクリックし、「名前空間」リスト(または「オブジェクト」ペイン)で名前空間を選択します。詳細については、図14.10 を参照してください。
図14.10 アプリケーションとモジュールの名前空間
名前付きスクリプトは、関数の形式で定義されています。複数の異なるコントロールにおいて、共通のコードを使用できるという利点があります。名前付きスクリプトの関数において、this引数は、関数を呼び出しているコントロールを示します。次の例では、ボタンをクリックしたときに、Get Button Namethis引数に送られ、ログにボタン名が印刷されます。
Button1Press = Function({this}, Print(this <<Get Button Name))
別のボタンでButton1Pressスクリプトを実行しても同じ結果となります。
1.
オブジェクトを右クリックして[スクリプト]を選択し、追加したいスクリプトを選択します。この例のボタンでは、[Press]を選択します(Macintoshの場合は、Optionを押しながら[スクリプト]>[Press]を選択)。
[Scripts]タブに、スクリプトのテンプレートが表示されます(図14.11 )。また、名前付きスクリプトの名前であるButton1Pressが、スクリプト中では関数名として使われ、また、オブジェクトのプロパティでも表示されます。
図14.11 新しいスクリプトとスクリプトプロパティ
2.
必要な機能を実現するため、スクリプトとプロパティを編集します。たとえば、図14.11 のようにボタンボックスを変更すると、次のようになります。
「Title」プロパティのテキストが、「送信」に変更されています。ボタンに、「送信」と表示されます。
Close Windowメッセージを、オブジェクトに送るように、スクリプトが変更されています。これにより、ユーザが[送信]ボタンをクリックすると、ウィンドウが閉じます。
ヒント: オブジェクトを削除しても、該当するスクリプトは削除されません。スクリプトを追加した後、オブジェクトを削除し、そのスクリプトも不要であるなら、[Scripts]タブから、削除してください。スクリプトを自動的に削除しないのは、将来必要になるかもしれないスクリプトが削除されるのを防ぐためです。
また、オブジェクトのプロパティで、スクリプトの名前を変更した場合は、[Scripts]タブでも、その名前に応じて変更してください。該当するスクリプトがアプリケーションの別の部分でも使用されているときは、そこでも名前を変更してください。
匿名スクリプトは、それを定義したオブジェクトに対してしか実行できません。たとえば、ボタンに対して、そこでしか使用しないログ出力の機能(Print)が必要な場合、匿名スクリプトで記述すれば、スクリプト全体で定義する名前付きスクリプトの数を減らすことができます。匿名スクリプトは、オブジェクトのプロパティとして設定します。そのため、[Scripts]タブにおいて、名前付きスクリプトが雑多になりすぎるのも回避できます。
Print(Button1 <<GetButtonName) // 単純な匿名スクリプト
Function({this}, Print(this <<GetButtonName)) // パラメータ化された匿名スクリプト
チェックボックスなどのオブジェクトは、thisを用いて、必要な情報を取得する必要があります。たとえば、チェックボックスを用いた場合、どの項目がチェックされたかを取得する必要があるでしょう。
2.
スクリプトを入力し、[OK]をクリックします。
[Module]タブでオブジェクトをダブルクリックします。
オブジェクトに複数のスクリプトがある場合は、オブジェクトを右クリックして[スクリプト]を選択し、表示したいスクリプトを選択します。また、[Scripts]タブを選択し、「名前空間」リストからモジュール名を選択して、「メソッド」リストからスクリプト名を選択する方法もあります。同様に、アプリケーションスクリプトを表示するには、「名前空間」リストから「Application」を選択します。
どちらの場合も、[Scripts]タブが表示されたとき、そのオブジェクトに対するスクリプトの一行目に、カーソルは移動します。
ヒント: 雑然としたスクリプトを読みやすくするには、右クリックして[スクリプトを再フォーマット]を選択します。