2012-01-12[n年前へ]
■Wolfram Mathematica とCDF Playerの違いを図解してみた
Mathematica研究会で、Wolfram CDF Playerでローカルデータを読み込むというネタを聴きました。 Wolfram CDF Player というのは、数式処理ソフトウェアであるWolfram Mathematicaで作られたファイルを「閲覧・再生」するためのソフトウェアです。 しかし、実際のところ、Wolfram CDF Player は制限が付けられたWolfram Mathematicaというようなものなのです。 そのため、前述のような「Wolfram CDF Playerでできることの限界を試そう」という技術的な試みがされたりします。 そこで、Wolfram CDF Playerの制限について、(現時点での)頭の整理がてらラクガキしてみました。
CDF Player(以前の名前であるMathematica Playerもほぼ同様)は、Mathematicaで作成されたCDFファイルしか開けず(ファイル内容と作成元Mathematicaのライセンス番号から定まる”だろう”チェックサム確認を行います)、ユーザ入力が「数値のみ」・ローカルファイルパスからのImportができない、といった制限がかけられています。
そこで、Wolfram CDF Player( 計算コアであるMathKernel)を使い切るために、図中に青数字で描いたような経路を使い、色々な「汎用化」がされています。つまり、
- Mathlink経由でMathKernelを直接叩く(「無料配布のMathematicaカーネルをIronRubyから自由自在に使ってみよう」など)
- 任意のコード・データを数値エンコードして、Imputフォーム経由で突っ込む(「Universal Mathematica Manipulator—Poor Man’s Mathematica」)
- ローカルファイルパスでなく、ネットパス経由のImportを行い、コード・データを突っ込む(「Wolfram CDF PlayerをMathematicaとして使う方法」)
- J/Link(MathLink経由Javaインターフェース)でコード・データを突っ込む(「Wolfram CDF Player を汎用する」など)
2番目の手法は「コードもデータも区別する必要なんかないね!」という思想が見え隠れしますし、3番目の手法は「ネット経由でのデータアクセスはできるだろうし、そうならば(やろうと思えばDNS偽装でも何でも)後はいくらでもやりようがある」という技術的な読みが感じられて、それぞれの技術的な趣きがあり、なかなか面白いものです。
Mathlinkからの接続がCDF Playerのカーネルでも有効になっているのは(Mathematica本来の動作構造と直結しているため)単純に機能を止めてしまう・壁を作ってしまうわけにはいかないという辺りだろうか、と想像しています。 また、ネットパス経由のImport機能が有効なのは、データ・アクセスのために必要で、その機能を止めるわけにはいかない(機能を止めてしまうと魅力的なデモが大幅にできなくなってしまう)、という辺りの理由を疑っています。 …というわけで、今日は、自分用のメモ・ラクガキをしてみました。