• Regident Registry

Windowsには、レジストリ(Registry)と呼ばれる設定データを管理する機能がある。初期のWindowsは、INIファイルと呼ばれるテキストファイルで設定を記録していたが、ファイルの同時アクセスの問題や効率などの問題を考慮し、Windows NT 3.1でレジストリを取り入れた(ただしレジストリを搭載した製品の出荷はWindows Ver.3.1のほうが先)。

簡単にいうとレジストリは、ツリー構造のデータベースになっていて、Windowsの稼働中は、メモリ内にある。ユーザーから見えるレジストリのツリー構造は、ソフトウェア的に合成されて作られたもの。

レジストリは、大きく「ハイブ」(Hive。蜂の巣)と呼ばれる複数の部分からなる。レジストリツリーは、HKEY~というキーで分割されているが、このツリーは、情報を整理して見せているだけで、ハイブと1対1には対応しない。たとえば、HKEY_LOCAL_MACHINEは、複数のハイブから構成されている。ハイブは、ファイルとして保存されるものもあれば、実行中にさまざまなデータから作られ、ファイルを持たない揮発性のものもある。ツリーをハイブに分割することで、システム情報を持つのか、アプリケーション固有の情報なのか、などキーの特性に合わせた管理方法が利用できるようになる。

ハイブの中には「セル」(Cell。六角形の蜂の巣穴)というデータ構造があり、これがキーや値を保持している。関連するセル同士はリンクでつながれているため、セルは必ずしも隣接した領域になくてもよい。セルはビン(Bin。ゴミ箱のような大きな入れ物)と呼ばれる領域内に作られるが、ビンは「ブロック」と境界を同じくするようになっている。ブロックは、仮想記憶のページサイズと同じ4096バイトのサイズを持つ。これにより、メモリにファイルマッピングしたとき、仮想記憶と同じメカニズムを使って、ハイブファイルをあつかうことが容易になる。

ハイブは、システム用のキー(たとえばHKEY_LOCAL_MACHINE\SYSTEM)とアプリケーション用のキー(たとえばHKEY_LOCAL_MACHINE\SOFTWARE)などを分離するためにある。システム用のハイブは、カーネル内のデータとして、スワップアウトされない領域に読み込まれるが、アプリケーション用のハイブは、仮想記憶で管理される領域に配置される。

レジストリには「都市伝説」がある。過去においては事実だった部分もあるが、現在のWindows10/11ではまったく意味を失っているものがある。そのうち有名なものは、「不要なアプリが残したレジストリでWindowsが遅くなる」というものだ。一般にどんなプログラムでも大きなデータをメモリに読み込むなら、サイズに応じた時間が必要になる。しかし、アプリケーション用のキーは、常にメモリにすべて読み込まれるわけではなく、アクセスが行われたときに必要な部分だけを読み込むようになっているため、使わない、あるいはアンインストールしたアプリケーションが書き込んだレジストリ(のブロック)は、基本的にはメモリに読み込まれることはない(これを読むアプリケーションが動かないのだから)。なので、ユーザーは、使わなくなったアプリケーションのレジストリに関しては何も気にする必要はない。

しかし、インターネットでは、「レジストリを最適化してWindowsを高速化」といった文言をよくみかける。すべてがそうだとは言わないが、こうした「無料」のアプリの中には「悪意のあるソフトウェア」が含まれている。あるいは無害だが無意味、あるいは、ほとんど効果のないソフトウェアを販売するビジネスという場合もある。基本的には、この手のソフトウェアには近づかないほうが無難である。

「レジストリが汚れる」といって、レジストリに書き込みを行うことを嫌うユーザーもいる。もちろん、何を言うのも自由だし、アプリケーションによりレジストリ値が残るのは事実だが、それが「汚い」かどうかは主観的な問題である。アプリケーション開発では、独自にファイルに設定を記録するより、レジストリを使ったほうがさまざまなメリットを享受でき、場合によっては動作速度や使い勝手が改善されることがあり、結果的にユーザーメリットにもなることもある。

レジストリに関しては、まず、参照すべきはマイクロソフトのドキュメントである。前述のレジストリクリーナーアプリなどもあり、マイクロソフト以外のドキュメントは個々に真偽や古くなっていないかなどを判断する必要がある。

・レジストリのクリーニング ユーティリティを使用するためのマイクロソフトのサポート ポリシー
https://support.microsoft.com/ja-jp/topic/レジストリのクリーニング-ユーティリティを使用するためのマイクロソフトのサポート-ポリシー-0485f4df-9520-3691-2461-7b0fd54e8b3a
※レジストリクリーニングソフトに関する警告

・上級ユーザー向けの Windows レジストリ
https://learn.microsoft.com/ja-JP/troubleshoot/windows-server/performance/windows-registry-advanced-users
※レジストリの一般的な解説

レジストリ
https://learn.microsoft.com/ja-jp/windows/win32/sysinfo/registry
※さらに高度な情報

このほか、書籍Windows Internalシリーズがレジストリを解説している。最新の7th EditionではPart2(下巻)にレジストリの解説がある。

今回のタイトルの元ネタは、2002年の映画「RESIDENT EVIL」(邦題バイオハザード)である。この映画に登場する地下の施設がHiveである。映画は全作見たのだが、ゲームのほうは、第一作を途中までしかやってない。当時はセガサターンユーザーで、このマシン向けのバージョンは表現力が劣ると言われていたが、夜、一人でやってると怖くて、最後までやりきることができなかった。