この文書は、小型プログラマブル関数電卓ソフト「 RINPn (りんぷん) 」の公式な取扱説明書です。
RINPn(りんぷん)は、単純で扱いやすい画面デザインの関数電卓ソフトです。以下が実際の画面です:
どこにでもありふれた、普通の関数電卓といった印象ですよね。なので、初見でも簡単に扱えます。
でも、単純そうな画面デザインの割に、中身は意外とパワフルなんです。 まず、かっこ ( ) や数学関数などを用いた計算式を、そのままの形で書いて計算できます。 加えて、スクリプト(簡易プログラム)機能によって、電卓の計算式で使える関数を自作したり、複雑な計算を自動化して処理する事もできます。 処理速度面では、最大で数億(数百メガ)~数十億(数ギガ)回/秒クラスの数値演算が可能※で、 一般的なスクリプト言語環境と比べてもそこそこ速い部類のスペックがあります。 なので、それなりの計算量の数値計算プログラミングにも耐えられます。 さらに、計算式やスクリプトから、Java® 言語で記述した処理を呼ぶ事までできます。
また、RINPn のキーパネル部は、邪魔な時は折り畳めます:
この通り、とても小さくなりました。ここまで小さいと、正直とても高機能には見えないですよね! でも、既に説明した通り、中身はパワフルなんです。
RINPn は、クルマで例えるなら、小型軽量で取り回しがいいのにパワフルでキビキビ走る、ライトウェイト・スポーツカーのようなものを目指した電卓ソフトです。
RINPn は、必要に応じて、ユーザーがソースコード(ソフトの「元」のようなものです)を入手して改造・改良・流用する事なども可能な、 オープンソースのフリーソフトです。実際に、ソースコードリポジトリ https://github.com/RINEARN/rinpn からソースコードを取得/参照できます。
もちろん、そんな面倒な事は考えずに、入手したまま普通のソフトとして使う事もできますし、それも開発側としては大歓迎です !
RINPn のライセンスは、いくつかの有名なライセンスの一つである「 MITライセンス 」を採用しています。 これにより、RINPn は商用・非商用問わず無償で利用できる上に、ソースコード流用時などの諸条件も緩いものとなっています。 詳細については、必要に応じて「 MITライセンス 」などでWeb検索すると、 日本語で解説したページがたくさん出てくると思います。
なお、ライセンス文書そのものは、RINPn の通常版では「 License 」フォルダ内に「 MIT_License.txt 」として同梱されています(内容は英語です)。 ソースコードリポジトリでは直下に「 LICENSE 」というファイル名で同梱されています。
RINPn はどなたでも無償で利用できるソフトウェアですが、動作は完全に無保証です。
RINPn の開発元は、RINPn の利用の結果(不具合や損害などを含む)に関して、 一切の責任および補償等を負担いたしかねます。何卒ご了承ください。
ご使用の前に、上記の点およびMITライセンスの条件に、あらかじめご同意ください。
このガイドは RINPn の配布パッケージ内にも同梱されているため、この文をお読みの方は既に RINPn を入手済みかもしれません。 一方、RINPn を未入手の場合や、入手したものが少し古い場合などは、公式サイトからいつでも最新版を入手できます:
上記ページのすぐ先頭付近にある、「 いますぐダウンロード 」と書かれたボタンのリンク先ページから、 RINPn の配布パッケージ「 rinpn_?_?_?_ja.zip (種類はZIP形式圧縮ファイル、?_?_? の箇所はバージョンの数字) 」をダウンロードできます。
上でも触れた通り、RINPn の配布パッケージ「 rinpn_?_?_?_ja.zip 」はZIP形式で圧縮されて 1 つのファイルになっているため、 まずは展開しましょう。
Microsoft® Windows® をご使用の方は、 最初にZIPファイルを右クリックして「プロパティ」を選択し、 プロパティ画面の下にあるセキュリティ項目の「許可する」にチェックを入れて「OK」します。 ( これを行わないと、展開の途中や RINPn の起動時に、警告メッセージが表示されて失敗する場合があります。) その後、ZIPファイルを右クリックして、メニューから「 すべて展開 」や「 ここに展開 」や「 解凍 」などの項目を選択すると展開できます。
Linux® などをご使用の方も、大抵の環境では右クリックメニューから展開できます。
Linux® などで、展開後のファイル名が文字化けしてしまう場合は、コマンドラインで下記のように、文字コードを指定して展開してみてください:
展開が完了すると、同じ場所に、同じ名前の「 rinpn_?_?_?_ja 」というフォルダが作成され、 その中に RINPn のプログラム本体やその他色々なファイル(このガイドも)が入っています。 なお、ZIPファイルを展開しないままダブルクリックしても、一応は中を見る事ができますが、 その状態で RINPn を使おうとすると正しく動作しない可能性があるため、 展開して普通のフォルダになった状態でご使用ください。
あとは、展開してできたフォルダを、デスクトップ等のどこか使いやすい場所に置いておくと、そのままインストール不要で使えます。 USB メモリー等に入れて、持ち運んで使う事もできます。
具体的な起動方法や使用方法は、次の ステップ 1 (GUIモード) や ステップ 2 (CUIモード) で詳しく説明します。
RINPn には2つのモードがあり、ここで扱うGUIモードでは、グラフィカルな電卓画面上で計算を行う事ができます。 このGUIモードは、恐らくどなたでも簡単に扱う事ができるはずです。 という事で、まずはGUIモードで起動してみましょう!
起動方法はご使用の環境によって異なりますので、下記の二通りのうち、適した方をお試しください。
ダウンロード・展開したフォルダ内にある、 「 RINPn_?.?.?.bat (種類はバッチファイル、?の箇所はバージョンの数字) 」 をダブルクリックして起動してください。 なお、ステップ 2 で説明するように「 cmd 」フォルダのパスを環境変数 Path に登録しておくと、 コマンドライン端末上で「 rinpn 」と打って起動する事も可能になります。
この場合には、以下のようにコマンドライン端末から入力して起動してください:
なお、ステップ 2 で説明するように「 cmd 」フォルダのパスを環境変数 PATH に登録しておくと、 より単純に「 rinpn 」と打って起動する事も可能になります。
上記コマンドを実行した際に、java コマンドが使えない等のエラーが表示される場合は、別途 Java® 言語の実行環境(JRE)の導入が必要です。 その方法は、下記のようにいくつかあります。
色々なOSで共通して行える方法としては、 OpenJDK という開発環境(実行環境も含まれています)を導入する事が挙げられます。 詳しい導入手順については、「 OpenJDK インストール (ここにOSの名前) 」などでWeb検索してみてください。 実行環境目当てで入れるには少し大げさなのですが、RINPn では Java® 言語で自作した処理を呼ぶ事も可能で、 その際には開発環境も必要になるため、入れておくと後々で便利かもしれません。
なお、一部のLinux®ディストリビューションなどでは、apt コマンドなどで、簡単に実行環境のみを導入できる場合もあります。 詳しい手順は 「 JRE インストール (ここにOSの名前) 」などでWeb検索してみてください。 ただし、apt コマンド等でJREを導入する場合、名前の末尾に -headless が付いたバージョンを選ぶと RINPn が動作しないので、ご注意ください。
上で述べた通りに RINPn を起動すると、以下のような電卓画面が起動します:
電卓画面のキーパネル部は、「▲KEY-PANEL」スイッチをクリックすると収納可能で、もう一度クリックすると再び開けます。 画面の色や透明度、文字の大きさ、その他色々は「 Settings.txt 」内の設定値を変更してカスタマイズできます(普通にテキストエディタで開き、内容を編集して保存してください)。
計算を行うには、「 INPUT 」欄に計算式を入力し、そのままPCのキーボードの Enter キーを押すか、電卓画面の「 = 」ボタンを押してください。 すると、計算された値が「 OUTPUT 」欄に表示されます。 例えば:
この通り、かっこ「 ( ) 」や四則演算の順序(かけ算と割り算は、足し算と引き算よりも先に計算されます)などを踏まえた、正しい計算結果が表示されます。
なお、各種の関数/変数を使った式も計算できます:
RINPn で標準で使える主な関数/変数については、 本文書の「 主な組み込み関数/変数 」のページでリストアップして解説しています。 また、ステップ-4 や ステップ-5 の通り、関数/変数を自作する事もできます。
- 演算精度と丸めについて -
RINPn の内部では、数値は2進数の倍精度浮動小数点数として扱われます。 この事により、表示される計算結果の精度は、多くの場合に有効数字で十数桁程度が目安で、それ以降の桁には各種の誤差が含まれます。 そのため標準では、RINPn は結果を10桁以内に丸めて表示するようになっています(丸め設定は「 Settings.txt 」内で変更できます)。 RINPn をご使用の際は、このような点にご留意ください。 用途や必要な精度によっては、RINPn の使用が適さない場合もあります。
RINPn には、ステップ 1 で扱ったGUIモードの他にも、CUIモードというモードがあります。 CUIモードでは、コマンドライン端末上で、電卓画面を起動せずにその場で計算を行う事ができます。
とりあえず何の追加作業も無しにCUIモードを使用するには、コマンドラインで以下のように、計算式を引数として「 RINPn.jar 」を実行してください:
このように、GUIモードで行ったのと同じ計算を、電卓画面を起動せずに行う事ができました。
ただ、毎回上のように RINPn のフォルダに cd しつつ長いコマンドを打つのは、少し面倒ですね。 そこでOSの環境変数 PATH (または Path) に、RINPn の「 cmd 」フォルダのパスを登録 (すぐ下で説明) すると、 カレントディレクトリがどこであっても「 rinpn 」コマンドで手短に計算できるようになります:
パスの登録方法は、ご使用の環境に応じて異なりますので、下記の二通りのうち、適した方を行ってみてください。 なお、パスの登録作業は、誤って既存の登録内容を消してしまうと、 PCがこれまで通りに使用できなくなるなどの危険がありますので、 慎重に行ってください。 パス登録が初めての方で、熟練者の方に作業のガイドやご助力などを頼める場合には、ご依頼される事をお勧めします。
RINPn のフォルダを、PC内のどこか定位置に配置した上で、以下の手順でパスを登録します:
なお、RINPn のフォルダの配置場所を移動した際には、登録したパスも修正する必要があります。
まず、RINPn のフォルダを、PC内のどこか定位置に配置してください。ここでは例として、以下の場所に配置したものとします:
次に、cd コマンドで上記ディレクトリ内の「 cmd 」ディレクトリに移動して、 その中にある「 rinpn 」というファイル(拡張子無し)に、以下のように実行権限を付加します:
最後に、ユーザーのホームディレクトリにある、「 .bashrc(隠しファイル)」または「 .bash_profile 」もしくは「 .profile 」 (どのファイルが有効かはOSやディストリビューションによって異なります)をテキストエディタで開き、最終行に下記の一行を追記します:
上記はシェルが bash の場合です。Ubuntu® などを標準状態で使用している場合は、シェルが dash なので、右辺をダブルクォーテーションで囲います:
他にも、シェルによって微妙に記法が違います。詳細は各自の環境について検索してください。
以上で完了です。
RINPn では、手続き的な自動計算やアルゴリズム的な計算、またはその他の複雑な処理を行いたい場合のために、 「 Vnano 」 という言語で記述したスクリプト(簡易プログラム)を実行する事もできます。
Vnano は、C言語系の文法を持つ、ソフトウェア内組み込み用のスクリプト言語&エンジンです。 具体的な書き方については、Vnano 公式サイト内の 「 言語としてのVnano 」 のページをご参照ください。 Vnano のスクリプトを作成するには、好きなエディタで拡張子「 .vnano 」で終わる名前のテキストファイルを作成し、その中にコードを書くだけでOKです。 文字コードは標準では UTF-8 で読まれます。
記述例として、RINPn のフォルダ直下に以下のスクリプトファイル「 Example.vnano 」が同梱されています。 このスクリプトは、cos(x) の 0 から 1 までの数値積分値を計算する内容になっています:
上記コード内容の詳しい解説については、こちらをご参照ください: https://www.vcssl.org/ja-jp/code/archive/0001/7800-vnano-integral-output/
GUIモードでスクリプトを実行するには、次の2通りの方法があります:
どちらでも好みの方法で実行してください。
例として、上で見たサンプルスクリプト「 Example.vnano 」を実行してみましょう:
このように、「 OUTPUT 」欄にスクリプトの出力値が表示されます。 この出力値「 0.8414709848 」は、cos(x) の 0 から 1 までの積分の理論値である sin(1) とよく一致しており、 サンプルスクリプトの内容が正しく解釈・実行された事がわかります。
なお、Microsoft® Windows® をご使用の場合は、 Shiftキーを押しながらスクリプトファイルを右クリックすると、メニューからパスをコピーできるので、 RINPn の INPUT 欄にスクリプトのパスを入力する際に便利です。
CUIモードでも、計算式の代わりにスクリプトファイルを指定する事で、そのスクリプトを実行できます。
コマンドライン入力端末のカレントディレクトリ内にあるスクリプトファイルは、 以下のように、rinpn コマンドの引数にファイル名のみを指定して実行可能です:
また、カレントディレクトリを基準とする相対パス でスクリプトファイルを指定する事もできます。 これは、カレントディレクトリ内には無いものの、 近い場所(すぐ上や下の階層など)にあるスクリプトファイルを実行したい場合に便利です:
加えて、以下のように絶対パスでスクリプトファイルを指定する事も可能です:
以上の通り、CUIモードでは3通りの方法でスクリプトファイルの指定が可能です。 場面に応じて、便利に思える指定方法を使い分けてください。
ところで、スクリプトの実行処理が重い場合は、 「 Settings.txt 」内で「 acceleratorOptimizationLevel 」として設定されている最適化レベルの値を上げると、処理が速くなります。
最適化レベルを最低の 0 に設定しても、恐らく一般的な電卓の用途としては十分な性能が得られるため、標準では安定性を優先し、最適化レベルは 0 に設定されています。 ただ、RINPN で数値計算プログラムを頻繁に実行される方には、標準の最適化レベルではややパフォーマンスが不足気味かもしれません。
スクリプトは、もちろん自分で書くこともできますが、VCSSL/Vnano公式サイト内の、下記コードアーカイブでも配信しています:
コード内容の解説記事も掲載していますので、別のスクリプトを書く際の参考や、改造/流用のベースとしても使えます。ぜひご活用ください!
|
ローレンツ方程式を数値的に解くスクリプト |
|
|
|
ローレンツ方程式を4次ルンゲ=クッタ法によって解き、グラフ描画用のデータを出力するスクリプトです。 |
|
積分値のグラフ描画用データを出力するスクリプト |
|
|
|
数値的に積分を行い、結果の関数をグラフに描くためのデータを出力するスクリプトです。 |
|
積分値を求めるスクリプト (数値積分) |
|
|
|
矩形法/台形法/シンプソン法を用いて、積分の値を数値的に求めるスクリプトです。 |
スクリプトは、単体で実行するためだけでなく、 計算式や別スクリプト内で使用するための関数や変数を、定義して提供するためにも役立ちます。 そのような目的のスクリプトの事を、 RINPn および Vnano では「 ライブラリ スクリプト 」と呼びます。
例えば、RINPn の「 lib 」フォルダ内にある「 ExampleLibrary.vnano 」は、 ライブラリスクリプトのサンプルで、標準で読み込まれるようになっています。 その記述内容は以下の通りです:
上記の「 ExampleLibrary.vnano 」内で定義されている変数「 libvar 」や関数「 libfun(x) 」は、 例えば ステップ 1 で扱った、電卓に入力する計算式の中で、 以下の例のように使用できます:
同様に、ステップ 2 でコマンドライン引数に指定している計算式の中や、 ステップ 3 でのスクリプト内でも使用できます。
必要に応じて、別の新しいライブラリ スクリプトのファイルを作成し、その中で変数や関数を定義する事もできます。
新しいライブラリ スクリプト ファイルを作成した際は、 そのファイルを RINPn の「 lib 」フォルダ内(またはその子孫階層のフォルダ内)に置き、 そのファイルパスを、「 lib 」フォルダ直下にあるテキストファイル「 VnanoLibraryList.txt 」内に記載(追記)してください。 そうすると、そのライブラリ スクリプトが読み込まれるようになります。
ライブラリ スクリプトによる方法以外にも、Java®言語を用いて、新しい組み込み関数/変数を実装する事もできます。 RINPn および Vnano では、組み込み関数/変数を提供する事を目的とした、 Java® 言語で記述されたプログラムの事を「 プラグイン 」と呼びます。
プラグインによる関数/変数定義は、 ステップ 4 のようにライブラリ スクリプトで関数や変数を定義する方法と比べて、 Java® 言語の高い機能性を利用できる事が大きなメリットになるかもしれません。
半面、実装したコードをコンパイルする際には、 別途 Java® 言語の開発環境 (JDK) が必要です。 ここでは、ご使用のPCに既に何らかのJDKが導入されていて、javac コマンドが使用可能になっている事を前提として解説します。 JDK の導入方法については、例えば「 OpenJDK インストール (ここにOSの名前) 」などでWeb検索してみてください。
RINPn では、プラグインは「 plugin 」フォルダ内に置きます。 このフォルダ内には、標準で、以下のようなプラグインのサンプル「 ExamplePlugin.java 」が同梱されています:
このプラグインは標準でコンパイルされており、読み込まれるよう設定されています(それぞれの方法はすぐ後で説明します)。
上のプラグインで定義しているフィールド「 pivar 」やメソッド「 pifun(arg) 」は、 例えば ステップ 1 で扱った、電卓に入力する計算式の中で、 以下のように関数/変数として使用できます:
同様に、ステップ 2 でコマンドライン引数に指定している計算式の中や、 ステップ 3 でのスクリプト内でも使用できます。
プラグインのコード内容を編集した場合には、コンパイルする必要があります。 以下のように、普通の Java® 言語のプログラムと同様にコンパイルできます:
なお、「 plugin 」フォルダ内のさらに org/vcssl/connect フォルダ内には、 Vnano のプラグイン開発に有用なインターフェース類 ( XFCI1 や XNCI1 など ) が、 標準で配置されています。 そのため、必要に応じて、それらのインターフェース類をプラグインから import して使用できます (詳細は Vnanoのドキュメント内の「 プラグインの開発 」をご参照ください)。 その場合でも、特に何かを用意したり、コンパイラにオプション等を指定したりする必要はありません。
新しいプラグインを作成した際は、まず、そのファイルを RINPn の「 plugin 」フォルダ内に置いてコンパイルしてください。 子孫階層のフォルダに置きたい場合は、それに整合する階層のパッケージをプラグインのコード先頭で宣言して、 普通のパッケージ所属クラスと同様の方法でコンパイルしてください。
続いて、そのプラグインのクラスファイルのパスを、「 plugin 」フォルダ直下にあるテキストファイル「 VnanoPluginList.txt 」内に記載(追記)してください。 そうすると、そのプラグインが読み込まれるようになります。
「 plugin 」フォルダ内のさらに org/vcssl/nano/plugin フォルダ内には、 基本的な機能群(数学関数やユーティリティ関数など)を提供する「 Vnano 標準プラグイン 」が配置されており、 標準で読み込まれるよう設定されています。
標準プラグインによって提供される機能の一覧や詳細仕様については、 Vnano 公式サイト内の、標準プラグインの仕様書ページ をご参照ください。 なお、RINPn において特によく使いそうな関数や変数については、 本文書の「 主な組み込み関数/変数 」のページでもリストアップし、簡略化した機能説明文を掲載しています。
RINPn が使用している計算&スクリプト処理エンジンである「 Vnanoエンジン 」は、Java® 言語で記述した別のソフトウェア内に組み込んで使う事ができます。 開発元は RINPn と同じで、組み込み方や使い方も意外と簡単なので、ここで実際に試してみましょう!
以下は、Vnanoエンジンを用いて、 RINPn と同じようなエンジン設定で式「 1.2 + 3.4 」の値を計算する単純なサンプルコードです:
上記のコードは、Vnano エンジンのJarファイル「 Vnano.jar (RINPnのフォルダ内に既に存在) 」をクラスパスに指定しつつ、下記のようにコンパイルします:
コンパイルに成功すると、「 EmbedUseExample.class 」が生成されます。 同様に、Vnano.jar をクラスパスに指定しつつ実行します:
実行結果は:
この通り、計算式「 1.2 + 3.4 」の値「 4.6 」を Vnano エンジンで求める事ができました。 式の中でライブラリ/プラグインの関数を呼んだり、式の代わりに Vnano で記述したスクリプトのコードを渡す事もできます。
RINPn 同様に、VnanoエンジンもMITライセンスのオープンソースソフトウェアで、商用・非商用問わず無償で利用できます。
その他、より詳しい情報や、ガイド・仕様書などのドキュメント類などについては、 下記 Vnano エンジンの公式サイトで整備されていますので、ご参照ください。
ここでは、RINPn で標準で利用できる関数および変数の中から、特によく使うものをリストアップして紹介します。
度からラジアンへの変換関数です。
例: rad( 180.0 )
ラジアンから度への変換関数です。
例: deg( 2.0 * PI )
正弦(サイン)関数です。引数 x の単位はラジアンです。
例: sin( PI / 2.0 )
余弦(コサイン)関数です。引数 x の単位はラジアンです。
例: cos( 2.0 * PI )
正接(タンジェント)関数です。引数 x の単位はラジアンです。
例: tan( PI / 4.0 )
正弦関数の逆関数(アークサイン)です。結果の単位はラジアンです。
例: asin( 1.0 )
余弦関数の逆関数(アークコサイン)です。結果の単位はラジアンです。
例: acos( 1.0 )
正接関数の逆関数(アークタンジェント)です。結果の単位はラジアンです。
例: atan( 1.0 )
平方根を求める関数です。
例: sqrt( 4.0 )
自然数 e を底とする対数関数です。
例: ln( 10.0 )
10 を底とする対数関数です。
例: log10( 1000.0 )
x の exponent 乗を求める関数です。
例: pow( 2.0, 3.0 )
自然数 e の exponent 乗を求める関数です。
例: exp( 1.2 )
絶対値関数です。
例: abs( -1.23 )
和を求める関数です。
例: sum( 1.23 , 4.56 , 7.89 )
平均値(算術平均)を求める関数です。
例: mean( 1.23 , 4.56 , 7.89 )
分散( 分母: n )を求める関数です。
例: van( 1.23 , 4.56 , 7.89 )
分散( 分母: n-1 )を求める関数です。
例: van1( 1.23 , 4.56 , 7.89 )
標準偏差( 分母: n )を求める関数です。
例: sdn( 1.23 , 4.56 , 7.89 )
標準偏差( 分母: n-1 )を求める関数です。
例: sdn1( 1.23 , 4.56 , 7.89 )
配列 array における、dim 番目の次元の要素数を返す関数です。
例: length( array, 0 )
スクリプトの計算結果の値を表示するための関数です。 GUIモードでは、値は「 OUTPUT」 テキストフィールドに表示されます(複数回呼ぶと、表示内容は単純に上書きされます)。 CUIモードでは、値は標準出力に 1 行で出力されます。
例: output( 1.23 )
スクリプト内で、長い内容や複数行の内容を表示するために、汎用的に用いる関数です。 任意個数・任意次元・任意型の値を表示可能で、値は 1 個ずつ( 1 要素ずつ)タブ空白区切りで表示されます。 GUIモードでは、値は独立なウィンドウ上に、自動改行なしで追記されていきます。 CUIモードでは、値は標準出力に自動改行なしで追記されていきます。
例: print( 1.2 , 3.4 , 5.6 )
上記の print 関数とほぼ同様ですが、この関数は内容を自動改行付きで表示/出力します。
例: println( 1.2 , 3.4 , 5.6 )
円周率 π の値を保持する変数(定数)です。
値: 3.141592653589793
RINPn および Vnano は、日本の開発スタジオである RINEARN が開発しています(両ソフトウェアの著者は松井文宏です)。 RINEARNでは、データ解析や可視化・計算向けのものをはじめ、各種のソフトウェアを開発しています。 このソフトウェアに関するご質問やご意見・ご感想、その他お気づきの点などがございましたら、どうぞご気軽にお問い合せください。
RINPn ユーザーガイド
文章・イラスト: 松井文宏