もう一つのデータ処理パッケージ(rptパッケージ)2018版について

2018/12/15

 rptパッケージは、MS-Windowsで動作する ruby, 統計R, LaTeX などの
コマンド群をUSBメモリーなどに入れておいて、常用のパソコン以外でも
簡単に使い始められるよう取りまとめたものです。

 5月にアップロードしたものを少し更新し、
64bitコマンド(ruby, python, pandoc)のzip圧縮ファイルもアップしました。

 また、ruby on Rails が使えるようになっています。


《このページの目次》


    

1. ダウンロードファイル

 rpt2018版を使えるようにするには、下のファイルをダウンロード&解凍します。

    

◇ zipファイルの解凍場所

 上記のzip圧縮ファイルは、ハードディスク、USBメモリー、あるいはSDカードに保存します。

 どのドライブでもいいのですが、できればルートディレクトリ直下に置いて、その上で解凍します。

 解凍すると rpt というフォルダができて、その下にいろいろなサブフォルダができます。

 rpt(フォルダ)は、必ずルートディレクトリ直下に置くようにします。

 つまり C:\rpt とか F:\rpt などになるようにします。

 もし解凍した場所がルートディレクトリ直下でない時は、ルートディレクトリ直下に rpt を移動して下さい。

 USBメモリーやSDカードに置くと、常用パソコン以外のパソコンにも装着して簡単に使い始めることができます。

    

◇ MD5, SHA-256のコード

 前述のzip圧縮ファイルの MD5 および SHA-256 のコードを掲載しておきます。

 間違いなく原本ファイルであるかどうかをチェックしたいときに参照して下さい。

    

[補足] Windowsでの MD5, SHA-256 の確認方法

 ’CertUtil’ というコマンドを使うと MD5, SHA-256 などを確認できます。

 rpt_main.zip がカレントディレクトリにある状態で次ぎの2行を実行します。

CertUtil -hashfile rpt_main.zip MD5 >output.txt
CertUtil -hashfile rpt_main.zip SHA256 >>output.txt

 書き出された output.txt に MD5, SHA-256 のコードが書かれているはずです。

    

◇ サンプルスクリプト

 rptパッケージの環境下で使えるサンプルスクリプト群をダウンロードできます。

 rpt_sample02.zip の中身を少し修正。rmarkdownの原稿で
pandoc_args: [……] の書き方を変更。pandocのバージョンアップに対応。


2. 組み入れているソフトウェア

 組み入れているのは必ずしも最新バージョンではありませんが、
複数のパソコンで動作させてみてトラブルなく動作するバージョンを選択しました。

a. プログラム言語 ruby ver 2.3.3

 今回、Railsを組み込みました。

 2018年12月現在、ruby 2.5.1 がWindows上で使えるようになっていますが、
Railsを動かすのにいくつか調整が必要になるようです。

 その点、ruby 2.3.3 だと調整しなくていいので、2.3.3 のままにしました。

 なお、各種ライブライは、2018年12月現在で最新のものです。

*参考サイト: RubyInstaller for Windows Downloads

    

b. プログラム言語 python ver 2.7.13

 pythonは、WinPythonの主要部分(python本体部分)を組み入れました。

 既に python 3.6 や 3.7 が公開されていますが、
Windows上で python3 を使う場合、パソコンによっては
pythonが想定するdllファイルがなくて動作させることができない
という経験を何度かしています。

 python2 についてはそうした経験はありません。

 ということで、ver 2.7.13 を組み入れました。

 とはいえ、python3 を使いたいこともあるので
python3用のzip圧縮ファイルを別途アップロードしました(前述のとおり)。

*参考サイト: WinPython download | SourceForge.net

    

c. 統計解析ソフトR ver 3.5.1

 パッケージとして、レポート生成のための knitr, rmarkdown は組み込み済みです。

 また、統計Rからpythonを利用するための reticulate のほか、
