スクリプトガイド > 互換性に関するメモ > バージョン15.0での互換性の問題
公開日: 04/01/2021

バージョン15.0での互換性の問題

Concat To()の文字列

文字列リテラルをConcat To()の第1引数として使用することはできなくなりました。次のような構文は使用できません。

"abc" ||= "123" // エラーを戻す

代わりに、次のような構文にしてください。

"abc" || "123"

プロジェクト内のSet Bookmarks

Set Bookmarksメッセージに無効な値を入力すると、これまでは無視されるだけでしたが、エラーが発生するようになりました。

WebページからのURLのインポート

これまでは、HTMLテーブルにテキストを伴うリンクが含まれる場合、テキストのみが読み込まれ、リンク自体は失われていました。今回のバージョンから両方が読み込まれるようになりました。同じように文字列の列が読み込まれ、表示されますが、

列のタイプを式に変更することでJSLリストに変換できます。リストの最初の要素は、Webページに表示され、JMPデータテーブルにキャプチャされたテキストです。第2の要素は、画像もあった場合は(以前と同様に)画像のURLで、画像がなかった場合は空白です。第3の要素はURLです。リンクがある場合、「イベントハンドラー」列プロパティも追加されます。

値の並べ替え

値は、データテーブルでも軸でも同じように並べられます。

「値の順序」という列プロパティの名前は、「値の表示順序」に変更されました。「データの出現順」列プロパティは、「値の表示順序」列プロパティの中のオプションとなったため、JMPインターフェースを通じて列に割り当てることはできなくなりました。

互換性を確保するため、「値の順序」と「データの出現順」の列プロパティは、どちらもGetコマンドで取得し、Setコマンドで設定することが可能です。

JSONの読み込み

JSONの読み込みコードは、JSONファイルによる数値、ブール値、文字列の区別を使用せず、代わりに列全体が数値か否かを特定するようになりました。識別の結果が期待どおりでない場合は、列を文字列として明示的に指定することができます。

プロジェクト

JMPでは、複数のプロジェクトが同時に開いていて、一部の項目がどのプロジェクトでも開いていない場合があります。今回のバージョンから各プロジェクトが独自のグローバルスコープを持つようになったため、異なるプロジェクトに同一の名前を持つ変数があっても、競合が生じなくなりました。以前は、各スクリプトにNames Default to("プロジェクト")を含めない限り、すべてのプロジェクトの変数が同じスコープに置かれました。まれに、開いているすべてのプロジェクトで共通の変数を使用したい場合もあるでしょう。そのときは、新しい:::ルート演算子を使用してください。

異なるエディタウィンドウに表示されているスクリプトの間で通信させたい場合は、名前空間またはグローバルを使用する必要があります。スクリプト1がスクリプト2を開く場合、スクリプト2は、スクリプト1のHere名前空間変数にアクセスできません。JMP 14.1では、スクリプト1からスクリプト2を開いた場合、スクリプト2は、スクリプト1のHere名前空間で定義された変数にアクセスすることができました。

データテーブルの列とメタデータのコピーと貼り付け

Copy Multi Columns PropertiesPaste Multi Columns Propertiesは、名前がそれぞれCopy Column PropertiesPaste Column Propertiesに変更されました。

下位互換性を確保するため、Copy Multi Columns PropertiesPaste Multi Columns Propertiesも引き続きサポートされます。

ラインフィードとキャリッジリターンのエンコーディング

ラインフィードとキャリッジリターンが、Unicodeの0x0A仕様に対応するようになりました。新しいスクリプトはLFの改行コードを使って保存されるため、JSLのすべての文字列リテラルが変更されることになります。あるスクリプトが文字列を解析する際、CR "\!r"が期待されるケースでも、そのスクリプトがJMP 15で保存された時点でLF "\!n"に変わっている可能性があります。

スクリプトエディタはCRの改行コードを使用し、保存されたファイルはLFを使用するため、エディタから実行するスクリプト(たとえばアドインや、[編集]>[スクリプトの実行]を選択した場合)はファイルから直接実行するものと異なる可能性があります。

検証列の作成

「検証列の作成」ユーティリティがプラットフォームになりました。[スクリプトの索引]で「検証列の作成」を検索して新しいスクリプトコマンドに関する詳細を読み、新しいコマンドを使ってスクリプトを書くようにしてください。

以前作成したスクリプトは、ほとんど使われないStratify By Group(層化クラスター抽出)を除いて、正しく実行されます。

データフィルタの更新

カテゴリカルなフィルタの表示モードを[リスト表示]または[チェックボックス表示]にした場合、各カテゴリのアイテム数を棒グラフとして表示できるようになりました。連続データのフィルタでは、ヒストグラムに重ねて範囲セレクタが表示されるようになりました。デフォルトでは連続データのフィルタに最小値と最大値が含まれます。

フィルタ自体のスクリプトには下位互換性があります。しかし、フィルタ内のディスプレイボックスを使用するスクリプトでは問題が生じる可能性があります。これは、ボックスの構造が変わったためです。たとえば、あるスクリプトが、カテゴリカル変数を[チェックボックス表示]で表示すると各水準にラベルがつくと想定している場合などです。

これまで

Expr( Window( windowOfInterest )[checkboxbox( 4 )] << Get Selected )

としていたスクリプトを、次のような構文に変えてください。

ldf << ( Filter Column(:ブランド) << Get Selected Items );

Adobe Flashは廃止されました

Save As SWFメッセージはサポートされなくなりました。

モーダルのNew Windowを使った、削除されたオブジェクト参照

Modalメッセージを使用したNew Window()のディスプレイボックスは、ウィンドウを閉じるとアクセスできなくなります。New Windowを閉じた時点で、そのウィンドウの内容を構成していたディスプレイボックスが破棄されます。Windowsオペレーティングシステム上の旧バージョンのJMPでは、オブジェクトが実際に破棄されるまでに時間がかかり、スクリプトが誤ってディスプレイボックスにアクセスできてしまっていました。

ウィンドウを閉じる前に、いくつかの方法でディスプレイボックスオブジェクトから情報を抽出することができます。モーダルウィンドウを作成するに説明があるように、Return Resultメッセージを使えば値がリストとして戻されます。他にも、Button Box()のスクリプトの引数に実行したいアクションを含め、独自の[OK]ボタンを作成する方法もあります。また、New Window()に対してOnCloseメッセージを使用することもできます。詳しくは、ウィンドウを閉じる操作を参照してください。

より詳細な情報が必要な場合や、質問があるときは、JMPユーザーコミュニティで答えを見つけましょう (community.jmp.com).