matlabと同じように、R
スクリプトをスタンドアロンファイルにコンパイルする簡単な方法はありますか?.exe
6 に答える
あなたのコメントに応えて:
実際には配布したいのですが、スクリプトとアルゴリズムを秘密にしておきます。それを暗号化する方法や、この目的を達成するための他の方法はありますか?
を使用して関数を保存することで、これを(一種の)行うことができますsave()
。たとえば、f()
秘密にしておきたい関数は次のとおりです。
f <- function(x, y) {
return(x + y)
}
どこにでも保存してください:
save(f, file = 'C:\\Users\\Joyce\\Documents\\R\\Secret.rda')
そして、関数を使用したいとき:
load("C:\\Users\\Joyce\\Documents\\R\\Secret.rda")
すべての関数を別々のファイルに保存し、それらをフォルダーに入れ、1 つの単純な古い .R スクリプトでそれらをすべてロードして実行します。全体を圧縮して、誰にでも配布します。たぶん、それをパッケージにコンパイルすることさえできます。その場合、実質的にすべてが読み取り専用になります。
ただし、このソリューションはそれほど優れていません。関数の名前を入力することで R で関数を表示できるので、その意味で非表示になることはありません。しかし、.rda ファイルを開くと、その内容はすべて文字化けしています。それはすべて、コードの受信者が R をどれだけ経験しているかに大きく依存します。
暗号化されたコードを持つ形式の 1 つはpetals
、TeachingDemos パッケージの関数に実装されています。
隠しコードを見つけるには中級レベルのプログラミング スキルが必要ですが、意図的な努力が必要であり、ユーザーはコードを偶然見たと主張することはできません。次に、覗き見禁止契約を強制するために、何らかのタイプのライセンス契約が必要になります。
さて、デプロイメントマシンにRをインストールする必要があります。実行可能ファイルを作成することに関しては、それが可能かどうかはわかりません。ただし、Rスクリプトを呼び出す別のプログラムを作成することはできます。Rはインタプリタ言語です。それは不可能。
私はこの問題についていくつかの調査を行い、ここ数年でいくつかの解決策が実装されました。
- オプションとして、ポータブル R と共にアプリを Electron のようなコンテナー アプリケーションにラップすることができます。electron-quick-startプロジェクトはこれを試みています。
- RInnoパッケージは、アプリと R ポータブルをインストーラー アプリにバンドルする機能を提供します。すべてのユーザーが自分のシステムでインストーラーを 1 回実行すると、アプリ、パッケージ、およびコードがインストールされます。しかし、エンドユーザーは他のアプリとの違いに気付かないかもしれません。スタート メニューにリンクが表示され、それだけです。私はそれを成功させました。しかし、そのままでは機能しませんでした。いくつかの場所で出力を手動で調整する必要がありました。
- 2 番目のコンテナー ソリューションは、docker で動作します。それがShinyProxy の機能です。このブログも参照してください。
- パッケージshinyShortcut(引用)は、「ユーザーのデフォルトブラウザで光沢のあるアプリを直接実行する実行可能ファイルを生成します」.
注意すべき重要事項: 私はそれらのほとんどをテストしていません。ソリューションを見直すと、手動の手順が常に含まれるため、これらのソリューションではリリースが多少複雑になる可能性があると感じることがよくあります。