大規模データの高速処理 ーdata.table、dplyrーで取り上げられている
data.table, dplyr もインストール済みです。

*参考サイト: The Comprehensive R Archive Network

    

d. w32tex

 w32texは、Windows上で動作する LaTeX です。

 2018/12/09 に関連ファイルをダウンロードして展開しました。

 展開したファイル群は、rpt2017版と同じです。

*参考サイト: rptパッケージで導入したw32texについて

 なお、Cドライブ以外にrptパッケージを入れた場合、
lualatexコマンドでpdfを生成しようとすると、
「フォントをロードできない」という趣旨のエラーが出て、
pdfを生成できないかもしれません。
(サンプルスクリプトにも lualatex を使うものがあります。)

 そのときは、\rpt\w32tex\xtra\luaotfload_reset.bat を実行して下さい。

 luatex関係のキャッシュを一度クリアして、
フォントに関するキャッシュを再構築します。

    

e. ドキュメント変換ツール pandoc ver 2.5

 markdown記法で書かれたドキュメントをhtmlなどの様々なドキュメントに変換するコマンド。

 markdownのファイルをPowerPointの pptxファイルに変換する機能が新たに追加されています。

*参考サイト:

    

f. テキストファイルへの変換ツール xdoc2txt ver 2.17

 xdoc2txtは、Excel, Word, pdf, 一太郎などのファイルを
テキストファイルに変換するものです。

 というより、テキストを抽出するという方が正確でしょうか。

 ver 2.17 の 32bit版を組み入れてあります。

*参考サイト: xdoc2txt


3. 「送る」メニューに登録される項目

 rpt_main.zip を解凍すると、\rpt\bat の下に
rpt_set.bat というバッチコマンドがあります。

(rpt_64.zip も解凍した場合は \rpt\bat64 の下に同じバッチコマンドがある。)

 それを実行すると「送る」メニューに次の三つの項目が登録されます。
(rpt_unset.bat を実行すれば消去されます。)

 最初の二つは従来版と同じですが、三つ目が違います。

 以前は「r rubyの実行」でしたが、pythonも組み入れたので
「rpt32 スクリプト実行」という項目にしました。

 以下、その詳細を述べます。

    

(1) 「rpt32 スクリプト実行」で実行できるスクリプト類

 従来どおり rubyスクリプトを実行できます。

 WindowsのExplorer(マイコンピュータ)で test.rb に焦点を当てた上で
「送る」メニューの「rpt32 スクリプト実行」を選択すると、
ruby.exe によって test.rb が実行されます。

 一方、test.py に焦点を当てて同様の操作をすれば
python.exe によって test.py が実行されます。

 「rpt32 スクリプト実行」は、受け取ったファイルの拡張子に応じて
コマンドを起動させます。

 拡張子と起動コマンドの対応は次のとおり。

 拡張子は、大文字でも小文字でもどちらでもかまいません。

 また、拡張子が .txt であっても、
test.rb.txt とか test.py.txt というファイル名の場合は
それぞれ ruby.exe, python.exe によって実行されます。

 test.R.txt も Rcmd.exe によって実行されます。

 ただし、test.bat.txt, test.cmd.txt は実行されず
エラーになるのでご注意ください。


(2) 標準出力と標準エラー出力の扱い

 従来と同じように、標準出力は X_OUT.TXT に書き出され、
標準エラー出力は X_ERROR.TXT に書き出されます。
(なお、スクリプト実行後、これらのファイルサイズが0なら消去されます。)

 ruby, python の標準出力&標準エラー出力のほか、
test.bat, test.cmd の場合も同様の書き出しが行われます。

 ただし、統計Rの test.R にはこの仕様は適用されません。

 test.R を実行したときは、そのログが X_LOG.TXT に書き出されます。

    

 X_OUT.TXT, X_ERROR.TXT の書き出しを抑制したいときは
