インスタントリプレイってどうなん？

GeForce Experienceのインスタントリプレイ機能には欠点があるという話。

# インスタントリプレイって何

謎のAI半導体メーカーNVIDIA製ソフト、[GeForce Experience](https://www.nvidia.com/ja-jp/geforce/geforce-experience/)に入ってる機能です。GeForce ExperienceはNVIDIA製のグラボを積んだPCで使えるソフトで、ドライバーのアップデートやらをやる時に便利です。ゲームの設定最適化などもやってくれますが使ってる人あんまりいないイメージ。

インスタントリプレイとは、PCの画面をあらかじめ録画しておいて、クリップしたい、残したいシーンが出てきた時にとっておいたものを動画ファイルとして保存するという、名前の通りインスタントにシーンをリプレイするサムシングです。
普通の録画機能と何が違うかといえば、基本的には**無駄なファイルを保管しておく必要がない**です。クリップしたいシーンだけを保管して他は切り捨てているので、ストレージを圧迫しづらく後で見返しやすいという利点があります。

# インスタントリプレイの欠点

PCの画面をあらかじめ録画しておくということは、それまでの映像をどこかに保管し続けていなければいけないということです。

インスタントリプレイは、指定した**ディレクトリ**に保管します。つまり、インスタントリプレイがスタンバイ状態、すなわちずっとPCの画面を録画している時に、永遠にドライブに書き込み・無駄分を消去、を繰り返します。これはドライブ衛生上良くありません。現在の主要ドライブであるSSD, HDD共に書き込み・消去し続ければ劣化するものですから、インスタントリプレイをオンし続けている間、クリップしようがしまいが指定したSSDもしくはHDDに書き込みされ続け、劣化し続けるということになります。

# どうすればいいの

インスタントリプレイではどうやっても任意のドライブしか指定できないので、**インスタントリプレイを使わないで他のやつを使う**か、**書き込みし続けても良いドライブを作成・指定する**方法があります。

# 代替機能、リプレイバッファ

リプレイバッファとは、[OBS(Open Broadcaster Software)](https://obsproject.com/)という配信・録画ソフトの機能です。昔は配信ソフトとか録画ソフトとかの類は基本有料で、無料のものは録画の画面にロゴマークが入ったり、画質が制限されたりしていました。しかし、OBSは名前の通りオープンなソフトウェアで、オープンソース無料とかいうキャプチャ界の神(*要出典*)(*諸説有*)です。それでいて設定パラメータが豊富で高機能なソフトであり、OS問わず使うことができます。

リプレイバッファはインスタントリプレイと同じで、クリップできるやつです。が、2つには大きな違いがあります。
リプレイバッファは、有無を言わさず **メモリ(RAM)** に保管します。メモリはそもそも一時的に書き込んだり読み込んだりするために作られてるものです。劣化はしないわけではないが、用途が用途ですからかなり長ーーくもちます。SSDやHDDといったストレージと比べたらへでもありません。
また、前述の通りOBSでは幅広な設定ができます。一時的に使用するメモリ使用量も調整することができ、かつビデオエンコードの設定も詳細にできるので、動画ファイルにした際のファイルサイズも調整できます。つまり、メモリがカツカツ・ストレージがカツカツでもそれなりの画質を保ちながらクリップを撮ることができます。

## デメリットは？

要検証ですが、自分の環境だとOBSの画面キャプチャ機能がたまにバグって画面が固まる・映らないとかがあります。(これはフルスクリーンアプリケーションをAlt+Tabで切り替える時にたまに発生します。)また、負荷自体は設定にもよりますがOBSの方が高く、ゲームとかをするときはスペックによっては支障をきたす場合があります。
インスタントリプレイも負荷がかからないわけではないですが、ネイティブで動いてるという点から結構軽いです。

# 書き込みし続けても良いドライブの作成

すぐ死んでもいいドライブを買ってくるのも手ですが、一応楽に**作る**方法があります。どういうことかというと、**メモリ(RAM)の一部をディスク化**するということです。こうして作成したものを**RAMディスク**とかって言ったりします。

RAMの一部をディスクとして読み込むことができれば、書き込みによるディスクの劣化については基本的に考えなくて良くなります。インスタントリプレイの一時保管先ディレクトリに作成したRAMディスクを指定すれば、無駄なこと考えなくて良くなってハッピーとなります。

# やってみよう

今回はお試しということで、無料でできる[ImDisk](https://sourceforge.net/projects/imdisk-toolkit/)を使用していきます。(有料ソフトですが高機能なもので、[SoftPerfect RAM Disk](https://www.softperfect.com/products/ramdisk/)というものがあるようです。買い切りです。)

ダウンロードして `install.bat` を実行すると、インストール画面になります。とりあえずデフォルト設定のままインストールしましょう。


![1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3618780/fde93964-19ed-9cc4-39b7-05390086452c.png)


そうすると、デスクトップ上またはスタートメニューに `RamDisk Configuration` が生成されるので起動します。

![2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3618780/ed1a831b-095e-a365-db21-0c897199cca2.png)

するとこんな感じの画面が開きます。Sizeで自分の作成したいRamディスクの容量を設定してください。これは各自の環境と相談です。私はとりあえず4GBにしました。
そしてOKを押すと、新しくRamDiskがマウントされます。

![3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3618780/474fa113-0b20-4881-7bb0-090882003f4d.png)

タスクマネージャーを見ても、Systemが4GB分占有しているのが分かると思います。

あとはGeForce Experienceの設定から録画の一時ファイルの保存先を今作成したものに変更するだけです。(ビデオとなってるところは一時ファイルではなくて、クリップをちゃんと保存する場所を指定するものです。ここは普通のディスクを指定してよいです。)

![4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3618780/f376cd6f-63a0-4dd3-cb57-a334105d4db1.png)

# まとめ

GeForce Experienceの機能であるインスタントリプレイはそのままだとちょっとドライブによろしくない仕様になってるので、別のを使うかうまく設定してあげましょう。