WOLFRAM言語チュートリアル

インポート/エキスポートコンバータの自動ロード

Wolfram言語はImportExportのインターフェースに加え,ImportExportのフレームワークで使用される形式の登録を簡単にする自動ロードメカニズムを備えている.

自動ロードと手動ロード

手動ロード

コンバータを手動ロードする例は,チュートリアルに含まれているが,その場合を登録するコマンドを明示的に実行しなければならない.

Click for copyable input
Click for copyable input

自動ロード

形式登録とコンバータを適切な場所に置くと,Wolfram言語はその形式登録を自動的にロードすることができる.ImportExportのコンバータの自動ロードは,次の手順に従って行う.

(次の手順では,$UserBaseDirectoryでも$BaseDirectoryでも使える.)

1. $UserBaseDirectory/SystemFiles/Formatsというディレクトリがない場合は,これを作成する.

2. $UserBaseDirectory/SystemFiles/Formatsの中に format という名前のディレクトリを作成する.ここで format というのは自動ロードする形式名である.

3. format ディレクトリの中で,という名前のファイルにというコードブロックを加える.

例えば,ディレクトリ$UserBaseDirectory/SystemFiles/Formats/MyFormat1の中のファイルの内容は次のようになる.

Click for copyable input

4. format ディレクトリの中で,というファイルにコンバータのソースコードを置く.

ディレクトリ$UserBaseDirectory/SystemFiles/Formats/MyFormat1の中のファイルの内容は次のようになる:

Click for copyable input

5. ファイルが揃ったら,Wolfram言語を起動したときに$ImportFormatsにエントリが含まれ,Import[ file,{"MyFormat1","Header"}]が適切に評価される.

実際,Wolfram言語でサポートされるファイル形式はすべてこの自動ロードメカニズムを使って登録されており,形式登録は$InstallationDirectoryにある.

さらに,Wolfram言語の形式のいくつかはディレクトリ$InstallationDirectoryでソース形式で利用できるようになっている.

登録メカニズムの詳細

ディレクトリ名は形式名と一致していなければならない

自動ロードメカニズムを使う場合,フォルダ名はその形式名と同じでなければならない.形式には以下の形式エイリアスを使い,実質的には異なる名前が付けられる.

ソースファイルが標準の場所にない場合は,明示的に"Sources"を指定しなければならない

自動ロードメカニズムを使う場合,Import/Exportフレームワークはソースファイルが$UserBaseDirectory/SystemFiles/Formats/format/Converter.mか$BaseDirectory/SystemFiles/Formats/format/Converter.mにあるものと想定する.ソースファイルが別の場所にある場合は,のようにオプションを使って明示的に宣言しなければならない.

コンフリクトの解決

コンフリクトがある(例えばディレクトリが$InstallationDirectory/SystemFiles/Formatsの中にも$UserBaseDirectory/SystemFiles/Formatsの中にもある)場合,$UserBaseDirectoryの登録が最優先され,次に$BaseDirectory$InstallationDirectoryの登録が使われる.

形式エイリアスの定義

ある形式をいくつかの別の名前で参照できるよう,形式のエイリアスを定義しておくと便利なことがよくある.例えば,のエイリアスとしてが使いたい場合,下のような内容を持つファイル$UserBaseDirectory/SystemFiles/Formats/FormatMappings.mを作るとよい.

Click for copyable input
このエイリアスはもとの形式と同じように動作する.
In[5]:=
Click for copyable input
Out[5]=
もとの形式は同じ情報を返す.
In[7]:=
Click for copyable input
Out[7]=