【スポンサーリンク】

「仮想」と「virtual」

「仮想」と「virtual」
  • 日本語の「仮想」という言葉には、2通りの意味合いがあります。
  • 一般的には「そこにはない」というネガティブなイメージで使われることが多いですが、IT用語の「仮想」は「実質的にそこにある」というポジティブな意味が強いです。
「仮想」と「virtual」

「仮想」という言葉から連想するのが、「空想」とか「かりそめ」とか「想像上」みたいな感じなんだよね。
そっちにイメージが引っ張られるなぁ。

「仮想」と「virtual」

言葉の意味の多様さを感じさせる事例と言えますね。

\記事が役に立ったらシェアしてね/
キーワード

キーワード:#VPN(22)#翻訳(10)

【スポンサーリンク】

1. 「仮想」の2つの捉え方

スマホやパソコンにまつわる「仮想」という言葉は多くあります。
たとえば、仮想現実(VR)、仮想専用線(VPN)、仮想移動体通信事業者(MVNO)、仮想通貨など。

この「仮想」という言葉には、実は2通りの捉え方があります。

1つ目は「そこにあるが実際にはない」というネガティブなイメージ。
VRを「仮想現実」と訳すと、現実にはないけれど、まるでそこにあるかのような世界というニュアンスになります。
「仮」という漢字には、「一時的」「臨時的」というニュアンスもあります。

2つ目は「実質的にはそこにある」というポジティブな捉え方。
例えば、「仮想メモリ」という言葉があります。これは物理メモリではないけれど、あたかもメモリのように使えるという意味合いです。

「仮想」の2つの捉え方

ITの分野では後者の意味で使われることが多いですが、一般的には前者のイメージが強いかもしれません。

「仮想」を含む語を列挙してみると、「想像上の」という意味合いと、「実質的には同等」という意味合いのものが両方あります。

  • 仮想敵国:軍事訓練などで想定する敵国。
  • 仮想メモリ:物理メモリとは別に、ストレージの一部をメモリとして使用する技術。見た目上はメモリの容量が増えたように見え、実質的にメモリとして機能する。
  • 仮想マシン:1台の物理的なコンピュータ上で複数のOSを同時に動作させる技術。各OSは独立したコンピュータ上で動いているかのように振る舞い、実質的には複数のコンピュータが存在しているのと同じになる。
  • 仮想現実(VR):目の前に広がる景色はリアルに感じられるが、実際にはコンピューター上に作られた世界であり、現実には存在しない。
  • 仮想通貨:ビットコインなどのデジタル上の通貨は、実体のある紙幣や硬貨とは異なり、データとして存在するだけで物理的な形を持たない。
  • 仮想オフィス:物理的なオフィスを持たずに、インターネットを介してつながるオフィス。メンバーは離れた場所にいるが、オンラインツールを使って実質的には同じオフィスで働いているのと変わらない。
  • 仮想専用線(VPN):物理的な専用回線ではないが、暗号化技術などを使ってインターネット上に安全な通信路を作り、あたかも専用回線があるかのように機能する。
  • 仮想移動体通信事業者(MVNO):実際には自社の通信インフラを持たず、大手キャリアから回線を借りて事業を行う通信事業者。ユーザーからは独立した通信会社のように見える。
「仮想」の2つの捉え方

でも、仮想通貨や仮想敵国も、実質的に通貨の機能を果たしたり、実質的に敵国と想定したりしている場合もあったりするよね。

「物理的にはないけれど」という意味もあるんだね。

1-1. 「virtual」のもとの意味

実はこの「仮想」という言葉は、主に「virtual」に当てられる訳語として使われています。
virtualの本来の意味は、「事実上同じような機能・効果を持つ」というポジティブなものです。

virtual

  • almost a particular thing or quality:
    (特定の物や品質とほぼ同じ)
  • used to describe something that can be done or seen using computers or the Internet instead of going to a place, meeting people in person, etc.:
    (ある場所に行ったり、人々に直接会ったりする代わりに、コンピューターやインターネットを使用して実行したり見たりできることを表すのに使用されます)
VIRTUAL | Learner's Dictionaryでの定義 – Cambridge Dictionary

2. 「仮想」の翻訳の歴史

「仮想メモリ」を最初に「仮想」と訳したのは日本IBMだと言われています。
1972年、日本IBMが米国IBMの「virtual storage」を「仮想記憶装置」と翻訳したのが始まりのようです。

一方、VR(バーチャルリアリティ)が登場したのは1989年。
VRを日本語で「仮想現実」と訳すようになったのもこの頃からです。
VRの研究者たちは「仮想」より「人工現実感」という訳語を好んで使っていました。

しかし今では、VRは「仮想現実」という訳語が広く定着しています。
一般的に「仮想」は「そこにはないが、あたかもそこにあるかのようなもの」というイメージで捉えられているのです。