スクリプトの1行目か2行目にコメントとして
(no redirect) という13文字を書いておいて下さい。

 半角スペースをいれて 13文字です。

 途中でユーザーの入力を求めるようなスクリプトやバッチは、
(no redirect) を書き込んでおくのがいいとおもいます。


(3) 環境変数との関係

 「送る」メニューの「rpt32 スクリプト実行」を呼び出した場合、
環境変数 PATH が変更され、また、いくつかの環境変数が設定されます。

 これは一時的な変更・設定で、
スクリプトの実行が終了すると環境変数は元の状態に戻ります。

 PATH についていうと、ruby, python, 統計R, w32tex のコマンドに
パスが通った状態でスクリプトが実行されます。

 なので、test.bat の中で ruby や python のフルパスを書かなくても、
単に ruby, python と書くだけで
「rpt32 スクリプト実行」経由であればちゃんと実行されます。

 たとえば、pythonの pandas というライブラリをインストールするための
test.bat の中身は次のように書けます。

@echo off
python -m pip install pandas

 ただ、もし rptパッケージ以外の python が既にインストールされていて、
それにパスが通してある場合は、
おそらく rptパッケージの python が実行されるとはおもいますが、
ほんとにそうなるかは不確実です。

 確実に rptパッケージの python を起動させたいときは下のようにします。

@echo off
%PYTHON_PATH% -m pip install pandas

 環境変数 PYTHON_PATH には、C:\rpt\python\python.exe のような
python のフルパスがセットされています。

    

 「rpt32 スクリプト実行」では次の環境変数がセットされます。
(rptパッケージがCドライブに入っている場合を想定)

 その他、R_HOME, R_LIBS, R_USER がセットされます。


(4) 複数のファイルを引き渡したときの挙動

 Explorer(マイコンピュータ)で複数のファイルを選択した上で
「送る」メニューの「rpt32 スクリプト実行」を呼び出した場合

 たとえば test.rb, data.txt の二つを選択したとすると

ruby.exe test.rb data.txt ↓

 上記のようにコマンドが実行されます。

 test.rb, data01.txt, data02.txt の三つを選択したときは

ruby.exe test.rb data01.txt data02.txt ↓
ruby.exe test.rb data02.txt data01.txt ↓

 上の2行のうち、どちらになるかは不定です。

 Explorerで複数のファイルを選択した場合、
どの順番で「送る」メニューに送られるかは分かりません。

 「rpt32 スクリプト実行」は、送られてきたファイルの中から
test.rb とか test.py のようなスクリプトと思われるファイルを最初に持ってきます。

 ですが、それ以外のファイルについて順番を調整したりはしません。

 もし、スクリプトと見られるファイルが複数あった場合は
そのうちのどれが実行されるかは不定です。

 なので、そうした複数選択はしないのが無難です。

 なお、test.R のような統計Rのスクリプトと合わせてファイルを指定しても
合わせて指定したファイルは無視されます。


4. DOS窓のオープンおよびrpt32.cfgによるフォルダ指定

 rubyやpythonをコマンドラインで起動させたいときは
Windowsのデスクトップに設けられている
「rpt32 commandline」をクリックします。

 そうすると DOS窓が開きます。

 rpt_main.zipに含まれている rpt_set.bat を実行すると、
この「rpt32 commandline」がデスクトップに設けられます。

 DOS窓が開いた時点で、「送る」メニューの関連で述べた
環境変数のあれこれが設定された状態になっています。

 ruby, python, 統計R, w32tex のコマンドにパスが通っています。

    

(1) 処理の内実(rpt32.rbの役割)

 「rpt32 commandline」をクリックすると、次のように ruby が起動されます。

C:\rpt\ruby\bin\ruby.exe C:\rpt\bat\rpt32.rb ↓

 この rpt32.rb の中で、cmd.exe が子プロセスとして実行されます。

 それが DOS窓のオープンとなります。

 また、rpt32.rbは、cmd.exeを子プロセスとして実行する前に
