スピーカー
|
成績証明書
|
| ジョーダン・ヒラー |
こんにちは、皆さん。 私はジョーダン ヒラーです。今回の講演は「Steal This Code」です。 強化されたログから取得したスクリプトの 3 つのアップグレード。 |
| |
そして、これがこの講演のインスピレーションです。 挑発者であり活動家であるアビー・ホフマンの本です。 そう、彼は自分の本に『Steal this Book』という名前を付けました。素晴らしいタイトルです。 自分の本にそのような名前を付けることが素晴らしいビジネスプランであるかどうかはわかりませんが、とにかく非常にキャッチーです。 |
| |
では、なぜこのコードを盗むのでしょうか? JMP はコードを盗むことを望んでいます。 ポイント アンド クリックして JMP で分析を行うという考え方です。 |
| |
ポイントアンドクリックの背後にあるコードが保存されます。 これは拡張ログに保存され、取得して再利用できます。 |
| |
これが制作スクリプトの約 90% です。 それを取得して再利用することで、 |
| |
一般的なタスクを自動化し、ポイント アンド クリックを繰り返すのではなく、ボタン 1 つをクリックするだけで実行できます。 それがここでの全体的な目標です、あなたは節約するつもりです |
| |
拡張されたログからスクリプトを作成します。これが本番スクリプトの骨、スケルトンです。 |
| |
残りの約 10% は自分で書く必要があり、それがこの講演の目標です。 制作スクリプトをまとめる結合組織についてお話します。 |
| |
したがって、この講演では、構文の核心部分にはあまり焦点を当てません。 |
| |
全体像についてはさらに詳しく説明されており、それは JSL プログラミングを学ぶのに良い方法だと私が考えることと一致しています。 既存のコードを使用して例から学ぶ方がはるかに効果的です。 そのコードを使用してください。 |
| |
やりたいことを実行するスニペットを見つけてください。 JMP ユーザー コミュニティ、またはスクリプト ガイドで見つけることができます。 |
| |
それをコピーして、自分の用途に合わせて調整するだけです。 構文の複雑さをすべて理解する必要はありません。 そうすれば本当に遠くまで行けるよ。 経験を積むにつれて、構文の学習も進んでいきます。 |
| |
そこで、強化されたログからコードを強化するためにできることについて 3 つのケーススタディについて説明しますが、最初に JSL について復習しましょう。 おそらく、これは一部の人にとって JSL の基本の入門となるでしょう。 |
| |
したがって、これから JSL を始める場合に知っておくべき重要なことは、すべてがオブジェクトであるということです。 あなたが持っているすべてのもの |
| |
何かをしたいのはオブジェクトなので、これにはデータテーブルとデータテーブル内の列、そして分散プラットフォーム、グラフビルダー、Fit Y by X、などのプラットフォームが含まれます。 |
| |
そしてそれらのプラットフォームからのレポート。 したがって、オブジェクトがある場合、それらを操作する方法は、オブジェクトにメッセージを送信することです。 したがって、オブジェクトはメッセージを受け取ります。 以下は、拡張ログからコピーした非常に単純な例です。 |
| |
サンプル データ ディレクトリ内の Big Class データ テーブルを開いて、簡単な分布分析を実行します。 ログからコピーしたコードは次のとおりです。 |
| |
今。 |
| |
私たちがやりたいことは、まずデータテーブルに名前を付けることです。 名前を付けます。そのために、ここの 5 行目からコードを取り出して拡張しました。 私 |
| |
この bctable= を残りの前、ステートメントの開始部分の前に追加しました。 そして、そのデータ テーブルを開くときに、bctable という名前を作成します。 ご存知のとおり、私は bctable を選択しました。ドキュメントに dt が表示されます。 あなたが割り当てたものを使用してください。 |
| |
それでは、これを強調表示して実行ボタンをクリックし、Big Class を開き、同時に bctable という名前を割り当てて実行してみましょう。 さて、それをするメリット、なぜそれが重要なのか、それは今私がこれを持っているからです |
| |
ハンドル。これは、後でコードで使用できるフック、bctable です。 私が bctable と言うときは、ビッグ クラスのことを指します。 |
| |
それで |
| |
次の行は配布コマンドですが、これも変更しました。 そして、ご存知のとおり、この前のログには、裸の配布コマンドが含まれていました。 それはありません... |
| |
データテーブルを指しているわけではありません。 この方法で実行すると、JMP はフォーカスのあるデータ テーブルに対してのみ実行します。 |
| |
現在のデータ テーブルは、その直前に開いたため、たまたま大きなクラスになります。 しかし、常に明示的であることは良いことです。 どのデータテーブルを操作したいのかを明示的に指定するのが良いので、この方法で実行します。 |
| |
bctable、二重矢印、配布コマンドの順に選択します。 これが、二重矢印の付いた bctable を追加したものです。 |
| |
これがメッセージを送信するための構文です。 したがって、右側の配布メッセージを左側のデータ テーブル (bctable の名前の由来) に送信します。 bctable の上にマウスを置くと、それが Big Class であることがわかります。 それで全体を実行すると、 |
| |
配布レポートを受け取ります |
| |
私たちが望んでいたもの。 |
| |
ここで...これをさらに一歩進めることができ、多くの場合、これを行う必要があります。 プラットフォームを実行するときに名前を作成するので、 |
| |
これは二重矢印と等号の両方を組み込んだ行です。 それでは、えーっと、これを右から左に読んでみましょう。 この配布メッセージを取得して、bctable に送信します。 |
| |
そして、その結果であるプラットフォームを、distplat と呼ぶこの変数に保存します。 |
| |
それを実行しましょう。 |
| |
わかりました。見た目は同じですが、違いは、この JSL 変数 distplat があり、後ほどコード内で使用できることです。 |
| |
何に使いますか? これを使用して出力に赤い三角形のオプションを追加することもできるので、ここではそれを導入しましょう... |
| |
その配布レポートを見えるところに持っていきましょう。 |
| |
そして、その distplat オブジェクトを取得します。それが...それがディストリビューション プラットフォームです。 |
| |
マウスを上に移動して、この行を実行してみましょう。 配信プラットフォームで正規五分位プロットをオンにします。 そこにそれがある。 |
| |
わかった。 |
| |
最後のステップは、プラットフォームを取得し、このオブジェクトをここに取得し、 |
| |
そこからレポート (レポート オブジェクト) を取得します。 それがこの行です。 レポート メッセージをプラットフォーム オブジェクトに送信すると、レポート オブジェクトが取得されます。 |
| |
コード内のこれらの値 (レポート内の数値、グラフ、グラフィック要素) にアクセスしたい場合は、これを行う必要があります。これが必要になります。 このオブジェクトは rdistplat です。 それで、もう一度実行するだけです、rdistplat。 |
| |
実行してみると何も表示されませんが、何が起こったのかというと、rdistplat というオブジェクトができました。 これは表示ボックスであると書かれていますが、これを使用してレポート内の番号にアクセスする方法については後ほど説明します。 |
| |
わかりました、ログを消去します |
| |
そして私たちのことから始めてください |
| |
ケーススタディ。 |
| |
したがって、学習する最初のテクニックは、データ テーブル内の異なる列に対して同じコマンドを何度も繰り返し、for each コマンドを使用してループで列を反復処理することです。 それで |
| |
これは非常に一般的なニーズであり、列の形式やモデリング タイプを変更するなど、単純な作業が必要な場合もあります。 |
| |
次のように非常に複雑になる可能性があります |
| |
列の変換を取得し、管理図を実行し、その管理図で何かを実行します。 そうです、それはスケールします。このテクニックは拡張性があります。 |
| |
これを JSL コードで実現する方法を次に示します。 まずポイントしてクリックして、やりたいことを実行します。 これを単一の列に対して実行し、拡張ログを使用してそのコードを取得します。 |
| |
それがスクリプトの骨子になります。 そして、そのアクションを実行するすべての列をループするように変更します。 |
| |
for ループや反復に使用するメソッドは for each で、これは JMP 16 で導入されたものであるため、この手法は以前のバージョンの JMP では機能しません。 |
| |
これには JSL リストと呼ばれる概念も使用されているため、それについても少し説明します。 |
| |
さて、始めます |
| |
JMP では、ホーム ウィンドウから始めましょう。 |
| |
そして、ログをチェックして、クリーンであることを確認します。 いいえ、ログを消去する必要があります。 さて、やりたいことをポイントしてクリックしてみましょう。 sc20 というデータテーブルを開きます。 |
| |
このデータ テーブルは、オンラインで見つかるプレゼンテーション資料で入手できます。 |
| |
このデータテーブルを見ると、ID 列があり、約 20 個の列があります。 |
| |
データの列。 これらは小数点以下の桁数が非常に多く、精度が高すぎるため、小数点以下 2 桁で切り捨てたいと考えています。 そこで、データの小数点以下最初の 2 桁のみを表示するように形式を変更しましょう。 |
| |
ポイントとクリックだけの簡単な操作です。 右クリックして列情報に移動し、 |
| |
そして、表示形式をデフォルトから変更して、小数点を 2 桁に固定します。 |
| |
OK、NPN1 に対してそれを実行しました。同様にそれを実行したい他の 19 列があります。 |
| |
それでは、強化されたログを調べてみましょう。 |
| |
これが、1 つの列 NPN1 の形式を変更するために必要なコードです。 これを再利用するには、赤い三角形に移動すると、スクリプトをクリップボードまたは新しいスクリプト ウィンドウに保存できます。 |
| |
別のファイルに切り替えて、そこでいくつかの作業を行ったので、これについてもう少し掘り下げてみましょう。 |
| |
わかった。 |
| |
最初の 2 行...3 行、これはログからのコードです。 わかりました。最初にデータ テーブルを開きます。 |
| |
そして、あなたは私が少し編集したことに気づいたかもしれません、私はこのファイルへの長いパス名と長いディレクトリパスを編集しました。 |
| |
このように実行すると、 |
| |
JMP データ テーブル sc20 がこの JSL ファイルと同じディレクトリにある限り機能します。 つまり、これは、現在いるディレクトリと同じディレクトリへのローカル ファイル パスのようなものです。 |
| |
とにかく、ログからデータ テーブルを開いて、固定小数点 10 文字、小数点 2 桁という形式変更を適用してここにいます。 |
| |
左側のテーブル...列参照は、列をアドレス指定する 1 つの方法です。 いくつかの異なる方法がありますが、これは結腸でよく見られる非常に一般的な方法です。 コロンの左側にテーブル ref...ref...参照、コロンの右側に列名。 |
| |
これもログから直接取得したものです。 |
| |
JMP はログ内でこの方法を使用してデータ テーブルをアドレス指定します。 私が話したことを実行する方が良いと思います。JSL を開くときに JSL 名を指定し、今後はその JSL 名を使用する方が良いと思います。 そこで、コロンの前のこのビジネスの代わりに、dt に変更しました。 |
| |
同じコードを少し修正しただけです。実行すると、はい、適切な効果が得られます。 データテーブルを開くと、 |
| |
形式を小数点以下 2 桁に変更します。 はい、それができたので、非常に簡単です |
| |
他の 19 列をすべて変更します。 ここに NPN1 があります。その行をコピーして全員を変更し、あと 19 回書くことができます。 |
| |
もちろん、それは非効率的です。そしてプログラミングの素晴らしい点の 1 つは、同じことを複数回実行する必要がないことです。 したがって、これを 19 回、20 回書く代わりに、1 回だけ書くと、メンテナンスが容易になります。 |
| |
ここではその方法を説明します。 最初に行うことは、操作対象のすべての列のリストを取得することです。 |
| |
そして、私がリストと言うとき、私は単なる一般的な種類のリストを意味するのではありません。 私は JSL リストについて話しています。JSL でプログラミングするときに使用する特定のデータ構造について話しています。 |
| |
リストはコンテナーに含まれるいくつかのオブジェクトであり、それが私たちの使用方法です。 ここでは、列オブジェクトのリストを作成する 3 つの方法を示します。 |
| |
1 つ目の方法は、手動ですべてを入力することです。 これを実行すると、 |
| |
3 つのテーブル参照...3 つの列参照、NPN1、PNP1、PNP2。 |
| |
コード内と CNames 変数の上にカーソルを置いたときの両方で中括弧に注目してください。 これらの中括弧などの中括弧を見ると、JSL でリストを扱っていることがわかります。 |
| |
これがリストを取得する 1 つの方法です。 他のいくつかの方法について説明しましょう。 これは、最終的にこの例で使用するものです。 これは |
| |
「ねえ、現在のデータ テーブル、つまりここで dt と名付けたデータ テーブルの連続列をすべて取得してください。」 したがって、メッセージ オブジェクトは、新しいリストを作成します。 |
| |
それでは、これを実行してみましょう。 |
| |
CNames の上にカーソルを置くと、それが私たちが望んでいることがわかります。 これが、操作対象となる 20 個すべてのリストです。 |
| |
これを行う最後の方法は、データ テーブル内の列をユーザーに選択させることです。 それはこんな感じです。 2つだけ選ぶことにします。 IVP と PNP4 を選択し、2 つの列を選択してみましょう。 |
| |
これを実行すると、 |
| |
データテーブルから選択した 2 つの列だけを含むリストを取得します。 |
| |
さて、そのリストを取得したら、次の仕事はその書式設定行をリスト内の各項目に適用することです。これはループまたは反復と呼ばれます。 |
| |
そこで、ここでは古い方法を紹介します。 JMP の for コマンドを使用します。 これは、JMP 16 より前に行うことです。まだ JMP 15 を使用している場合の参考のために、ここに記載します。 しかし、 |
| |
ご存知のとおり、これは少し複雑で新しいユーザーを探すのが難しいので、JMP 16 のリストを使用している場合は、よりコンパクトで読みやすい方法があります。 リストのすべての要素に対してアクションを繰り返したい場合は、これをコマンドごとに使用できます。 |
| |
わかりました、それではそれを見て、それが何をしているのか見てみましょう。 3 つの引数を受け取ります。引数はカンマで区切られており、右から左に処理します。 |
| |
最後の引数は、フォーマット コマンドです。フォーマットを適用します。dt NPN1 に対して実行する代わりに、1 つの列に対して実行する代わりに、ここにプレースホルダーを置き、リスト項目を選択しました。あなたが望むものを選択してください。 |
| |
そうです、これは単なる単語、変数名であり、それを選択するのはあなたです。 リスト項目を選択しました。 これがプレースホルダーであり、リストの各項目に対して実行するコマンドです。 どのリストですか? このリスト、わかりました。 これが私たちのリストです、それが 2 番目です |
| |
口論。そして、最初の引数はプレースホルダーです。 これは、リスト内の値を保持するためにそのプレースホルダーを使用していることを示しています。 |
| |
中括弧で囲まれているため、このコードを再利用する場合は必ず中括弧を使用してください。 |
| |
これが全体の様子です。20 行以上のコードの代わりに、3 行のコードだけがあり、これにはデータ テーブルを開くことも含まれます。 |
| |
列名のリストを取得し、それを繰り返します...20 個の連続する列すべてに対してそのアクションを繰り返します。 全体を実行すると、どのようになるかがわかります。 |
| |
そして、それがそこにあります。 さて、これらの各列 |
| |
形式では小数点以下 2 桁が表示されます。 |
| |
さて、これは for each を使用して非常に単純なことを行う非常に単純な例でした。 |
| |
柱の上で。 |
| |
もう少し興味深い例を紹介しましょう。 |
| |
同じデータセット、sc20 の例を次に示します。 |
| |
すべての列の管理図を作成し、それらの管理図を仕訳帳に追加して、すべてを PDF として保存します。 それで |
| |
それぞれに同じものを使用しており、最初の 2 つの引数は同じです。つまり、リスト項目が最初で、リスト名が 2 番目です。 しかし、今では 3 番目の項目として、それぞれの 3 番目の引数として、たくさんのコードがあります。 |
| |
それでは、行きましょう。 このスクリプト全体を実行してみましょう。 |
| |
大量の管理図を開いて実行し、それらをジャーナルにまとめます。 そして今、デスクトップを見てみると、管理図の 1 ページ目とそれらを区切るための改ページがすべて含まれている、report.pdf というものを作成しました。 つまり、1 ページ、2 ページ、3 ページです。 |
| |
したがって、この例も自分の時間に見てください。 プレゼン資料に記載してあります。 |
| |
さて、これが私たちが話している最初のテクニックです。 次のテクニックのためにログをクリアしましょう。 |
| |
さて、レポートから値を抽出します。 これはJSLではよく起こります。 ある種の分析を行います。それは分布かもしれませんし、回帰かもしれません。 |
| |
そこから何かを得る、何かを集める。 おそらくそれは平均値または中央値です。 おそらくそれは回帰からの傾き係数または P 値です。 |
| |
それが私たちの仕事ですが、これの難しい点は、レポートには階層的で高度に入れ子になった構造があり、その階層を下ってツリーをたどって、必要なものを正確に見つけるのが少し難しい場合があるということです。 そこで、裏技を教えます。 |
| |
コツは、いつものようにポイント アンド クリックして分析を進め、次に取得したいものを見つけることです。 |
| |
書式を少し変更するだけで、テキストの色を赤に変更します。 そして、そのスクリプトをログに保存すると、それを使用して、その赤い項目に対処する方法を学習します。 |
| |
JSLで。 それでは、一緒にそれを見ていきましょう。 |
| |
再びJMPに戻ります。 |
| |
Big Class、古き良き Big Class を開き、高さ列で分布を実行してみましょう。 |
| |
さて、これが私の配布レポートから何かを抽出したいと思います。 それが中央値だとします。この場合、中央値は 63 です。これを JSL 変数に入れて、後で再利用できるようにします。それを使って書き込んだり、計算したりすることができます。 。 |
| |
ここでは、その数字 63 に対処する方法を見つけるためのヒントを紹介します。 |
| |
取得したいものの色やフォントなどを変更します。 これを見たことがなければ、その方法を知っておく価値があります。 |
| |
ツールバーにプロパティのボタンがあります。これは JMP 16 の新しいボタンだと思います。 |
| |
したがって、このレポートのプロパティをオンにすると、 |
| |
私たちはこのツリーをたどって、必要なものを見つけることができます。 それで、これを見てください。 |
| |
数値コルボックス、右。 レポートの別の部分をクリックすると、対応する部分が表示されることに注意してください。 |
| |
項目 (表示ボックスの種類) がプロパティ パネルで強調表示されます。 |
| |
さて、これらすべての結果を含むこのものは、これらすべての数字が含まれる数値コル ボックスであることがわかります。これをそのまま使用するつもりで、次のように変更します。文字の色を赤にします。 |
| |
まさにその通りです。 |
| |
次に、プロパティ パネルを閉じます。 |
| |
レポートがあるので、このスクリプトを拡張ログに送信しましょう。 |
| |
赤い三角形、スクリプトをログに保存します。 |
| |
そして今そのログを見ています。 |
| |
これが私たちが望んでいる部分です。 ご存知のとおり、中央値やその他の統計のテキストの色を赤に変更する部分を含む distribution コマンドが含まれています。 それでは、もう少し詳しく見てみましょう。 |
| |
さて、これがそのコードです...拡張されたログと同じコードです。 ここにコピーして、少しフォーマットしただけなので、必要なものについてさらに話し合うことができます。 |
| |
つまり、私たちがこれを行った理由は、これから解釈するこの部分を正しく理解するためでした。 レポートに送信を使用し、その中でディスパッチを行います。 |
| |
ここでは、ディスパッチする 4 つの引数に焦点を当てます。 最初の 3 つが必要ですが、4 番目の引数は色の変更ですが、それは私たちが本当に興味があることではありません。 私たちが興味があるのは、必要な要素であるディスプレイ ボックスに対処することです。 それで |
| |
この最初の引数はナビゲーションです。 それは、表示ボックスに移動し、これらは実際にはアウトラインボックスであることを示し、アウトラインボックスに移動します。 |
| |
ここ。それでは、そのレポートを見てみましょう。 繰り返しになりますが、JMP ではレポートにこれらのレベルのネストがあることに気づいたと思います。 |
| |
外側のアウトラインボックス分布。 その中にはアウトライン ボックスの高さがあり、その中にはアウトライン ボックスの分位数があり、その分位数の中に抽出する必要があるものがあります。 |
| |
それが私に伝えていることなのです。 あの木を降りて行けと言っているのです。 必要なのは高さと分位数だけで、これで識別されます。 |
| |
良い。 次の 2 つの引数は、これについて何かを教えてくれます...私たちが試しているこの要素、つまり赤になったことについて説明します。 それは私たちに伝えます...3番目のものはそれが何であるかを示しています、それは数字のコルボックスであり、プロパティで見ました。 |
| |
2 番目の引数はタイトルを示します |
| |
その番号のコルボックス。 これは空白です。 これにはタイトルがありませんが、大丈夫です。 この情報を使用してデータを取得できるため、ここにタイトルが表示される場合もあれば、表示されない場合もあります。 |
| |
さて、これを手に入れたので、その情報を取得して使用します |
| |
中央値を抽出します。 |
| |
これを行うコードは次のとおりです。 ここの 23 行目から始まり、29 行目まで続きます。 |
| |
データテーブルを再度開いています。 |
| |
ディストリビューションに名前を付け、継続的なディストリビューションを実行します。 |
| |
ディスパッチやレポートへの送信がないことがわかります。これは、運用スクリプトで赤にする必要がないためです。 |
| |
はい、分布分析を実行し、プラットフォームに名前を付けます。 |
| |
これは重要です。レポート レイヤーにアクセスする必要があります。 この行で抽出しているので、このレポート オブジェクトである rdist が作成されます。 |
| |
そして、ここが魔法が起こるラインです。 ここがそれを掴んでいる場所です |
| |
その中央値を JSL 変数 mdn に割り当て、この値をログに書き込みます。 これについてもう少し詳しく説明しますが、最初に一度だけ実行して、何が行われるかを見てみましょう。 |
| |
23 行目を実行します。おっと、代わりにこのようにしましょう。 23 行目から 29 行目までを実行してみましょう。 |
| |
配信を実施しました。 赤ではなく、中央値を抽出しました。これは mdn に保存されています。その変数の値が 63 であることがわかります。 |
| |
中央値は63です。 完璧。 |
| |
大丈夫。 |
| |
ここで抽出している行は、 |
| |
中央値、レポートの数値 63。 |
| |
それを見てみましょう。 できるように、ここに電話してみます。 |
| |
私たちがそうするとき、これを参照してください。 |
| |
これがその行です。 各要素を個別に見ることができるように、再び整理されました。 |
| |
63、レポートの中央値。 |
| |
ここではその方法を説明します。 |
| |
これをサブスクリプト...サブスクリプトと呼びます。 JSL コードに角括弧が表示されている場合、それはオブジェクトに添え字を付けていることを意味します。 そのオブジェクトは、ディスプレイ ボックスやディスプレイ ボックスなど、ある種のコンテナです。 |
| |
多くの場合リストです。 この方法でリストに添え字を付けることもできます。 つまり、私たちがやっていることは、はい、このレポート オブジェクト内のネストされた項目を抽出しているということです。 |
| |
最初に行うのは、高さのアウトライン ボックスです。 それを覚えていて、そこから分位数ボックスに進みます。それを覚えていますか。 |
| |
そして今、私たちは正しい場所にいます。 必要なものを取得する必要があります。必要なのは番号のボックスです。 |
| |
使用できるタイトル (これはここにありました。タイトルはありません) の代わりに、番号で参照します。 これは、分位点アウトライン ボックスの最初の数値列ボックスです。 |
| |
これを見て、「ちょっと待って、ここに数字があるよ」と自分に言うかもしれません。 それもナンバーコルボックスですよね? いいえ、実際にはそうではありません。 これは文字列のボックスです。必要に応じて、すべての項目をチェックできることを覚えておいてください。 それもまたプロパティからです。 |
| |
ここをクリックすると、 |
| |
数値列ボックス、文字列列ボックス、文字列列ボックス。 ここにいるのが見えますか? 文字列...文字列番号、つまり最初の番号の列ボックスです。 |
| |
そしてそれはこれらすべての数字を取得することになります。 |
| |
さて、最後に行う必要があるのは、この添え字です。 このように添え字を付けると、6 番目の要素を取得します...1、2、3、4、5、6 になります。 それが中央値です。 63です。 この行を実行すると、レポートに添え字が付けられます。中央値を取得するので、後で再利用できます。 |
| |
レポートから何かを取得する方法があります。 別の例をプレゼンテーション資料で共有します。 |
| |
要素にはタイトルがあり、そのような状況に遭遇した場合は、それをモデルとして使用して独自の作業を行うことができます。 |
| |
最後に説明するのは、ユーザー (スクリプトを実行している人) から入力を取得する方法です。 |
| |
そして、どのファイルを分析するか、あるいはデータテーブルのどの列を分析するかを選択させます。 したがって、これがおそらく最も一般的なものです |
| |
初心者のスクリプト作成者がやりたいこと。 ご存知のとおり、ある列で何かを実行するようにスクリプトを設定しました。組織内の他の人に何かを提供したいと考えています。 |
| |
別のデータに対して自分で実行できるようにするためです。 したがって、このようにスクリプトを一般化して、ユーザーがファイルか列、またはその両方を選択できるようにすると、 |
| |
スクリプトを一般化することで、その価値が大幅に高まります。 それを組織内の他の人に渡すことになります。 彼らはあなたの作業を複製し、すべてのクリックを行わなくても迅速に実行できます。 |
| |
さて、このセクションではケーススタディというよりは、ランドリーリストのようなものになります。 これから...ユーザーにファイルを選択させる 3 つの方法と、列を選択させる 2 つの方法を紹介します。 |
| |
そして、ファイルを選択する方法から始めます。 いつものように、ログ内で何かを実行し、それをコピーすることから始めます。 これは...Big Class を開くと次のようになります。これがログに記録され、Big Class を開きます。 |
| |
デット。この場合は dt を使用しているので、Big Class を開くと、 |
| |
今は...dt は Big Class を指しています、わかりました。 そして、私は自分の制作脚本を進めていくことになるのです。 |
| |
ここで重要なのは、ユーザーが必要なファイルを選択できるようにするには、dt が別のファイルを指すようにする方法を見つける必要があることだけです。 |
| |
スクリプトの残りの部分を記述し、dt を使用すると、最初にこれを変更できます。 dt はもはやビッグクラスだけを指しているわけではありません。それは別のことを指すことになるでしょう。 |
| |
まあ、それはユーザーが決めることですが、 |
| |
スクリプトを実行している人。 さて、これがあなたができる最も簡単なことだと思います...データテーブルを開く代わりにこの行を使用することができます。 これをスクリプトの先頭で使用して dt を割り当てると、 |
| |
これが意味するのは、JMP がこのスクリプトを実行し、dt を与えるということです。 |
| |
先頭にあるデータテーブルに名前を付けます。 |
| |
したがって、ユーザーの観点から見ると、ユーザーが行うことはデータテーブルを開くことです。ここで sc20 を開き、sc20 を作成します。 |
| |
私の現在のデータテーブル。 ここにあるのが見えますか? このウィンドウにリストされているのが現在のデータ テーブルです。 |
| |
そのため、ユーザーがデータ テーブルを開いてスクリプトを実行し、この行に遭遇した場合、dt は sc20 を指すことになります。 |
| |
したがって、これは非常に強力な方法です。 問題は...それは、ユーザーが何をすべきかを正確に知る必要があることです。 最初にデータ ファイルを開いてからスクリプトを実行する必要があることを認識する必要があります。 |
| |
もう少し堅牢なものを作ることができます。 スクリプトの実行時にファイル選択ツールを表示して、ディレクトリ構造内を移動して、開く適切なファイルを見つけることができるようにすることができます。 |
| |
これは非常に簡単に実行できることがわかりました。 ここにあるものをすべて削除し、Big Class への参照を削除し、まったく引数を付けずに open と言うだけです。 |
| |
そして、JSL が試行すると...JMP がこの行を解釈しようとすると、「わかりました、ユーザーは何かを開こうとしていますが、何が何だか分かりません...何が何だか分かりません」と表示されます。 彼らが決定できるように、ファイル選択ツールを見せてみましょう。 |
| |
それでは...実行しましょう。 dt = オープン。 |
| |
スクリプトを実行します。 これが一般的なファイル選択ツールです。デスクトップから Iris を開きます。 |
| |
アイリスはオープン、もちろんdtの名前が付いています。 |
| |
すべての JMP ファイル、すべてのファイルです。 ここにはたくさんのものが表示されている可能性があります。 |
| |
もっと制御が必要な場合は、おっと、さらに制御が必要な場合は、 |
| |
ユーザーが行う選択では、open を使用する代わりに、pick file と呼ばれるものを使用します。 |
| |
ファイルの選択は、いくつかの異なるオプションを持つコマンドです。 3つだけ使ってます。 |
| |
この例を見てみましょう。 したがって、pick file の最初の 3 つの引数は、選択ウィンドウに表示されるタイトルになります。 |
| |
セレクターが開始されるディレクトリと、そのセレクターからどのファイルを開くことができるかを示すフィルターです。 それでは、この行、コードのこのセクション、ファイル選択コマンドを実行して、結果を PF に保存しましょう。 |
| |
それを実行してください。 |
| |
さて、それがここでの引数であることに注意してください。Excel ファイルを選択してください。 それがウィンドウのタイトルに表示されているものです。 |
| |
フォルダー、2 番目の引数のパス、そこから開始されます。 |
| |
そして 3 番目のビットは、ユーザーが開く Excel ファイルのみを表示するファイル フィルターです。これはここにあります。 Excel ファイルから変更することはできません。 Excel ファイルに限定されています。 |
| |
それでは、サンドイッチを考えて、「開く」をクリックしてみましょう。 |
| |
え、ちょっと待って、なぜ開かないのですか? |
| |
さて、確認してみましょう。 PF はファイルを選択することと同じです。 PFって何? ああ、PFは私たちが切り開きたいものへの道です。 まだ open コマンドを発行していません。 Pick file はファイルを開くのではなく、ファイルを選択するだけです。 |
| |
サークルを閉じるには、次のことを行う必要があります。 を開いてテーブル参照を作成します。 |
| |
PF 変数。必要なファイル、つまり必要な Excel ファイルを指します。 |
| |
そこにそれがある。 これでサンドイッチ データ テーブルが開き、dt が得られ、希望どおりにスクリプトを続行する準備が整いました。 |
| |
重要なことを説明するためにここで一時停止させてください。 このような問題に遭遇し、すべての引数が分からず、さらに詳しく知りたい場合は、ファイルを選択してください。いくつかのことを説明します。 まずは少しだけもらえる |
| |
マウスをホバーすると、構文に関する情報が表示される小さなポップアップが表示されます。 もっと良い選択肢があります。 スクリプトウィンドウでそれを右クリックし、 |
| |
スクリプト インデックスで検索できます。 スクリプト インデックスは、JSL プログラマにとって非常に重要なツールです。 |
| |
探しているコマンドがあります。 引数のリスト、いくつかの説明テキスト、そして非常に重要なことに、実行して動作を確認できるいくつかの例が含まれています。 したがって、ここでこの例を実行すると、選択ファイルが提供されます。 |
| |
そうですね、行きたくない場所に連れて行かれました。 |
| |
閉じてみましょう。 |
| |
そうすれば、必要に応じて実験してこのコードを取得し、このコードを盗んでスクリプトで使用できます。 |
| |
さて、これがスクリプトインデックスです。 ヘルプメニューからも利用できます。 スクリプト メニュー...そこにあるものを見てください。 |
| |
現在のデータテーブル、ネイキッドオープン、またはピックファイル。 他にも方法はありますが、まずはこの 3 つを紹介します。 |
| |
次に、ユーザーが操作したい列を選択できるようにする方法について説明します。 |
| |
ここにいます...ログから何かをコピーしました。 価格というデータテーブルを開きました。そして、時間の経過に伴うリンゴの価格を示すグラフを作成しました。 |
| |
ポイント アンド クリックの部分については説明しません。スクリプトを実行するだけです。 拡張ログからスクリプトを抽出する方法はすでにご存知だと思いますので、スクリプトが何を行うかを見てみましょう。 価格を開くと、リンゴと日付、時間の経過に伴うリンゴの価格のグラフが表示されます。 |
| |
このデータ表を見てください、価格、はい、リンゴもありますが、私はこれらすべても持っています。 では、どのグラフを見たいのか、どの列をグラフ化したいのかをユーザーに伝えたい場合はどうすればよいでしょうか。 |
| |
それがこのセクションの目的であり、ユーザーに選択させることです。 |
| |
わかった。 |
| |
そこで、2 つの方法について説明します。 最初のものはこれです。 |
| |
ユーザーが選択した列を操作します。 |
| |
そして、これは以前にも見たことがあります。この構文は、おそらく 2 番目のケース スタディで見たと思います。 はい、こうしてリストを作ります |
| |
これには、データテーブルで選択された列が含まれます。 それでは、そのデータテーブルに戻りましょう。 |
| |
おそらく 3 つの列を選択して、 |
| |
走ろう |
| |
これ。実際には dt を実行する必要があると思います。 この両方を実行してみましょう。 |
| |
チキン、コーヒー、卵。 |
| |
よし。 |
| |
それで。 |
| |
どれを操作したいですか? 操作方法や、ループを使用してリストを反復処理する方法はご存知でしょうが、私たちはそれをやっていません。 ショートカットを使用するだけです。 見てください、と言うつもりです。 |
| |
ユーザーが複数を選択した場合は、最初の 1 つをグラフ化するだけです。 したがって、ユーザーはスクリプトを実行する前に、チキン、コーヒー、卵を選択しました。 鶏肉に関するグラフを見せたいだけです。 |
| |
そうですね、それが次の行です。 それがサブスクリプションです。 CNames リストに添字を付けて最初の項目を取得します。 |
| |
それで、これを実行します。 |
| |
これで、私のコルという素晴らしい変数が手に入りました。 |
| |
これには、リストの最初の項目であるチキンがあり、コロン付きの列参照が含まれています。 |
| |
これで、グラフ ビルダーを実行できるようになりました。 これで私たちは自分の人生を続けることができます。唯一の違いは、ここではリンゴだった場所を置き換えたことです。 |
| |
それが今の私のコルです。これが私たちが行った唯一の変更なので、これを実行して、鶏肉の価格のグラフを取得します。 |
| |
良い。 |
| |
それは 1 つの方法ですが、先ほどもお話ししたように、これにはユーザーが何をしなければならないかを理解している必要があります。 これには... |
| |
この方法では、データ テーブルを開いてこれを選択し、スクリプトを実行する必要があることをユーザーが認識する必要があり、それは少し面倒です。 それで |
| |
代わりに、実行時に列選択ダイアログをユーザーに表示する方が、もう少し堅牢です。 それは次のとおりです。 構文は少し複雑です。 大まかなレベルで話すので、詳細には立ち入りません。 先ほどと同じようにデータテーブルを開きます。 |
| |
列ダイアログと呼ばれるこのコマンドを使用しています |
| |
セレクター...列セレクターをユーザーに表示します。 |
| |
繰り返しますが、これには多くの議論があります。 カップルだけ使ってます。 私がやっているのは、「商品を選択してください」というボタンを与えてください。ユーザーはその列を最大 1 つ選択でき、少なくとも 1 つ選択する必要がある、と言っているのです。 |
| |
ここで、このスクリプトの 60 行目から実行してみましょう。 |
| |
始値、これが私のダイアログです。非常に少ないコードでなんと豊かなダイアログができたことでしょう。 それが、私たちが使用しているこのコラム ダイアログの長所です。 そこで、コーヒーを選択して「OK」をクリックします。 |
| |
良い。 スクリプトに戻り、この行を実行しました。 |
| |
そして、選択の結果が dlg に保存されます。 それを見てみましょう。 |
| |
わかりました、それは少し複雑です。 dlg はリストであると書かれています。中括弧を参照してください。入れ子になった中括弧がいくつかあるので、入れ子になったリストのようなものです。 |
| |
ここに到達するための添え字を示します。 これについては説明に多くの時間を費やすつもりはありませんが、必要に応じてこのコードをコピーできます。 したがって、会話からコーヒーと書かれた部分だけを取得するには、そこにあるコーヒーに関するコラムの参照を、 |
| |
これが私の列を作成するための添え字なので、この行を実行します。 |
| |
そして今、私のコルにはコーヒーコラムへの参照だけが含まれており、これは以前と同じです。 次を使用してグラフビルダーを実行します。 |
| |
私のコルをリンゴに置き換えると、コーヒーまたはユーザーが選択したその他のものを取得します。 |
| |
さて、これが私が皆さんと共有したかったすべてです。 この方法で JSL プログラミングを始めようとしている人へのちょっとしたアドバイスで締めくくりたいと思います。 |
| |
アドバイスは、JMP にコードを可能な限り修正してもらうことです。 それが拡張ログの目的であり、ログからコードを盗み出します。 それがあなたのスクリプトの大部分です、 |
| |
あとは、結合組織、つまり要素をまとめて使用可能な制作スクリプトにする部分を作成するだけです。 そのコードを盗むこともできます。 スクリプト インデックスからそれを盗むつもりですが、このプレゼンテーションからも確実に盗むことができます。 |
| |
すべての資料はこのプレゼンテーションに含まれており、JMP ユーザー コミュニティの JSL クックブックから盗むこともできます。この素晴らしいリソースには、多くの一般的な JSL タスクが含まれており、それらの作業を実行するために必要なコードが提供されます。 |
| |
繰り返しになりますが、構文についてあまり考え込まないでください。 コードを取得して、必要なものを置き換える方が簡単です。 何も壊すことはありません。経験を重ねることで、この構文の微妙な点を理解できるようになります。 |
| |
ご清聴ありがとうございました。 |