ワークスペースで R コードが実行する場所を制御するControlling where R code runs with workspaces

R Tools for Visual Studio (RTVS) のワークスペースを使用すると、R セッションが実行する場所を構成できます。ローカル コンピューターでもリモート コンピューターでも実行できます。A workspace in R Tools for Visual Studio (RTVS) lets you configure where an R session runs, which can happen on both local and remote computers. 目的は、どちらでも同じようなユーザー エクスペリエンスで作業できるようにして、クラウド ベースのコンピューターが潜在的に備えるさらに強力な機能を活用することです。The goal is to allow you to work on either with a comparable user experience, which gives you the ability to take advantage of potentially more powerful cloud-based computers.

[ワークスペース] ウィンドウを開くには、[R Tools] > [ウィンドウ] > [ワークスペース] コマンドを使うか、Ctrl + 9 キーを押します。To open the Workspaces window, use the R Tools > Windows > Workspaces command or press Ctrl+9.

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

このウィンドウの緑のチェックマークは、RTVS がバインドされているアクティブなワークスペースを示します。In this window, the green checkmark indicates the active workspace to which RTVS is bound. 青い矢印を選ぶと、アクティブなワークスペースが設定されます。Selecting a blue arrow sets the active workspace. 各ワークスペースの右側にある設定 (歯車) アイコンを使うと、名前、場所、およびコマンド ライン引数を変更できます。The settings (gear) icon to the right of each workspace allows you to change its name, location, and command-line arguments. 赤い [X] は、手動で追加したワークスペースを削除します。The red X removes a manually added workspace.

このトピックの内容In this topic:

ワークスペースの保存とリセットSaving and resetting a workspace

既定では、プロジェクトを閉じて開きなおすときに、RTVS はワークスペースの状態を保存しません。By default, RTVS doesn't save workspace state when you close and reopen a project. ただし、ワークスペースのオプションでこの動作を変更できます。You can change this behavior, however, through the Workspace options.

[R Tools] > [セッション] > [リセット] コマンドおよび対話型ウィンドウのツール バーのリセット ボタンを使うと、いつでもワークスペースの状態をリセットできます。The R Tools > Session > Reset command and the reset toolbar button in the interactive window also reset workspace state at any time. リモート ワークスペースでは、リセットを行うとリモート サーバーに初めて接続したときに作成されたユーザー プロファイルが削除され、そこに蓄積されていたすべてのファイルが削除されます。With remote workspaces, reset deletes the user profile created when first connecting to the remote server, which effectively deletes any files that have accumulated there.

ローカル ワークスペースLocal workspaces

ローカル ワークスペースのリストには、コンピューターにインストールされているすべての R インタープリターが表示されます。The Local workspaces list displays all the R interpreters that you have installed on your computer.

Visual Studio は起動時に、HKEY_LOCAL_MACHINE\Software\R-Core\ レジストリ キーを調べて、インストールされているすべてのバージョンの R を自動的に検出します。When Visual Studio starts, it attempts to automatically detect all of the versions of R that you have installed by looking through the HKEY_LOCAL_MACHINE\Software\R-Core\ registry key. このチェックは起動時にのみ行われるため、新しい R インタープリターをインストールした場合は、Visual Studio を再起動する必要があります。Because this check is done only at startup, you need to restart Visual Studio if you install a new R interpreter.

RTVS は、標準ではない方法で (たとえば、インストーラーを実行する代わりに単にファイルをフォルダーにコピーすることで) インストールされた R インタープリターを、検出しない可能性があります。RTVS might not detect an R interpreter that's installed in a non-standard way (for example, when simply copying files to a folder instead of running an installer). その場合は、次のようにして手動で新しいローカル R ワークスペースを作成します。In this case, manually create a new local R Workspace as follows:

  1. [ワークスペース] ウィンドウで [追加] ボタンを選択します。Select the Add button in the Workspaces window.
  2. 新しいワークスペースの名前を入力します。Enter a name for the new Workspace.
  3. R ルート フォルダーへのパス (インタープリターの bin フォルダーを含むパス) と、RTVS がインタープリターを起動するときにインタープリターに渡すオプションのコマンド ライン引数を入力します。Enter the path to the R root folder, which is the one that contains the bin folder with the interpreter, along with any optional command-line arguments to pass to the interpreter when RTVS starts it up.
  4. 終わったら [保存] を選択します。Select Save when you're done.

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

