Mathematica Player と Player Pro の互換性に関する開発者用ガイドライン
技術的概略
Mathematica Player ファミリの製品は,Mathematica 6で導入された動的インターフェース機能を使ったグラフィカルユーザインターフェースを介して,Mathematica アプリケーションの配備エンジンを提供します.
アプリケーション配備の中心となるのは,そのアプリケーションがスライダー,チェックボックス,ポップアップメニュー,ロケータ,入力フィールド等のGUI要素により完全に制御できるということです.Mathematica のShift+Enterで起動される「line-in,line-out」モデルおよび「評価」メニューは Player ではサポートされていませんのでご注意ください.
Player,Player Pro,Mathematica の違いは,以下をご覧になるか比較表をご参照ください.
Player と Player Pro で閲覧するためのドキュメントを作成する場合は,特別考慮することはありません.ノートブックの機能はすべて表示でき,どちらでも印刷が可能です.
Player および Player Pro のプログラミング
Player および Player Pro 用のアプリケーションの構築には,Mathematica で利用できるプログラミングおよび計算関数のほとんどすべてが利用できます.しかし,Player Pro で配備されるアプリケーションには多少のプログラミング上の制限があり,Player の場合は制限がそれより多くなります.
Player Pro と Player
Player のみ
データのプレロードについてのガイドライン
Player は実行時にデータをロードすることができないので,必要な情報がすべて確実にインタラクティブ要素に埋め込まれているようにしなければなりません.Player Pro でも同じアプローチを取ることができますが,必要に応じて外部データをロードすることも可能です.
埋込みには基本的な方法が2つあります.
Initialization
Initializationオプションを使って,Manipulateコマンドに小さいコードブロックを入れることができます.次のコードをご覧ください.
Manipulate[myfunction[mydata,n],{n,0,1},
Initialization:>(myfunction[dat_,n_]:=...;mydata={...})];
SaveDefinitions
大きいコードブロック,パッケージ,大きいデータファイルの場合は,Manipulateを作成する前にそれらを定義してから,SaveDefinitionsオプションを使いManipulate内でその状態を保存した方が便利です.
<<MyPackage` mydata=Import[...];
Manipulate[myfunction[data,n],{n,0,1},SaveDefinitions->True];
Player Pro からの外部ファイルの利用
Player Pro は実行時に外部ファイルにアクセスできるため,さまざまな利点があります.
コードの構成と保護
大きいプロジェクトの場合,コードをパッケージに入れて整理する(Wolfram Workbench を使う場合も含む)と,メンテナンス可能な開発の役に立ちます.Initializationコマンドを使ってManipulate内部にコードを入れる代りに,パッケージの呼び出しを入れることができます.すべてのパッケージは,.mxファイル生成のためにEncodeコマンドかDumpSaveを使って符号化しなければなりません.
こうすると,これを動的インターフェースからロードすることができます.以下はその例です.
Manipulate[myfunction[n],{n,0,1},Initialization:>Needs["EncodedPackage`"]]
さらに,これにはソースコードを暗号化するという利点もあります.
リアルタイムおよびユーザ定義のデータ
ノートブックに外部データの呼出しを挿入し,Player Pro ユーザが自分のデータを使ったり,事前に指定されたリアルタイムデータを取得したりできるようにするには,いくつかの方法があります.以下は典型的な例です.
- リモートソースのデータを含むアプリケーションを初期化する:
Manipulate[...,Initialization:>(data=Import["http://server.domain.com/latestdata.dat"])]
- Webカメラからデータを取得する:
Manipulate[...,Button["Get image", data=Import["http://server.domain.com/webcam.jpg"]
- ユーザに解析用のローカルデータを選ばせる:
Manipulate[..., Button["Load data", mydatapath = SystemDialogInput["FileOpen"]]]
|