Risa/Asir(りさ・あじーる[注釈 1])は、竹島卓・横山和弘・野呂正行らにより富士通研究所で開発されたオープンソース計算機代数システムである。数式処理エンジン Risa (Research Instrument for Symbolic Algebra; 記号代数のための研究道具)とインターフェイス実装 Asir[注釈 2] からなる。 2000年以降、オリジナルを安定版 (STABLE) とし、開発版 (HEAD) は野呂正行の転出先である神戸大学へ中心を移し[注釈 3]、OpenXM contrib2[注釈 4] として OpenXM コミッターによって開発されている(Asir2000 神戸版)。Risa/Asir は WindowsmacOS及び各種UNIX上で動作し、開発は主にFreeBSD上で行われている。

Risa/Asir の特徴

編集

主な特徴[2]

インターフェイス実装 Asir

編集

インターフェイスとしての Asir はコマンド asir によって端末から利用するコマンドライン(CLI)アプリケーションである。Windows版の asirgui.exe は端末上で asir を呼び出した状態を模したソフトウェアであり、マウス操作を想定した一般的なGUIソフトウェアではない。macOS版では十進BASIC[3]インターフェイスを模した cfep[注釈 5] を利用することができる。

ユーザ言語 Asir の文法

編集

Risa/Asir のユーザ言語も Asir と呼ばれ、標準入力から対話的に利用することができるほか、これはC言語に似たプログラミング言語としての性格を持っていて、予め Asir で書かれたソースファイルを読み込んで動作させることもできる。

ユーザ言語 Asir はC言語を下敷きとして設計されているために多くの特徴をC言語と共有しているが、プログラム変数を持たない・ switchgoto 文を持たない・有理数に対する計算が通常のように使用できる・リストが扱えるなどの点で Asir 独自の特徴が見られる。

Asir の扱うオブジェクト

編集

各オブジェクトは可読な形式での入力からパーサーにより中間言語に変換され、Risa によって各々に応じた型を持つ内部形式に変換される。オブジェクトの型は type()nytpe()vtype() によって確認できる。

Asir で使用可能な型
type() オブジェクトの型
0 0
1
2 多項式
3 有理式
4 リスト
5 ベクトル
6 行列
7 文字列
8 構造体
9 分散表現多項式
10 符号無し32bit整数
11 エラーオブジェクト
12 二元体上の行列
13 MATHCAPオブジェクト
14 一階述語論理式
15 小標数有限体上の行列
16 符号なし byte の配列
-1 VOIDオブジェクト
数の型
type() ntype() 数の型
1 0 有理数
1 1 倍精度浮動小数
1 2 代数的数
1 3 任意精度浮動小数
1 4 複素数
1 5 小標数素体の元
1 6 大標数素体の元
1 7 標数2の有限体の元
1 8 有限体の元
1 9 小位数有限体の元
不定元の型
type() vtype() 不定元の型
2 0 一般不定元
2 1 未定係数
2 2 函数形式
2 3 函数子

型を持たない変数

編集

Asir のプログラム変数は必ずASCII大文字で始まり、Asir では通常はプログラム変数を宣言することはしない。Asir の各対象はそれぞれ必ず何らかのを持っているが、プログラム変数にはどんな型を持つ対象でも代入できるという意味で「変数には型が無い」。型を持たない変数を用いることによる豊富な代入操作が可能である。また、函数内に現れる変数は全てデフォルトで局所変数となる。大域変数を利用するには extern の宣言が必要である。

Asir では不定元と変数は明確に区別され、不定元は数学で用いる意味と同じく係数体上超越的な元である。よって不定元に何らかの値を代入するというのは、概念的に不適当であるとともにシステム的にも不正な操作である。しかしながら、変数に対する規約と異なり不定元及び函数名はASCIIの小文字で始まるため、実用上は不定元に対し意図せぬ代入が行われる心配は無用である。

リストと配列

編集
  • リストの生成は "[" と "]" で囲むことで行われる。要素の区切りは "," である。
  • リストは実行中にサイズを変更できるが要素への代入を行うことはできない。
  • LISPに由来する強力なリスト操作
  • 他言語で配列 (array) に相当する型は Asir ではベクトル (vector) と呼ばれる。
  • ベクトルは newvect() を用いて明示的に生成する必要があり、サイズは固定される。要素への代入は自由にできる。
  • 行列・バイト列の扱いはベクトルに準じる。
  • ベクトルとリストは vtol() / newvect() によって相互に変換可能である。

機能拡張

編集
  • モジュール・C言語ソース等による高い機能拡張性

OpenXM

編集
  • OpenXM に基づく通信・分散計算

Asir が得意とする計算

編集

注釈

編集
  1. ^ Asir の発音については諸説あるが、ここでは竹島卓[1]等に倣った。OpenXM コミッターチームは「あしーる」と呼んでいるように思われる。呼称については asirgui.exe のアイコンでもあるマスコットキャラクタのホポ君(野呂がモデル)はアザラシ (a seal; あ・しーる) だからとも言われるが、ホポ君はどう見てもセイウチ
  2. ^ Asir は Risa の逆さ綴りである
  3. ^ 野呂は立教大学へ転出しており、年1回3月に行われていたカンファレンス2015年からは小原功任を中心に金沢大学で開かれている
  4. ^ OpenXM は神戸大学教授である高山信毅、および、野呂正行・小原功任らを中心メンバーとして、様々な数学ソフトウェア間での通信を行うためのプロトコルおよびパッケージを提供するプロジェクトであり、Asir は OpenXM における通信インターフェイスとしての役割も果たす。
  5. ^ cfep 自体は OpenXM のフロントエンドであり、デフォルトの Asir 以外の計算エンジンを利用することも可能である。(動作環境: Mac OS X v10.4以上)[1]

出典

編集

参考文献

編集
  • 斎藤友克, 平野照比古, 竹島卓『日本で生まれた数式処理ソフト—リサアジールガイドブック』SEG出版、1998年。ISBN 487243076X 
  • Asir (PDF) , 野呂正行・横山和弘・竹島卓・Risa/Asir committers, 2010年2月. Asir マニュアル
    • Asir User’s Manual, 野呂正行・横山和弘・竹島卓・Risa/Asir committers, 2010年2月6日.
  • OpenXM/Risa/Asir-Contrib (PDF) (日本語), OpenXM Developing Team, 2002年2月. OpenXM・Risa・Asir-contrib マニュアル
  • Risa/Asir ドリル (PDF) , 高山信毅・野呂正行, 2012年11月7日. - Risa/Asir を用いたプログラミングの入門書

関連項目

編集

外部リンク

編集