リモート ワークスペースRemote workspaces

リモート ワークスペースを使うと、リモート コンピューター上の R セッションに接続できますRemote workspaces let you connect to an R session on a remote computer. (この目的にコンピューターを構成する方法については、「Setting up remote workspaces」(リモート ワークスペースの設定) をご覧ください)。(See Setting up remote workspaces for how to configure a computer for this purpose.)

Visual Studio はリモート ワークスペースを自動的に検出しないので、前のセクションで説明したように、[ワークスペース] ウィンドウの [追加] ボタンを使用して手動で追加する必要があります。Visual Studio doesn't automatically detect remote workspaces, so you must add them manually using the Add button in the Workspaces window as described in the previous section. その場合、ローカル パスではなく、リモート コンピューターの URI を入力します。In this case, enter the remote computer's URI rather than a local path.

重要

リモート ワークスペースは、リモート コンピューターとの通信のプライバシーと整合性を確保するため、"HTTPS プロトコルを使用する必要がある" URI によって識別されます。Remote workspaces are identified by a URI that must use the HTTPS protocol to ensure the privacy and the integrity of communication with the remote computer. Visual Studio は、HTTPS をサポートしていないリモート コンピューターには接続できません。Visual Studio cannot connect to a remote computer that does not support HTTPS.

注意

リモート ワークスペースは実質的にはプレビュー段階です。Remote workspaces are effectively in preview. 将来のリリースの実装でファイル同期の問題を改善する作業が行われており、アイデアやフィードバックを歓迎します。We are working on a better implementation of the file sync problem for a future release and welcome your ideas and feedback.

リモート ワークスペースのログオンRemote Workspace Logon

リモート ワークスペースにログオンするには、ユーザー名とパスワードを使用する必要があります。You must use a username and password to logon to the remote workspace.

Windows ワークスペースへのログオンLogon to Windows workspace

リモート コンピューターがドメイン アカウントを使用するようにセットアップされている場合は、ドメイン ログオンを使用してリモート ワークスペースにアクセスできます。If your remote machine is setup to use your domain account, you can use the domain logon to access a remote workspace. そうでない場合は、リモート コンピューター上のコンピューター アカウントを使用して、machine-name\username 形式でログオンする必要があります。If it is not, then you have to use machine-name\username format to logon using a machine account on the remote machine.

Linux ワークスペースへのログオンLogon to Linux workspace

Linux アカウントにログオンするには、<<unix>>\username 形式を使用します。To logon to a linux account use <<unix>>\username format. たとえば、ruser という名前のアカウントがある場合、ユーザー名を <<unix>>\ruser として入力する必要があります。For example, if you have an account by the name ruser, then you should type in the username as <<unix>>\ruser.

ワークスペースの切り替えSwitching between workspaces

RTVS は、一度に 1 つのワークスペースのみにバインドされます。RTVS is bound to only a single workspace at a time. バインドされたワークスペースは、[ワークスペース] ウィンドウでは小さい緑色のチェックマークで示されます。The bound workspace is indicated by a small green checkmark in the Workspaces window. 既定では、RTVS は前のセッションで最後に開いたローカル ワークスペースにバインドします。By default, RTVS binds to the last open local workspace in a previous session.

