ワークスペースで R コードが実行する場所を制御する

R Tools for Visual Studio (RTVS) のワークスペースを使用すると、R セッションが実行する場所を構成できます。ローカル コンピューターでもリモート コンピューターでも実行できます。 目的は、どちらでも同じようなユーザー エクスペリエンスで作業できるようにして、クラウド ベースのコンピューターが潜在的に備えるさらに強力な機能を活用することです。

[ワークスペース] ウィンドウを開くには、[R Tools] > [ウィンドウ] > [ワークスペース] コマンドを使うか、Ctrl + 9 キーを押します。

R Tools for Visual Studio の [ワークスペース] ウィンドウ (VS2017)

このウィンドウの緑のチェックマークは、RTVS がバインドされているアクティブなワークスペースを示します。 青い矢印を選ぶと、アクティブなワークスペースが設定されます。 各ワークスペースの右側にある設定 (歯車) アイコンを使うと、名前、場所、およびコマンド ライン引数を変更できます。 赤い [X] は、手動で追加したワークスペースを削除します。

このトピックの内容

ワークスペースの保存とリセット

既定では、プロジェクトを閉じて開きなおすときに、RTVS はワークスペースの状態を保存しません。 ただし、ワークスペースのオプションでこの動作を変更できます。

[R Tools] > [セッション] > [リセット] コマンドおよび対話型ウィンドウのツール バーのリセット ボタンを使うと、いつでもワークスペースの状態をリセットできます。 リモート ワークスペースの場合、リセットを行うとリモート サーバーに初めて接続したときに作成されたユーザー プロファイルが削除され、そこに蓄積されていたすべてのファイルが削除されます。

ローカル ワークスペース

ローカル ワークスペースのリストには、コンピューターにインストールされているすべての R インタープリターが表示されます。

RTVS は、Visual Studio の起動時に、HKEY_LOCAL_MACHINE\Software\R-Core\ レジストリ キーを調べて、インストールされているすべてのバージョンの R を自動的に検出します。 このチェックは起動時にのみ行われるため、新しい R インタープリターをインストールした場合は、Visual Studio を再起動する必要があります。

RTVS は、標準ではない方法で (たとえば、インストーラーを実行する代わりに単にファイルをフォルダーにコピーすることで) インストールされた R インタープリターを、検出しない可能性があります。 その場合は、次のようにして手動で新しいローカル R ワークスペースを作成します。

  1. [ワークスペース] ウィンドウで [追加] ボタンを選択します。
  2. 新しいワークスペースの名前を入力します。
  3. R ルート フォルダーへのパス (インタープリターの bin フォルダーを含むパス) と、RTVS がインタープリターを起動するときにインタープリターに渡すオプションのコマンド ライン引数を入力します。
  4. 終わったら [保存] を選択します。

新しいワークスペースの追加

リモート ワークスペース

リモート ワークスペースを使うと、リモート コンピューター上の R セッションに接続できます (この目的にコンピューターを構成する方法については、「Setting up remote workspaces」(リモート ワークスペースの設定) をご覧ください)。

リモート ワークスペースは RTVS によって自動的に検出されないので、前のセクションで説明したように、[ワークスペース] ウィンドウの [追加] ボタンを使用して手動で追加する必要があります。 その場合、ローカル パスではなく、リモート コンピューターの URI を入力します。

重要

リモート ワークスペースは、リモート コンピューターとの通信のプライバシーと整合性を確保するため、"HTTPS プロトコルを使用する必要がある" URI によって識別されます。 RTVS は、HTTPS をサポートしていないリモート コンピューターには接続しません。

注意

リモート ワークスペースは実質的にはプレビュー段階です。 将来のリリースの実装でファイル同期の問題を改善する作業が行われており、よりよいエクスペリエンスにするための方法についてのアイデアやフィードバックを歓迎します。

ワークスペースの切り替え

