rptパッケージは、MS-Windowsで動作する ruby, 統計R, LaTeX などの
コマンド群をUSBメモリーなどに入れておいて、常用のパソコン以外でも
簡単に使い始められるよう取りまとめたものです。
5月にアップロードしたものを少し更新し、
64bitコマンド(ruby, python, pandoc)のzip圧縮ファイルもアップしました。
また、ruby on Rails が使えるようになっています。
rpt2018版を使えるようにするには、下のファイルをダウンロード&解凍します。
上記のzip圧縮ファイルは、ハードディスク、USBメモリー、あるいはSDカードに保存します。
どのドライブでもいいのですが、できればルートディレクトリ直下に置いて、その上で解凍します。
解凍すると rpt というフォルダができて、その下にいろいろなサブフォルダができます。
rpt(フォルダ)は、必ずルートディレクトリ直下に置くようにします。
つまり C:\rpt
とか F:\rpt
などになるようにします。
もし解凍した場所がルートディレクトリ直下でない時は、ルートディレクトリ直下に rpt を移動して下さい。
USBメモリーやSDカードに置くと、常用パソコン以外のパソコンにも装着して簡単に使い始めることができます。
前述の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のバージョンアップに対応。
組み入れているのは必ずしも最新バージョンではありませんが、
複数のパソコンで動作させてみてトラブルなく動作するバージョンを選択しました。
今回、Railsを組み込みました。
2018年12月現在、ruby 2.5.1 がWindows上で使えるようになっていますが、
Railsを動かすのにいくつか調整が必要になるようです。
その点、ruby 2.3.3 だと調整しなくていいので、2.3.3 のままにしました。
なお、各種ライブライは、2018年12月現在で最新のものです。
*参考サイト: RubyInstaller for Windows Downloads
pythonは、WinPythonの主要部分(python本体部分)を組み入れました。
既に python 3.6 や 3.7 が公開されていますが、
Windows上で python3 を使う場合、パソコンによっては
pythonが想定するdllファイルがなくて動作させることができない
という経験を何度かしています。
python2 についてはそうした経験はありません。
ということで、ver 2.7.13 を組み入れました。
とはいえ、python3 を使いたいこともあるので
python3用のzip圧縮ファイルを別途アップロードしました(前述のとおり)。
*参考サイト: WinPython download | SourceForge.net
パッケージとして、レポート生成のための knitr, rmarkdown は組み込み済みです。
また、統計Rからpythonを利用するための reticulate のほか、
大規模データの高速処理 ーdata.table、dplyrーで取り上げられている
data.table, dplyr もインストール済みです。
*参考サイト: The Comprehensive R Archive Network
w32texは、Windows上で動作する LaTeX です。
2018/12/09 に関連ファイルをダウンロードして展開しました。
展開したファイル群は、rpt2017版と同じです。
*参考サイト: rptパッケージで導入したw32texについて
なお、Cドライブ以外にrptパッケージを入れた場合、
lualatexコマンドでpdfを生成しようとすると、
「フォントをロードできない」という趣旨のエラーが出て、
pdfを生成できないかもしれません。
(サンプルスクリプトにも lualatex を使うものがあります。)
そのときは、\rpt\w32tex\xtra\luaotfload_reset.bat を実行して下さい。
luatex関係のキャッシュを一度クリアして、
フォントに関するキャッシュを再構築します。
markdown記法で書かれたドキュメントをhtmlなどの様々なドキュメントに変換するコマンド。
markdownのファイルをPowerPointの pptxファイルに変換する機能が新たに追加されています。
*参考サイト:
xdoc2txtは、Excel, Word, pdf, 一太郎などのファイルを
テキストファイルに変換するものです。
というより、テキストを抽出するという方が正確でしょうか。
ver 2.17 の 32bit版を組み入れてあります。
*参考サイト: xdoc2txt
rpt_main.zip を解凍すると、\rpt\bat
の下に
rpt_set.bat というバッチコマンドがあります。
(rpt_64.zip も解凍した場合は \rpt\bat64
の下に同じバッチコマンドがある。)
それを実行すると「送る」メニューに次の三つの項目が登録されます。
(rpt_unset.bat を実行すれば消去されます。)
最初の二つは従来版と同じですが、三つ目が違います。
以前は「r rubyの実行」でしたが、pythonも組み入れたので
「rpt32 スクリプト実行」という項目にしました。
以下、その詳細を述べます。
従来どおり rubyスクリプトを実行できます。
WindowsのExplorer(マイコンピュータ)で test.rb に焦点を当てた上で
「送る」メニューの「rpt32 スクリプト実行」を選択すると、
ruby.exe によって test.rb が実行されます。
一方、test.py に焦点を当てて同様の操作をすれば
python.exe によって test.py が実行されます。
「rpt32 スクリプト実行」は、受け取ったファイルの拡張子に応じて
コマンドを起動させます。
拡張子と起動コマンドの対応は次のとおり。
ruby.exe test.rb
python.exe test.py
call test.bat
call test.cmd
Rcmd.exe BATCH --no-save -q --internet2 test.R X_LOG.TXT
拡張子は、大文字でも小文字でもどちらでもかまいません。
また、拡張子が .txt
であっても、
test.rb.txt とか test.py.txt というファイル名の場合は
それぞれ ruby.exe, python.exe によって実行されます。
test.R.txt も Rcmd.exe によって実行されます。
ただし、test.bat.txt, test.cmd.txt は実行されず
エラーになるのでご注意ください。
従来と同じように、標準出力は 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)
を書き込んでおくのがいいとおもいます。
「送る」メニューの「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ドライブに入っている場合を想定)
C:
C:\rpt
C:\rpt\ruby\bin\ruby.exe
C:\rpt\python\python.exe
C:\rpt\w32tex\bin\ptex2pdf.exe
C:\rpt\pandoc\pandoc.exe
C:\rpt\R\R-3.5.1\bin\i386\Rcmd.exe
C:\rpt\with
その他、R_HOME, R_LIBS, R_USER がセットされます。
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のスクリプトと合わせてファイルを指定しても
合わせて指定したファイルは無視されます。
rubyやpythonをコマンドラインで起動させたいときは
Windowsのデスクトップに設けられている
「rpt32 commandline」をクリックします。
そうすると DOS窓が開きます。
rpt_main.zipに含まれている rpt_set.bat を実行すると、
この「rpt32 commandline」がデスクトップに設けられます。
DOS窓が開いた時点で、「送る」メニューの関連で述べた
環境変数のあれこれが設定された状態になっています。
ruby, python, 統計R, w32tex のコマンドにパスが通っています。
「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 が実行され、引き渡された引数を処理します。
拡張子に応じたコマンドが子プロセスとして実行され、
標準出力・標準エラー出力の調整が行われます。
「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 は、そのドライブ名を適切なものい書き換えます。
\rpt\bat
の下にある rpt32.cfg では、環境変数設定の記述が可能です。
(64bitコマンドを使うときは \rpt\bat64
の下の rpt64.cfg)
また、「rpt32 スクリプト実行」は、実は test.rmd, test.kmd
といった拡張子のファイルも処理対象とします。
そうした点について補足を記します。
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 のバージョンによって異なります。
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ファイルに関する説明の詳細は下記を参照して下さい。
私が自作した 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 を導入したようなときに利用して下さい。
rpt2017版までは、「送る」メニューの「スクリプト実行」が終了する度に
通知音をならすようにしていました。
ただ、Windows10 ではその音がちょっと煩わしい感じなので、
ならさないようにしました。
とはいえ、次のようにすれば音がなるようになります。
rpt32.rb および d2txt_x.bat の中に
#require "win32/sound"
上の1行があります。
この行頭のシャープ記号を削除すると、通知音がなるようになります。
私が自作した 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を確認してください。