アクティブなワークスペースを変更するには、目的のワークスペースの横にある青い矢印を選択します。To change the active workspace, select the blue arrow next to the desired workspace. 選択すると、セッションの保存を求めるメッセージが表示された後、現在のワークスペースが終了されて、新しいワークスペースに切り替わります。Doing so prompts you to save your session, terminates the current workspace, then switches to the new one.

ヒント

保存メッセージを無効にするには、[R Tools] > [オプション] コマンドを選び、[ワークスペースを切り替える前に確認ダイアログを表示する] オプションを [No] に設定します。To disable the save prompt, select the R Tools > Options command and set the Show confirmation dialog before switching workspaces option to No. R Tools for Visual Studio options」(R Tools for Visual Studio のオプション) をご覧ください。See Workspace options.

アンインストールされたローカル ワークスペースまたは使用できないリモート ワークスペースに切り替えようとすると、RTVS がどのワークスペースにもバインドされなくなる可能性があります。If you attempt to switch to a local workspace that's been uninstalled, or to a remote workspace that it unavailable, RTVS might not be bound to any workspace. その結果、対話型ウィンドウでコードを入力したり、それ以外でコードを実行しようとしたりしたときに、エラーが表示される場合があります。As a result, you might see an error when you enter code in the interactive window or try to run code otherwise:

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

これを解決するには、[ワークスペース] ウィンドウで別のワークスペースに切り替えます。To correct this, switch to another workspace in the Workspaces window. 使用できるワークスペースがない場合は、R インタープリターをインストールする必要があります。If no workspaces are available, you need to install an R interpreter. また、Visual Studio の実行中にインタープリターをインストールした場合は、Visual Studio を再起動してもかまいません。You can also try restarting Visual Studio if you've installed an interpreter while Visual Studio running.

リモート ワークスペースへの切り替えSwitching to a remote workspace

リモート ワークスペースに初めて接続するときは、RTVS により資格情報の入力を求められます。入力した資格情報は、後のセッションのために (安全な Windows 資格情報保管ボックスを使って) キャッシュされます。RTVS prompts you for credentials when you first connect to a remote workspace, then caches those credentials (using the secure Windows Credential Locker) for later sessions. その後、リモート サーバーとの通信は HTTPS を使って安全に行われます (これは必須です)。Communication with the remote server is then done securely over HTTPS (which is required).

サーバーの構成によっては、接続時に "リモート R Services で提示されるセキュリティ証明書では、ユーザーがコンピューター <名前> に確かに接続していることを証明できません" という証明書の警告が表示される場合があります。Depending on the server's configuration, you may see a certificate warning when connecting that reads, "The security certificate presented by the Remote R Services does not allow us to prove that you are indeed connecting to the machine (name)."

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

証明書は、接続しようとしているコンピューターから RTVS に提示されるドキュメントです。The certificate is a document presented to RTVS by the computer that you're trying to connect to. 証明書には、そのコンピューターの URI を示すフィールドが含まれています。The certificate contains a field that identifies the URI of that computer. 証明書の URI とコンピューターへの接続に使用された URI の不一致を RTVS が検出すると警告が表示され、サーバーのセキュリティが侵害されている可能性を示します。The warning appears when RTVS detects a mismatch between the URI in the certificate and the URI used to connect to the computer, indicating that the server's security may have been compromised.

ただし、この警告は、リモート コンピューターで HTTPS を有効にするために、信頼できるプロバイダーからの証明書ではなく、"自己署名証明書" が使われた場合にも表示されます。However, this warning also appears if a self-signed certificate was used to enable HTTPS on the remote computer instead of using one from a trusted provider. 詳しくは、「リモート ワークスペースの設定」をご覧ください。For more information, see Setting up remote workspaces.

ローカル コンピューターとリモート コンピューターのディレクトリDirectories on local and remote computers