環境変数の設定を行います。

 実は、前述の「送る」メニューの「rpt32 スクリプト実行」の場合も
この rpt32.rb が実行され、引き渡された引数を処理します。

 拡張子に応じたコマンドが子プロセスとして実行され、
標準出力・標準エラー出力の調整が行われます。

    

(2) rpt32.cfgにおけるフォルダの指定

 「rpt32 commandline」をクリックして DOS窓を開いたとき、
カレントディレクトリはユーザーのホームディレクトリになります。

 別のフォルダをカレントディレクトリにしたい場合は、
rpt32.cfg というファイルにしたのような1行を書き加えます。
(rpt32.cfgは、rpt32.rb と同じフォルダに置きます。)

home_dir: D:\work

 そうすると、DOS窓が開いたときに
D:\work がカレントディレクトリになります。

 もし D:\work というフォルダが存在しなければ
ユーザーのホームディレクトリがカレントディレクトリになります。

    

 rpt32.cfg では、ruby, python の所在ディレクトリを指定することもできます。

 たとえば rpt32.cfg に下の2行を書き入れたとします。

ruby_dir: ruby25
python_dir: python3

 この場合、rptというフォルダの直下にある ruby25, python3 というフォルダに
それぞれ ruby, python がインストールされているとみなされます。

 つまり、\rpt\ruby25\bin\ruby.exe および
\rpt\python3\python.exe が起動コマンドとして採用されます。

 ruby25 というフォルダの下に ruby ver 2.5.1 を入れておけば、
それが実行されるようになります。

 python3 というフォルダの下に python ver 3.6.4 を入れておけば
それが実行されます。

 rpt_python3.zip を解凍すれば python3 というフォルダができます。

 なお、ruby, python のフォルダを指定した場合、
「rpt32 スクリプト実行」と「rpt32 commandline」をクリックしたときの
環境変数の値がそれに応じて変わります。

RUBY_PATH → C:\rpt\ruby25\bin\ruby.exe
PYTHON_PATH → C:\rpt\python3\python.exe

 もちろん PATH の値も ruby25, python3 を示唆するものに変わります。

    

*要注意: rpt32.cfg を書き換えて ruby のフォルダを変更したときは
rpt_set.bat を実行し直すのが無難です。

 ruby.exe が存在するのと同じフォルダに
gem.bat などいくつかバッチコマンドがあります。

 それらバッチコマンドの中には C:\ とか D:\ のように
固定ドライブ名が書かれているものがあります。

 rpt_set.bat は、そのドライブ名を適切なものい書き換えます。


5. 補足事項

 \rpt\bat の下にある rpt32.cfg では、環境変数設定の記述が可能です。
(64bitコマンドを使うときは \rpt\bat64 の下の rpt64.cfg)

 また、「rpt32 スクリプト実行」は、実は test.rmd, test.kmd
といった拡張子のファイルも処理対象とします。

 そうした点について補足を記します。

    

(1) rpt32.cfgにおける環境変数の設定

 rpt32.cfg の最後の方に

SET RUBYOPT=-Eutf-8

 上のように書いておくと、rubyの default_external が utf-8 になります。

 ruby on Rails を動作させる場合、日本語のようなマルチバイト文字を使うなら
この指定が必要です。

 この環境変数の設定は、rptの子プロセスにおいてだけ有効です。

 つまり、デスクトップの「rpt32 commandline」をクリックしてDOS窓を開いたとき、
あるいは「送る」メニューの「rpt32 スクリプト実行」を選択したときです。

 記述の仕方は、batファイルで環境変数を設定する場合と同じです。

 たとえば、javaの開発環境jdkが入ったjavaというフォルダが
rptと同じドライブのルートディレクトリ直下にある場合、
次の2行を書き入れると javac を使えるようになります。

SET PATH=%PATH%;%RPTDRIVE%\Java\jdk1.8.0_191\bin
SET JAVA_HOME=%RPTDRIVE%\java

 jdk1.8.0_191 は jdk のバージョンによって異なります。

    

