6/16/2011

MaTX on Mac OS X

MaTXは九州工業大学の古賀雅伸先生が開発されているフリーの科学技術計算・制御系設計ソフトウェアです.言語仕様が比較的C言語に近く,Cプログラマにとってはごく自然な拡張として行列,複素数,伝達関数などを扱うことができます.またインタプリタ(matx)とコンパイラ(matc)が用意されているのも特徴で,とっつきやすいインタラクティブな操作と,高速な実行コードの生成の両方がシームレスに行えます.何といってもフリーですので研究のみならず学習・教育目的にはぴったりです.


さて,MaTXはUNIX系OSやWindowsなど多くのプラットフォームで使用可能ですが,去年の秋頃から今どきのMacintosh (Intel CPU + Mac OS X) でも使えるようになっています.インストール時の注意点についてまとめておきます.
  • gcc (Xcode) のインストール
    コンパイラ(matc)を使うためにはgccが必要です(インタプリタしか使わないなら不要).
    追記(1):どうやら,現状ではインタプリタしか使わない場合であってもgccが必要なようです.matxを起動する時にCプリプロセッサ(cpp)が呼ばれていることが原因のようです.下記に従ってXcodeをインストールする必要があります.

    追記(2): インタプリタのみ使用する時は,matx を起動する際に,
    matx -nocpp
    のように,「-nocpp」オプションをつければXcodeがなくても大丈夫です.

    Macに付属のインストールDVDにXcode Toolsが入っていれば,これをインストールすればOKです.ところが最近のMac(late 2010頃から?)には付属しなくなってしまいました.最新のXcode 4.xはAppleのDeveloperサイトにて配布されていますが,入手するためには年会費10,800円のMac Developer Programに加入するか,Apple Storeから600円で購入する必要があります.
    一つ前のXcode 3.2であれば,こちらの一番下にある"Apple Developer"に無料で登録することによって入手可能です.
  • gnuplotのインストール
    MaTXはグラフィクス機能をgnuplotに任せていますので,プロットなどを実行するにはgnuplotのインストールが必要です.Macの場合はMacPortsなどのパッケージ管理ソフトを利用して
    sudo port install gnuplot
    とするのが簡単です.また,Snow leopard用の64bitバイナリもこちらで配布されています(自己責任でどうぞ).
  • MaTXのインストール
    MaTXのサイトから,最新版の入手→Macintosh→Mac OS X (tar+gzip)とたどって,MaTX-x.y.z.tgz とMaTX-help.tgzをダウンロードします.それぞれ展開して適当な所に置けばOKです.私は /Applications の下に置いています.MaTXの起動プログラムは/Applications/MaTX/bin/matx です.Dockに登録する場合は,いったん "matx.app"にリネームしてからDockに放り込み,その後で"matx"に再度リネームします.前に述べた方法を使って,オリジナルアイコンを作るのもオツなものでしょう.下はPowerpoint上でCopper Blackフォントの"M"の字を使って作ったアイコンです.
  • 環境変数の設定
    起動プログラムへのパスと日本語の文字コードを設定するため,ホームディレクトリにある".bash_profile" に以下の行を加えます.
    export PATH=$PATH:/Applications/MaTX/bin
    export MATXDIR=/Applications/MaTX
    export LANG=ja
    export LESSCHARSET=utf-8
    export PAGER=less
起動するにはターミナルからmatxとタイプするか,先に登録したDockのアイコンをダブルクリックします.まずは demo とタイプして雰囲気をつかむとよいでしょう.デモの際に日本語の表示がおかしければ環境変数の設定に失敗しています.また,グラフの描画ができない場合はgnuplotのインストールに失敗しています.

matcはプラットフォーム依存のバイナリを生成しますし,matx自身もプラットフォーム依存のバイナリです.しかしMaTXの発展形であるJamoxはすべてjavaで書かれていて,プラットフォームに依存しません.JamoxでもMaTXのプログラムコード(.mmファイル)を扱うことができますが,実は内部でmatjというモジュールを呼び出し,コードを一旦javaに変換してから実行しています.このmatjはJamoxから切り出して単体でも使うことができますので,mmファイルをjavaに変換し,Processingに貼付けて使うことで,Processingのお手軽なGUI能力とMaTXの強力な計算能力をリンクさせることが可能です.これらの連携については後日あらためて紹介したいと思います.