App Builder のパラメータ化されたアプリケーションの一般化
パラメーター化されたアプリケーションは、列の数と種類が変わらない場合に適切に機能します。 JMP の多くのプラットフォームで App Builder を使用するには、最初にレポートを作成するために使用される列の数とタイプと、将来の分析に使用される列とが 1 対 1 で対応している必要があります。多くの場合、これは制限が厳しすぎます。
この問題を回避するには、必要に応じて任意の数または種類の列を使用できるようにアプリケーションを一般化することができます。最大の欠点は、ユーザー入力用の組み込みダイアログ ボックスが利用できなくなったことです。幸いなことに、App Builder を使用すると、レポート ウィンドウを起動するためのダイアログ ボックスを簡単に作成して使用できます。
材料:
サンプル データ テーブル - 1993 年の自動車、都市
難易度– ハード
動画の長さ– 8:04
ステップ
- 「パラメーター化されたアプリケーションの構築」レシピで作成したアプリケーションを開きます。レシピの作成に使用されたため、 Cars 1993サンプル データ テーブルが開きます。
- パラメーター化されたアプローチを使用しないため、ユーザー入力用に独自のダイアログを構築する必要があります。新しいモジュールを追加することから始めます。
- [プロパティ]パネルで、 Module の名前をDialogに変更します。
- レポート タイプを[ダイアログ]に変更します。これにより、ダイアログ ウィンドウの上部にあるメニューが非表示になります。
- [ソース]パネルの入力アウトラインの下で、 [フィルター列セレクター]をワークスペースにドラッグします。変数名をclbAllに変更します。
- ラインアップボックスを追加します。
- 2 つのCol List Boxと 2 つのButton Box をLineupにドラッグし、各行にボタンが 1 つとその後にCol List Boxが続くように 2 つずつ配置します。ラインナップ内の青い輪郭は、オブジェクトが配置される場所を示します。オブジェクトが存在する場合は、ドロップ領域にオブジェクトを配置することもできます。 [フィルター列セレクター] ボックスと[列リスト]ボックスを使用するには、現在のアプリケーションでデータ テーブルが開いている必要があります。

- 最初のボタンの[変数名]プロパティをbtnYに変更し、タイトルを[Add Y]に変更します。
- 他のボタンのNameプロパティとTitleプロパティをそれぞれbtnXとAdd Xに変更します。
- 最初のリスト ボックスの変数名をclbYに設定します。
- [モデリング タイプ]の[連続]以外のすべての項目のチェックを外して、連続列のみを追加できるようにします。
- [最小項目]を1に変更します。ボックス内のヒントが[オプション]から[必須]に変わります。
- Max Itemsを1に設定して、ボックス内に入れることができるアイテムの数を制限します。
- 最後に、 N Linesを2に変更します。これによりボックスの高さが変わります。
- 2 番目の列リストの変数名をclbXに設定し、 N Lines を8に変更します。
- Lineupの周囲にV リスト ボックスを追加します。
- 新しいボタン ボックスをV リスト内にドラッグして、一番下に表示します。新しいボタンの名前をbtnRemoveに変更し、タイトルをRemove Selectedに変更します。
- ボタンの周囲にH センター ボックスを追加します。
- 他の要素を囲むフィルター列セレクターとV リスト ボックスを選択します。右クリックしてH リスト ボックスを追加します。一番外側のボックスを右クリックし、 「コーナーに移動」を選択します。
- RunとCancelというタイトルの 2 つのボタンを追加し、それぞれ変数btnRunとbtnCancelの名前を変更します。
- それらをH List Boxに配置し、次にH Center Boxに配置します。
- 他のオブジェクトを含むH Center BoxとH List Boxを選択し、それらをV List Boxに追加します。

