Mathematicaパッケージ

Mathematica パッケージ"とは、Mathematica関数や変数の定義をまとめて保存しおいて必要な時に呼び出してそれらを利用するためのもので、プログラミング言語の世界でいうライブラリに相当する。 標準で用意されている各種パッケージの他に、高度な処理をするための有料パッケージがあるが、自前のパッケージを作成することもできる。

Mathematicaパッケージは、Mathematicaコードで書いたテキストファイルで拡張子は .m である。 パッケージの読み込みは Get(<<) または Needs で読み込む(両者には若干の差異がある)。 たとえば、Mathematicaパッケージ myPackage.m を読み込むには、Mathematica 内で次のように書く。

<< myPackage`

ここで、記号 (`) はバッククォート(backquote)で「左上から右下に向かった」引用符である。 日本語キーボードでは [shift]+@ で入力することが多い。 myPackage` の代わりに "myPackage.m" としてもよい。

パッケージの配置場所

Mathematicaパッケージを自前で作成したり入手した場合、どこにそのファイルを置けばよいかを知るにはMathematica内で次のように入力する。

FileNameJoin[{$UserBaseDirectory, "Applications"}]

その結果は(筆者のMacOSでは)

"/Users/username/Library/Mathematica/Applications"

つまり、ホーム以下のライブラリ(~/Library)内のフォルダ Mathematica にある Application 内に置けばよいことがわかる(これらのフォルダがなければ作成する)。 あるいはその場所をいきなり開くには次のようにしてもよい。

SystemOpen[FileNameJoin[{$UserBaseDirectory, "Applications"}]]

パッケージの詳しい使い方やライセンス表示などのために、拡張子 .m の着いた1つのパッケージファイル以外に複数のファイルを付属させたい場合がある。 そのときには、フォルダ名称を「パッケージ名」(拡張子は付けない)としたをフォルダを作成して、フォルダ内にパッケージファイル名 init.m としたパッケージファイルを入れてフォルダごと配置する。

自前パッケージの書き方

making_package

Mathematicaパッケージはテキストエディタで次のような書式にしたがって書く。 Mathematicaを使って右図のようにパッケージを作成することも可能である。

(*
パッケージのコメント
*)

BeginPackage["パッケージ名称`"]

関数名::usage =
  "関数の簡単な説明や使い方を記述"

Begin["パッケージ名称`Private`"]
...
Mathematica関数の自前定義
...
End[];
EndPackage[];

通常のライブラリと同様に、パッケージ内だけのローカル変数・記号(シンボル)はカプセル化することができる。 こうしたスコープ範囲をMathematicaではコンテキスト(context)という。 シンボルの完全名称は コンテクスト`コンテクスト内の名前 で記述できる。 つまり、コンテクスト context1 の x と context2 の x とは別物 context1`x $\neq$ context2`x である。