既定では、ローカル ワークスペースで新しい R インタープリターを開始すると、現在の作業ディレクトリは %userprofile%\Documents になります。By default, when you start a new R interpreter in a local workspace, your current working directory is %userprofile%\Documents. ディレクトリは、[R Tools] > [作業ディレクトリ] コマンドを使って、または Visual Studio のソリューション エクスプローラーでプロジェクトを右クリックして [作業ディレクトリをここに設定] のようなコマンドを選ぶことによって、いつでも変更できます。You can change directory at any time using the R Tools > Working Directory commands, or by right-clicking a project in Visual Studio Solution Explorer and selecting commands like Set Working Directory Here.

リモート コンピューターに初めて接続するとき、RTVS は資格情報に基づいてユーザー プロファイルを自動的に作成し、そのプロファイルの下の Documents フォルダーに作業ディレクトリを設定します。When you first connect to a remote computer, RTVS automatically creates a user profile based on your credentials, which sets the working directory to the Documents folder under that profile. このフォルダーは、同じ資格情報でそれ以降に行われるすべてのリモート セッションに使われます。This folder is used for all subsequent remote sessions that use the same credentials.

その結果、コードが実行される正確な場所は、ローカル ワークスペースとリモート ワークスペースで異なる場合があります。As a result, the exact location where your code runs can differ between local and remote workspaces. その後、コードでは常にデータ ファイルへの相対パスを使い、コードをワークスペース間で移植できるようにします。In your code, then, always use relative paths to data files and such so that your code is portable across workspaces.

リモート ワークスペースでは、作業ディレクトリのすべてのファイルは同じユーザー プロファイルのセッションに対してその場所に維持されることにも注意してください。Note also that with remote workspaces, all files in the working directory remain in place across sessions for the same user profile. 前に説明したように、リモート ワークスペースを使っているときは、[R Tools] > [セッション] > [リセット] コマンド (または対話型ウィンドウのリセット ボタン) を使って、これらのファイルを削除できます。As noted earlier, you can delete these files by using the R Tools > Session > Reset command (or the reset button in the interactive window) when using a remote workspace. このコマンドは、サーバーからユーザー プロファイルを削除し、再接続すると再び作成されます。This command again deletes the user profile from the server, which is recreated when you reconnect.

リモート ワークスペースへのプロジェクト ファイルのコピーCopying project files to remote workspaces

Visual Studio で R プロジェクトの作業を行っているときは、リモート ワークスペースを使っている場合であっても、ローカル コンピューターに常に最新のプロジェクト ファイルが存在します。When working with R projects in Visual Studio, the local computer always has the latest project files even when you're using a remote workspace. つまり、Visual Studio でプロジェクトを開くと (通常は、そのプロジェクトを含むソリューションを開くこと)、RTVS はプロジェクトのコンテンツがローカル コンピューターに完全に存在するものと想定します。That is, when you open a project in Visual Studio (which typically means opening a solution containing that project), RTVS assumes that the project's contents reside wholly on the local computer. リモート ワークスペースは、実際には、プロジェクトのファイルおよびコードからの出力の一時的なホストにすぎません。The remote workspace is, in effect, just a temporary host for the project's files and any output from the code. つまり、たとえば、対話型ウィンドウで source を使ってファイルを読み込むとき、そのファイルは、リモート コンピューターのユーザー指定のパス、またはリモート R インタープリターの現在の作業ディレクトリ (setwd() 関数で設定) に、既に存在している必要があります。This means, for example, that when loading a file using source in the interactive window, that file must already be on the remote computer in the path you provide, or it must be in the current working directory of the remote R interpreter (set with the setwd() function).