ダイアログを構築したので、ボタンに機能を追加しましょう。
- 「キャンセル」ボタンを選択します。 [プロパティ]パネルの一番下までスクロールします。最後のプロパティPress は、ボタン スクリプトに関連付けられています。スクリプトは右側の入力ボックスに直接追加できます。また、より多くのスペースが必要な場合は、3 点ボタンをクリックすると、より多くのスペースのあるウィンドウが開きます。これは、オブジェクト スクリプトを配置できる 2 つの場所のうちの 1 つです。
- Use the following code for the button:
(thisModuleInstance << Get Box) << Close Window;
thisModuleInstance名前空間参照は、 「キャンセル」ボタンを機能させるために必要です。各モジュールは、同じ名前を持つ独自の名前空間参照を作成します。それらのスコープは、それらが関連付けられているモジュールの外には拡張されないため、それらはすべて同じ名前を持つことができます。これは、複数のモジュールを使用する場合に認識することが重要です。 Get Boxメッセージはダイアログ ウィンドウへの参照を取得するために使用され、 Close Window はダイアログ ウィンドウを閉じるために使用されます。
- [Y を追加]ボタンを選択します。右クリックして「スクリプト」を選択し、下部にある「プレス」を選択します。これにより、スクリプトのデフォルト名が作成され、それが「実行」ボタンの「押す」プロパティに追加され、スクリプトを配置できる 2 番目の場所である「スクリプト」タブにスクリプト シェルが追加されます。正しく動作するには、 [プロパティ]パネルのスクリプト名が[スクリプト]タブのスクリプト名と同じである必要があります。
- [X を追加] ボタンと[選択項目を削除]ボタンに対してこれを繰り返します。
- 「スクリプト」タブに移動します。スクリプトに追加されているデフォルトのコメントとコードを削除します。引数thisBox は、スクリプトが関連付けられているオブジェクトへの参照です。すべての App Builder スクリプト プロパティは、 thisBox を最初の引数として使用します。これはオプションであり、使用されず、他の引数が必要ない場合は削除できます。
- For the Add Y button script, add the following line:
clbY << Append(clbAll << Get Selected)
これにより、フィルター列セレクターで選択された内容が Y リスト ボックスに追加されます。
- [ Add X]ボタンに同じスクリプトを追加し、 clbY をclbXに置き換えます。
- Use the following two lines for the Remove Selected button:
clbY << Remove Selected;
clbX << Remove Selected;
- Add a script for the Run button. Use the following code:
If(N Items(clbY << Get Items) > 0 & N Items(clbX << Get Items) > 0,
(thisModuleInstance << Get Box) << Close Window;
thisApplication:Report << Create Instance(clbY << Get Items,clbX << Get Items);
)
Ifステートメントは、X 列リスト ボックスと Y 列リスト ボックスの両方に少なくとも 1 つの項目があることを確認します。この条件が満たされると、行 2 でダイアログ ウィンドウが閉じ、行 3 でレポート モジュールが起動します。 thisApplication は、アプリケーションで使用される名前空間で、アプリケーション内で作成されたすべてのオブジェクトと変数をスコープとします。この場合、これはレポート モジュールを参照するために使用されており、オプションです。 「インスタンスの作成」は、モジュールを起動するために使用されるメッセージです。その引数は、起動されたモジュールのOnModuleLoad関数に渡されます。ユーザーが分析列を選択するリスト ボックスの内容を渡します。
- モジュールを選択し、名前をReportに変更します。アプリケーションの起動時に起動しないようにするには、右下の[自動起動]のチェックを外します。
- 現在レポート内にある 3 つのレポートを削除します。ユーザーが分析列を選択した後、実行時に JSL を実行してそれらを構築します。
- タブ ページ ボックスの名前をtpbDistribution 、 tpbFitYbyX 、およびtpbScatterに変更します。
- To finish building the application, navigate to the Report section of the Scripts tab. It can be found by selecting the Scripts tab and choosing Report using the combo box at the top. We used Create Instance in the Dialog module script to launch the report and pass it the analysis columns. A module receives any arguments in its OnModuleLoad function. This happens before any of the report visuals are rendered. The following code will receive the passed variables and assign them variables local to the module (i.e., in the thisModuleInstance namespace for report).
OnModuleLoad({yCols,xCols},
allCols = Insert(yCols,xCols);
yVars = yCols;
xVars = xCols;
);
変数allCols は、散布図プラットフォームの X 変数と Y 変数を組み合わせます。
- The 追加 function will be used to add the platforms to the appropriate Tab Page Boxes.
tpbDistribution << Append();
tpbFitYbyX << Append( );
tpbScatter << Append()
- Working from the saved scripts from the Parameterized Application recipe, copy and paste the Scatterplot Matrix code into the 追加 function for tpbScatter. Delete the list of hard coded column names and replace them with Eval(すべての列).
tpbScatter << Append(
Scatterplot Matrix(
Y( Eval(allCols) ),
)
)
- We will use an alternative form for the 分布 platform:
tpbDistribution << Append(
Distribution(
Y(Eval(allCols))
)
);
このアプローチの利点は、入力列のモデリング タイプを指定する必要がなく、コードがはるかに単純になることです。
- We will also use an alternative for YをXでフィット
tpbFitYbyX << Append(
Fit Y by X(
Y( Eval(yVars)),
X( Eval(xVars) )
) << Fit Line << ANOVA;
);
さまざまなモデリング タイプに対してプラットフォーム呼び出しを変更する必要がないことに加えて、 Fit LineメッセージとANOVAメッセージの両方を使用してコードをよりコンパクトにすることができます。
Citiesサンプル データ テーブルを使用してアプリケーションをテストできます。応答列は 1 つに制限されますが、X 列の数とモデリング タイプは制限されません。
自動化とスクリプト作成デザート