はじめに
.NET/Link
Wolfram言語とマイクロソフト社の.NETプラットフォームを統合する製品,.NET/Link にようこそ..NET/Link を使うと完全にトランスペアレントな方法でWolfram言語から.NETを呼び出すことができ,.NETプログラムからWolfram言語カーネルを使用したり抑制したりすることもできる.Wolfram言語のユーザにとって,.NET/Link は.NETの世界全体を自動的にWolfram言語環境に拡張してくれるものである..NETプログラマーにとっては,.NET/Link が1度に1行ずつ.NETのクラスを試してみたり,構築したり,テストしたりすることができるようなスクリプトシェルにWolfram言語を変えてくれる.また .NET/Link は,.NETをWolfram言語の計算サービスを使うプログラムを書くのに理想的な環境にしてくれる.
.NET/Link の最も独自の機能は,任意の.NETの型をWolfram言語にロードすることができ,その後.NETオブジェクトと,呼出しメソッド,プロパティ等を直接Wolfram言語言語から作成できる点にある.したがって,Wolfram言語を使って任意の.NETプログラムの機能を「台本に書く」,つまりWolfram言語で.NETプログラムを書くことができる.基本的に.NETからできることは何でも,今やWolfram言語から行うことが可能で,真のインタープリタ型環境で作業しているので,おそらく.NETから行うよりも容易になったとさえ言える.
.NET/Link は.NETのランタイムに直接関係していないように見えるような大変便利なことを行うことも可能にしてくれる.例えば,CスタイルのDLL機能を直接Wolfram言語から呼び出したり,Visual Basicと大変よく似た方法でCOMオブジェクトを作成したりスクリプトを書いたりするということが可能になる.
.NET/Link はエンドユーザも開発者も同じように使えるように設計されている.Wolfram言語ユーザが任意の.NETメソッドをトランスペアレントに呼び出すことができるという機能は同時に,開発者がWolfram言語用の高度な市販アドオンを作成することも可能にしてくれる.Wolfram言語用にカスタムフロントエンドを書きたい,あるいはWolfram言語を別のプログラムの計算エンジンとして使いたいと考えているプログラマーは,.NETを .NET/Link と一緒に使うほうが従来のCあるいはC++からのWolfram Symbolic Transfer Protocol (WSTP)インターフェースを使うよりも簡単であることに気付くだろう.
最後に,.NET/Link には完全なソースコードが付いてくる.ユーザはドキュメントに補足する形でコードを調べたり,自分のプログラム用にヒントを得たり,高度な機能の使い方をよりよく理解したり,コードがどのように機能するのかを見たりすることができる.
このチュートリアルは.NET FrameworkとWolfram言語についてユーザがある程度の知識を持っていることを前提としている.ドキュメントは全体的にどちらかというと少しC#寄りであるが,Wolfram言語を呼び出す.NETプログラムを書くことについて触れている第2部では,主要な例はだいたい C#とVisual Basic .NETの両方のバージョンで与えられている.当然のことながら,.NET/Link を使って.NETプログラムを書く際には,単にC#とVisual Basic .NETだけでなく,.NETを認識する言語ならどれでも使用することができる.
「Wolfram言語から.NETを呼び出す」では,.NET/Link を使ってWolfram言語から.NETを呼び出す方法について, 「.NETからWolfram言語を呼び出す」では.NETからWolfram言語を呼び出す方法について触れる.
.NET
.NETはWindowsプログラミングのための新しい開発プラットフォームである.これは,MFC,COM,ActiveX,ATL,ASP,ADOといった数多くのアルファベットを羅列した名前を持つプログラミング技術全体を含めて,それ以前に開発されたすべてを基本的に置き換えるものである.マイクロソフト社では.NETと連結したXML Web Servicesを強調しているが,XML Web Servicesは.NETプラットフォームのほんの一部にしか過ぎず,.NETの成功はXML Web Servicesが広く適用されていることによるものではない.
.NETは将来のWindowsプログラミングを代表するもので,マイクロソフト社はその技術と製品の多くを急速に.NETを基盤としたものに移行しつつある.
.NETのコアには,ランタイムが理解できる特別なバイトコードでコンパイルされたプログラムをロードして実行する, Javaで使用されているものに似たランタイムエンジンがある.このランタイムは共通言語ランタイム(Common Language Runtime; CLR)と呼ばれるが,ここでは.NETランタイムと呼ぶことが多い. このシステムの主要機能は,多くの言語をCLRバイトコードにコンパイルしてランタイムで実行することができる点である. つまり.NETは言語に中立で,.NETコンパイラが使用できるプログラミング言語ならどれでもサポートしているということである. マイクロソフト社はC#,Visual Basic .NET,JScript,Visual J# .NET,C++ With Managed Extensions用のコンパイラを提供する.その他にもFortran,Perl,Python,Eiffel,COBOL用のものを含めたコンパイラが数多く存在する.1つの.NET言語,例えばVisual Basic .NETでクラスを作成して,それを別の言語でサブクラスにすることさえも可能である.
.NETは言語に中立ではあるが,おそらく.NET言語の中で最も重要な2つの言語は,Visual Basic言語の改良型であるVisual Basic .NETと新しい言語でいろいろな点でJavaに似ているC#である.
WSTP
Wolfram Symbolic Transfer Protocol (WSTP)は,Wolfram Researchのプロトコルであり,Wolfram言語と他のプログラムとの間でデータやコマンドを送ったり受け取ったりするためのものである.WSTPは,.NETとWolfram言語がお互いに話をすることができるようにするための,内在する糊の役割を果たしている.Wolfram言語から.NETを呼び出す場合には,NET/Link はWSTP交信の低レベルの詳細を完全に隠し,Wolfram言語プログラマーは.NETクラスがまるでWolfram言語環境そのものの一部であるかのようにこれらのクラスをロードしたり使用したりすることができる.Wolfram言語を呼び出す.NET プログラムを書く場合には,.NET/Link はl従来のCのWSTPプログラミングインターフェースよりも高レベル層の機能を提供する.
J/Link と比較しての .NET/Link
J/Link は従来からあるWolfram Research製品であり,.NET/Link が.NETと Mathematica を統合するのとほとんどまったく同じ方法で JavaとWolfram言語を統合する.J/Link を使って .NET/Link で行える操作の多くを行うことができるし,反対に .NET/Link を使って J/Link で行える操作の多くを行うことも可能である.これはJavaに基づいているため,J/Link はクロスプラットフォームであるという利点を持つ.すべてのWolfram言語プラットフォームで実行できるようなプログラムを書く場合には,J/Link を使うとよい.反対に.NETはWindowsオペレーティングシステムにJava よりもしっかりと統合されているため, Windows特有の操作を行いたい場合,あるいは大変ネイティブなWindowsのルックアンドフィールを付けたい場合には, .NET/Link. を使うとよい.またWindowsでは, .NET/Link はCスタイルのDLL機能を直接Wolfram言語から呼び出したり,COMオブジェクトを制御したりといった J/Link ではできないようなことも行うことができる.
.NET/Link と J/Link は大変似たプログラミングモデルを提供する.どちらか一方を使い慣れていれば,もう一方を使うときに大変役立つ.