RTVS は一度に 1 つのワークスペースのみにバインドされ、[ワークスペース] ウィンドウではそのワークスペースの横にそれを示す小さな緑色のチェック マークが表示されます。 既定では、RTVS は前のセッションで開いた最後のローカル ワークスペースにバインドします。

アクティブなワークスペースを変更するには、目的のワークスペースの横にある青い矢印を選択します。 選択すると、セッションの保存を求めるメッセージが表示された後、現在のワークスペースが終了されて、新しいワークスペースに切り替わります。

ヒント

保存メッセージを無効にするには、[R Tools] > [オプション] コマンドを選び、[ワークスペースを切り替える前に確認ダイアログを表示する] オプションを [No] に設定します。 「R Tools for Visual Studio options」(R Tools for Visual Studio のオプション) をご覧ください。

アンインストールされたローカル ワークスペースまたは使用できないリモート ワークスペースに切り替えようとすると、RTVS プロジェクトがどのワークスペースにもバインドされていない状態になる可能性があります。 その結果、対話型ウィンドウでコードを入力したり、それ以外でコードを実行しようとしたりしたときに、次のようなエラーが表示される場合があります。 これを解決するには、[ワークスペース] ウィンドウで別のワークスペースに切り替えます。 使用できるワークスペースがない場合は、R インタープリターをインストールする必要があります。 また、Visual Studio の実行中にインタープリターをインストールした場合は、Visual Studio を再起動してもかまいません。

RTVS にワークスペースがバインドされていない場合のエラー

リモート ワークスペースへの切り替え

リモート ワークスペースに初めて接続するときは、RTVS により資格情報の入力を求められます。入力した資格情報は、後のセッションのために (安全な Windows 資格情報保管ボックスを使って) キャッシュされます。 その後、リモート サーバーとの通信は HTTPS を使って安全に行われます (これは必須です)。

サーバーの構成によっては、接続時に "リモート R Services で提示されるセキュリティ証明書では、ユーザーがコンピューター <名前> に確かに接続していることを証明できません" という証明書の警告が表示される場合があります。

リモート ワークスペース接続時の自己署名証明書の警告

証明書は接続先のコンピューターによって RTVS に提供されるドキュメントであり、そのコンピューターの URI 示すフィールドが含まれています。 証明書の URI とコンピューターへの接続に使用された URI の不一致を RTVS が検出すると警告が表示され、サーバーのセキュリティが侵害されている可能性を示します。

ただし、この警告は、リモート コンピューターで HTTPS を有効にするために、信頼できるプロバイダーからの証明書ではなく、自己署名証明書が使われた場合にも表示されます。 詳しくは、「Setting up remote workspaces」(リモート ワークスペースの設定) をご覧ください。

ローカル コンピューターとリモート コンピューターのディレクトリ

既定では、ローカル ワークスペースで新しい R インタープリターを開始すると、現在の作業ディレクトリは %userprofile%\Documents になります。 この設定は、[R Tools] > [作業ディレクトリ] コマンドを使って、または Visual Studio のソリューション エクスプローラーでプロジェクトを右クリックして [作業ディレクトリをここに設定] のようなコマンドを選ぶことによって、いつでも変更できます。

リモート コンピューターでは、そのサーバーに初めて接続するときに資格情報に基づいて RTVS によりユーザー プロファイルが自動的に作成されるので、作業ディレクトリはそのプロファイルの下の Documents フォルダーになります。 これは、同じ資格情報でそれ以降に行われるすべてのリモート セッションに使われます。

その結果、コードが実行される正確な場所は、ローカル ワークスペースとリモート ワークスペースで異なる場合があります。 その場合、ワークスペース間でのコードの移植性がなくなるため、コードではデータ ファイルなどに絶対パスを使わないようにしてください。 代わりに、相対パスを使うようにします。

リモート ワークスペースでは、作業ディレクトリのすべてのファイルは同じユーザー プロファイルのセッションに対してその場所に維持されることにも注意してください。 前に説明したように、リモート ワークスペースを使っているときは、[R Tools] > [セッション] > [リセット] コマンド (または対話型ウィンドウのリセット ボタン) を使って、これらのファイルを削除できます。 サーバーからユーザー プロファイルが削除されて、再接続すると再び作成されます。

