データを転がして計算しよう
実物の電卓を模倣した電卓ソフトでは、どれだけがんばっても実物にはかないません。どんなにキレイなグラフィックで着飾っていても、リアルなキータッチ音があっても本物の手触り、質感、クリック感を超えることはできないのですから。
それに実物の電卓で大変だった大量データの計算や、キー入力のミスをパソコン上の電卓ソフトで繰り返しては何の意味もありませんよね。やはり、電卓ソフトならではの特長がなければ意味がありません。実物にはできない特長を持った何かをです。
また、表計算ソフトに対してですが、電卓ソフトはどんなに背伸びしても表計算にはかないません。表計算の多機能、グラフの多さ、マクロなど、もはやパソコンの高級言語レベルです。でも、そんな表計算も起動するのが遅かったり計算手順を毎回打ち込んだりで、結構面倒なものです。ちょっと計算したいだけなのに大袈裟にシートを広げる感じです。
そんな実物の電卓と表計算ソフトの間を埋める電卓ソフトがrpnです。rpnには他の電卓ソフトにはないユニークさがあります。その一番の特長がこのデータを転がして計算するスタイルです。さっそく、例題でその様子を見てみましょう。
表計算ソフトで計算すると面倒…
ここに、商品の価格と受注数量を記したテキストファイル"order.txt"があるとします。大量のデータを用意してもいいのですが、説明のために8行だけのファイルとしますね。
| 1500 5
| 3800 1
| 2400 2
| 2400 1
| 2400 4
| 1200 5
| 2400 3
| 1500 5
+----------
このorder.txtファイルが毎日あなたの手元に届くとします。そこで、このファイルを使って消費税込みの金額を出してみることにします。なお、計算した金額はorders.txtというファイルに追加保存しておきます。
この程度は朝飯前の例題ですね。表計算の場合、大体次のような手順になります。
- 表計算のファイルを開くで、order.txtを読み込む。
- テキストファイルウィザードで各種設定をする。
- 表計算の式でC1のセルに「=A1 * B1」を入力。
- C1のセルを選択して、C1からC8までドラッグしてコピー。
- C9のセルに「=sum(C1..C8)」を入力。
- C10のセルに「=C9*1.05」を入力。
- C10のセルをコピー。
- 表計算のファイルを開くで、orders.txtを読み込む。
- テキストファイルウィザードで各種設定をする。
- ファイルの最後尾に形式を選択して、値をコピー。
- order.txtとorders.txtを保存終了。
こんな感じですね。作業は簡単でも手順を示すと結構な量になります。表計算のソフトは何種類かあるのでしょうが、どれも大体同じような操作手順になるでしょうから、これ以上簡略化するのは難しいでしょう。
rpnで計算すると速攻解決!
では、これをrpnで計算するとどうなるでしょうか。実物の電卓より強力に計算できて、表計算よりも素早く手軽に計算できる…。そんな方法があるのでしょうか。そこで、rpnが提案する計算スタイルが次になります。
>rpn * <order.txt | rpn -c sum | rpn 1.05 * >>orders.txt
なんと、これだけ。一行で計算しています。たったこれだけでも、order.txtから価格と数量を掛けて、合計を出して、消費税込みで金額を出し、最後にorders.txtに追加保存しています。
これはDOSのリダイレクトやパイプの仕組みを利用して、rpnが答えを順番にリレーして最終的な答えを出しているからできるワザなのです。このあたりの説明はdos入門のリダイレクトやパイプに詳しくありますので、興味のある人は後からじっくり読んでみてください。今の時点では、”そういう使いかたができるんだ”ということで留めておいて大丈夫です。
でも、何をしているのか分からないと不満が残りますよね。そこで、①から④の番号を振って、それぞれ何をしているのかちょっと謎解きをしてみます。
+--------------+ +---+ +---+
| | | | | |
| v | v | v
>rpn * <order.txt | rpn -c sum | rpn 1.05 * >>orders.txt
① ② ③ ④
①orderx.txtの価格と数量を掛けています。その答えをデータとして、次に渡します。
②次のrpnは渡されたデータを合計して、また次に渡します。
③最後のrpnは渡されたデータに消費税分を掛けて、また次に渡します。
④このデータを答えとして、orders.txtに追加記録します。
この一連の計算で、データがrpnの間を転がっていくイメージがつかめるでしょうか。具体的に計算途中のデータも見えるようにして図解すると以下のような感じです。
3800
価格と数量を 4800 合計して… 消費税を
掛けて… 2400 掛けて…
+----------> 9600 ---+
| 6000 | +-> 48800 --+ +-> 51240
| 7200 | | | |
| 7500 v | v |
rpn * <order.txt rpn -c sum rpn 1.05 *
イメージできましたか。データを水に例えると、何段かの滝があって一つ一つ滝を落ちていく感じですね。それぞれのrpnがデータを転がしていくことで計算をこなしていく感じです。
とにかく、order.txtが届けば、毎日以下の一行を実行するだけでいいのです。起動の面倒さも手直しも計算間違いも一切ありませんから、快適ですね。
それに電卓と違って、どれだけorder.txtが大量でも難なく計算しますし、表計算のようにデータ量の増減にともなって、毎回手作業でセルの数式を変更することもありません。
rpnはバッチファイルという方法で手作業を極力なくすこともできます。そうすることで、数文字のキー入力で実行でき、処理時間も数秒に短縮できます。
逆ポーランドのまとめ
今回はちょっと難しかったかもしれません。しかし、rpnのほとんどの利用方法は前回の「プログラムで計算しよう」までで十分です。本ウェブサイトの記事も読むだけなら問題なく理解できるはずです。
これまでの記事をまとめてあります。逆ポーランド記法の基本とrpnの実行方法、およびrpn導入に関する話を掲載してあります。
さぁ、逆ポーランドを楽しもう!
逆ポーランド電卓のrpnは、小さい頃から慣れ親しんだ計算の世界とは違います。
たとえ、計算方法がちょっと変わっていても慣れてしまえば、普通の電卓よりも遥かに使いやすく、知らないうちに計算にも強くなれるのです。
是非、この機会に逆ポーランド電卓rpnの世界を楽しみましょう。
わかりやすいウェブサイトの閲覧ガイドがあります。初めは簡単なコーナーから読み進めて、徐々に気に入ったコーナーを閲覧していくとよいでしょう。
右サイドバーに姉妹サイト「電卓ソフトで学ぶオンライン講座」もあります(別ウィンドウで開きます)。すぐに役立つオンライン講座の紹介です。お金に関する講座、データ分析やビジネス統計、株式投資、その他各種オンライン講座の概要を分かりやすく解説しています。