ファイルは、次のようにリモート サーバーにコピーされます。Files are copied to the remote server as follows:

  • 対話型ウィンドウを使ってリモートでファイルを作業するには、最初に、ソリューション エクスプローラーでそれらのファイル (またはプロジェクト) を右クリックして [選択したファイルのソース化] を選択することで、手動でコピーする必要があります。To work with files remotely through the interactive window, you must first copy them manually by right-clicking those files (or the project) in Solution Explorer and selecting **Source Selected **. 個々のファイルは、サーバー上の作業ディレクトリにコピーされます。プロジェクトをコピーすると、RTVS によってプロジェクトのフォルダーが作成されます。For individual files, they're copied to the working directory on the server; when copying a project, RTVS creates a folder for the project.

  • また、ソリューション エクスプローラーでファイルを選択して [選択したファイルのソース化] を選ぶことにより、ファイルをコピーすることもできます。You can also copy files by selecting then in Solution Explorer and then selecting Source Selected Files(s). このアクションにより、ファイルは対話型ウィンドウに読み込まれて、そこで実行されます。This action loads them into the interactive window and runs them there. セッションがリモート コンピューターに接続されている場合、ファイルは最初にコピーされます。If the session is connected to a remote computer, the files are copied there first.

  • RTVS がリモート ワークスペースにバインドされている場合、F5 キーを押すか、[デバッグ] > [デバッグ開始] を選ぶか、他の方法でコードの実行を開始すると、RTVS は既定でリモート ワークスペースにプロジェクトのファイルを自動的にコピーします (この動作の制御方法については後述を参照)。When RTVS is bound to a remote workspace and you press F5, select Debug > Start Debugging, or otherwise start running your code, RTVS by default copies the project's file to the remote workspace automatically (see below for how to control this behavior).

  • サーバーに既に存在するファイルはすべて上書きされます。Any files that already exist on the server are overwritten.

注意

RTVS はすべての R 関数呼び出しを確実にインターセプトできないため、対話型ウィンドウ内からの source()runApp() (Shiny アプリケーションの場合) などの関数の呼び出しでは、リモート ワークスペースへのファイルのコピーは "行われません"。Because RTVS cannot reliably intercept all R function calls, calling functions such as source() or runApp() (for Shiny applications) within the interactive window does not copy files to the remote workspace.

プロジェクトのプロパティは、プロジェクト実行時に RTVS がファイルをコピーするかどうか、およびコピーされるファイルの厳密な指定を制御します。Project properties control whether RTVS copies files when a project is run, and exactly which files are copied. このページを開くには、[プロジェクト] > [<名前> のプロパティ...] メニュー コマンドを選ぶか、またはソリューション エクスプローラーでプロジェクトを右クリックして [プロパティ...] を選びます。To open this page, select the Project > (name) Properties... menu command, or right-click the project in Solution Explorer and select Properties....

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

ここで、[Transfer files on run](実行時にファイルを転送する) プロパティは、RTVS がプロジェクト ファイルを自動的にコピーするかどうかを決定します。Here, the Transfer files on run property determines whether RTVS copies project files automatically. [Files to transfer](転送するファイル) の値は、転送されるファイルを正確に抽出します。The Files to transfer value then filters exactly which files are transferred. 既定では、.R.Rmd.sql.md、および .cpp ファイルのみがコピーされます。The default is to copy only .R, .Rmd, .sql, .md, and .cpp files. この動作は、誤って実行のたびに大きなデータ ファイルがサーバーにコピーされるのを防ぎます。This behavior avoids inadvertently copying large data files to the server with every run.

リモート ワークスペースからのファイルのコピーCopying files from a remote workspace

R スクリプトがサーバーでファイルを生成する場合、rtvs::fetch_file 関数を使ってそれらのファイルをクライアントにコピーして戻すことができます。If your R script generates files on the server, you can copy those files back to the client using the rtvs::fetch_file function. この関数は、少なくとも、コンピューターにコピーするファイルのリモート パスと、コンピューター上のターゲット パス (省略可能) を受け取ります。This function accepts, at a minimum, the remote path to the file that you want to copy to your computer, and optionally the target path on your computer. ローカル コンピューター上のパスを指定しないと、ファイルは %userprofile%\Downloads フォルダーにコピーされます。If you don't specify a path, the file is copied into your %userprofile%\Downloads folder.