リモート ワークスペースへのプロジェクト ファイルのコピー

Visual Studio で R プロジェクトの作業を行っているときは、リモート ワークスペースを使っている場合であっても、ローカル コンピューターに常に最新のプロジェクト ファイルが存在します。 つまり、Visual Studio でプロジェクトを開くと (通常は、そのプロジェクトを含むソリューションを開くこと)、RTVS はプロジェクトのコンテンツがローカル コンピューターに完全に存在するものと想定します。 リモート ワークスペースは、実際には、プロジェクトのファイルおよびコードからの出力の一時的なホストにすぎません。 つまり、たとえば、対話型ウィンドウで source を使ってファイルを読み込むとき、そのファイルは、リモート コンピューターのユーザー指定のパス、またはリモート R インタープリターの現在の作業ディレクトリ (setwd() 関数で設定) に、既に存在している必要があります。

ファイルは、次のようにリモート サーバーにコピーされます。

  • 対話型ウィンドウを使ってリモートでファイルを作業するには、最初に、ソリューション エクスプローラーでそれらのファイル (またはプロジェクト) を右クリックして [選択したファイルのソース化] を選択することで、手動でコピーする必要があります。 個々のファイルは、サーバー上の作業ディレクトリにコピーされます。プロジェクトをコピーすると、RTVS によってプロジェクトのフォルダーが作成されます。

  • また、ソリューション エクスプローラーでファイルを選択して [選択したファイルのソース化] を選ぶことにより、ファイルをコピーすることもできます。 これにより、ファイルは対話型ウィンドウに読み込まれて、そこで実行されます。 セッションがリモート コンピューターに接続されている場合、ファイルは最初にコピーされます。

  • RTVS がリモート ワークスペースにバインドされている場合、F5 キーを押すか、[デバッグ] > [デバッグ開始] を選ぶか、他の方法でコードの実行を開始すると、RTVS は既定でリモート ワークスペースにプロジェクトのファイルを自動的にコピーします (この制御方法については後述を参照)。

  • サーバーに既に存在するファイルはすべて上書きされます。

注意

RTVS はすべての R 関数呼び出しを確実にインターセプトできないため、対話型ウィンドウ内からの source()runApp() (Shiny アプリケーションの場合) などの関数の呼び出しでは、リモート ワークスペースへのファイルのコピーは "行われません"。

プロジェクト実行時に RTVS がファイルをコピーするかどうか、およびコピーされるファイルの厳密な指定は、プロジェクトのプロパティによって制御されます。 このページを開くには、[プロジェクト] > [<名前> のプロパティ...] メニュー コマンドを選ぶか、またはソリューション エクスプローラーでプロジェクトを右クリックして [プロパティ...] を選びます。

ファイル転送の設定があるプロジェクトのプロパティの [実行] タブ

ここで、[Transfer files on run](実行時にファイルを転送する) は、RTVS がプロジェクト ファイルを自動的にコピーするかどうかを決定します。 [Files to transfer](転送するファイル) の値は、転送されるファイルを正確に抽出します。 既定では、.R.Rmd.sql.md、および .cpp ファイルのみがコピーされます。 これは、誤って実行のたびに大きなデータ ファイルがサーバーにコピーされるのを防ぐために行われます。

リモート ワークスペースからのファイルのコピー

R スクリプトがサーバーでファイルを生成する場合、rtvs::fetch_file 関数を使ってそれらのファイルをクライアントにコピーして戻すことができます。 この関数の引数は、ローカル コンピューターにコピーするファイルのリモート パス (必須) と、ローカル コンピューター上でのそのファイルのコピー先パス (省略可能) です。 ローカル コンピューター上のパスを指定しないと、ファイルは %userprofile%\Downloads フォルダーにコピーされます。