(2) rmdファイル, kmdファイルの処理

 test.rmd のような拡張子が .rmd のファイルを
「rpt32 スクリプト実行」に引き渡すと、
それを処理するための統計Rのスクリプトが自動生成されて実行されます。

 拡張子が .rmd のファイルは、
統計Rと pandoc を組み合わせて
レポートを生成するための原稿ファイルです。

 rpt_sample02.zip に rmdファイルのいくつかが含まれています。

    

 一方、test.kmd のような拡張子が .kmd のファイルを
「rpt32 スクリプト実行」に引き渡すと、
それを処理するための統計Rのスクリプトと rubyスクリプトが
自動生成されて実行されます。

 拡張子が .kmd のファイルは、
統計Rと rubyのkramdownを組み合わせて
レポートを生成するための原稿ファイルです。

 同じく rpt_sample02.zip に kmdファイルのいくつかが含まれています。

 rmdファイル, kmdファイルに関する説明の詳細は下記を参照して下さい。

rptパッケージとrmarkdown

    

(3) 拙作 exlap.rb などの修正

 私が自作した rubyスクリプトの exlap.rb などを
rptパッケージに組み入れてあります。

 そのいくつかを少しだけ修正しました。

 exlap.rb は、Excelを操作するためのライブラリですが、
ワークブック内に新しいワークシートを設けた場合、
その新シートに独自のメソッドが付与されないというバグがありました。

 そのため、rpt_sample.zip に含まれているサンプルの
basic01.rb.txt がちゃんと動作しませんでした。

 そのバグを修正しました。

    

 rrxwin.rb は、rubyから統計Rを操作するためのライブラリですが、
アスキー文字罫線の表を生成するためのメソッド(text_table)が
正常に動作するよう改めました。

 rubyのライブラリ terminal-table の仕様変更に対応させたものです。

 rrxeuc.rb, rrxutf.rb (文字コードが違うだけで基本的に rrxwin.rb と同じ)も
同じように修正しました。

 また、MS-Wordを操作するための wrdap.rb にも
text_table メソッドが含まれているので、そちらも修正しました。

    

 私が自作した ruby用ライブラリ一式が
ruby_libs.zip に入っています。

 これを解凍すると setup.rb, unset.rb が出てきます。

 setup.rb を実行すればライブラリ一式がインストールされ、
unset.rb を実行すればライブラリ一式が消去されます。

 rpt_main.zip には既に一式が含まれていますが、
別のバージョンの ruby を導入したようなときに利用して下さい。

    

(4) 通知音について

 rpt2017版までは、「送る」メニューの「スクリプト実行」が終了する度に
通知音をならすようにしていました。

 ただ、Windows10 ではその音がちょっと煩わしい感じなので、
ならさないようにしました。

 とはいえ、次のようにすれば音がなるようになります。

 rpt32.rb および d2txt_x.bat の中に

#require "win32/sound"

 上の1行があります。

 この行頭のシャープ記号を削除すると、通知音がなるようになります。

    

(5) pythonライブラリの置き場所について

 私が自作した pythonライブラリ(pdex.py, pyrcmd.py, prast.py)は、
\rpt\with\python というフォルダに置いてあります。

 このフォルダに置いてある pythonライブラリは、
どのpythonスクリプトからでもimportできます。

 \rpt\python\Lib\site-packages というフォルダの中に
RptWith.pth というファイルを置いてあります。

 このファイルの中身は次の1行です。

\rpt\with\python

 この RptWith.pth というファイルの示唆によって
\rpt\with\python というフォルダにある pythonライブラリが
どのpythonスクリプトからでもimportできるようになっています。


 rptパッケージ2018版については以上のとおりです。

 パッケージに含まれているソフトウェアはいずれもフリーウェアですが、
そのライセンスはソフトウェアによって異なります。

 各々のソフトウェアに関するWebを確認してください。