2-1. 生まれる認識の差

この捉え方の違いは、言葉から受けるイメージに大きな影響を与えています。
たとえば、「仮想現実」を例にみてみます。

「そこにはない」と捉えると、「仮想現実」は現実の対極にある存在という印象を持たれがちです。
VRの世界は現実とは切り離された別の世界だと認識されることになります。
するとVRは現実の代替にはならず、あくまでもゲームやエンタメの領域のものだと捉えられるでしょう。

一方「実質的にそこにある」と捉えると、「仮想現実」は現実と地続きの世界だと捉えられます。VRの世界は、私たちが普段触れている現実と同じリアリティを持つ世界だと認識されるのです。
そうなればVRは仕事や教育などにも活用できる、実用的な技術だと見なされるはずです。

生まれる認識の差

「仮想通貨」ではなくて「暗号通貨」というのも、似たような文脈だよね。

確かに「仮想」にはネガティブなイメージがある気がする。

3. 「仮想」のイメージの注意点

技術的な文脈で「virtual」を最初に「仮想」と訳したことで、主に2つの誤解が生まれやすくなってしまったようです。

1つ目は、「仮想」という言葉が持つイメージとのギャップです。
「仮想」という言葉から一般に連想されるのは、「実体がない」「架空の」といったニュアンスです。
一方、「仮想メモリ」は物理メモリの容量不足を補うための、実用的で重要な技術です。
「仮想」というネガティブなイメージは、この技術の実態にそぐわないという指摘があります。

2つ目は、原語の意味との乖離です。
「Virtual Memory」の「Virtual」は、「事実上の」「実質的な」という意味合いが強いのに対し、日本語の「仮想」にはそのニュアンスが薄いです。
原語の持つ意味合いを十分に反映できていないという問題があったのです。

3-1. そもそも訳語はしっくり来ない

では、「仮想メモリ」をどう訳すべきだったのでしょうか。
いくつか候補を挙げてみましょう。

  1. 擬似メモリ・疑似メモリ:
    メモリを模倣しているというニュアンスが伝わる訳語。
    ただ、「擬似」では本物に近いという意味合いが弱いかもしれません。
    これも「仮想」と同じく、ネガティブなイメージを与えやすい言葉です。
  2. 実質メモリ:
    「Virtual」の「実質的な」というニュアンスを直訳した言葉。
    技術的な意味合いは伝わりやすいですが、一般的にはなじみのない言葉かもしれません。
  3. 拡張メモリ:
    メモリを拡張するという機能に着目した訳語。
    分かりやすい言葉ですが、「Virtual Memory」の持つニュアンスとは少し異なります。
  4. バーチャルメモリ:
    カタカナ語をそのまま使う方法。

このように、「仮想メモリ」の代替訳はいくつか考えられますが、どの言葉もぴったりとはいえません。

3-2. C++の「virtual」と仮想関数

プログラミング言語 C++には、「virtual」というキーワードがあります。
「仮想関数(virtual function)」も、イメージしにくい概念の一つです。

「virtual」は、C++で「多態性」を提供します。
これによって、プログラムの柔軟性と拡張性が向上し、コードの再利用性が高まるのです。

オブジェクト指向プログラミングには、「継承」という概念があります。
これは、あるクラス(親クラス)の性質を引き継いで、新しいクラス(子クラス)を作ることです。
子クラスは、親クラスの性質を受け継ぎつつ、独自の性質を追加したり、親クラスの性質を変更したりできます。

ここで、親クラスのメンバー関数にvirtualキーワードを付けると、その関数は「仮想関数」になります。
仮想関数は、子クラスで同じ名前の関数を定義して、親クラスの関数を上書き(オーバーライド)できる特別な関数です。

「virtual」の「実質的にはある」というニュアンスが出てくるのは、この上書きされた関数が呼び出されるときです。

もし、virtualキーワードがなければ、親クラスのポインタからオブジェクトの関数を呼び出すと、参照先のオブジェクトにかかわらず、親クラスの関数がそのまま呼び出されてしまいます。

一方、親クラスのポインタからオブジェクトの仮想関数を呼び出すと、実行時に、そのポインタが指している実際のオブジェクトの型を調べ、そのオブジェクトの型に合わせて、適切な子クラスのオーバーライドされた関数が呼び出されます。

つまり、親クラスのポインタや参照を使っていても、実質的には子クラスの関数が呼び出されているのです。

C++の「virtual」と仮想関数

ちなみに、Javaではクラスのすべてのメソッドは仮想関数です。
つまり、現在ではvirtualの方が「ふつう」なのです。

QRコードを読み込むと、関連記事を確認できます。

「仮想」と「virtual」
【スポンサーリンク】
タイトルとURLをコピーしました