Surfaceって、元々はSurface RTという名前でして、オペレーティングシステム(つまり、OS)はWindows RTです。Windows RTって、名前にWindowsと付くにもかかわらず、普通のWindowsで動くアプリケーション(つまり、アプリ)を使うことはできません。これは、Surface 2が登場して、Windows RT 8.1にバージョンアップしても同じです。
Surface RTとSurface 2(以降、Surface RTとSurface 2をひっくるめて、Surfaceと呼びます)って、ARMって言う、携帯電話やスマートフォンでよく使われているCPUを積んでいるんです。一方、PCってIntelって会社が作ったi386、またはi386と同じ命令を持つCPU(以降、x86と呼びます)を積んでいるんです。
OSにしても、アプリにしても、CPUへの命令の集まりなんです。ところが、困ったことにCPUによって命令の種類が違うんです。命令の種類が違う以上、同じOS・同じアプリを動かすことができないんです。だから、ARMとx86ではOSは別、アプリも別なのです。
早い話が、SurfaceってARMってCPUを積んでいて、CPUが普通のPCと異なるので、普通のWindowsを動かすわけにはいかず、Windows RTって言う、ARM専用のWindowsを作ったってわけなんです。でもって、見た目をWindowsそっくり、使い方をWindowsそっくりにすることはできても、Windowsと同じアプリを動かすことができないんです。(でも、やっぱりSurfaceでWindowsと同じアプリを使いたい方は、この記事をご覧ください)
「じゃあ、Windowsストアアプリだったら、Windows RTでも動くのはなぜ?」
はい。いいところに気付きました。Windows 8からは、通常のWindowsアプリとは別に、Windowsストアからインストールするアプリ(いわゆる、Windowsストアアプリ)というのがあるんです。Windowsストアアプリってハードウェアへのアクセスが厳しく制限される上、マイクロソフトの審査を受けてWindowsストアから配布しなければいけません。なので、普通のWindowsよりもセキュリティが高いんです。
Windowsストアへ行くは、スタート画面から「ストア」をクリックします。
で、「詳細」の「サポートされているプロセッサ」欄にARMと書いてあれば、WIndows RTで動きます。また、x86と書いてあれば、普通のPCで動くWindows(・・・と言ってもWindows 8以降ですが)でも動きます。CPUの種類が異なれば、異なるOS・異なるアプリのはず。なのに、なぜWindowsストアアプリって、普通のPCでもSurfaceでも動くのか。理由は、Windowsストアアプリって.NETフレームワーク(こう書いて、「どっとねっとふれーむわーく」と読む)っていう仕組みを使って動いているからなのです。
.NETフレームワークには、実行時コンパイル機能と言うのがありまして、アプリを実行するときに、CPUの種類に合わせて命令を翻訳しなおす機能があるんです。これは人間に例えると、「この記事は誰が読むかわからないから、とりあえず英語で書いておこう。日本人が読むんだったら、頭の中で日本語に翻訳してね」ってことができるんです。なので、Windowsストアアプリって、実行するときに、PCだったらi386の命令に、SurfaceだったらARMの命令に翻訳してから実行しているというわけなんです。
実行時コンパイル機能を使うと、CPUの種類を問わず実行できるアプリを作ることができる反面、どうしても実行速度は遅くなります。これは、「日本人が読む記事だったら、最初っから日本語で記事を書いた方がいい」のと同じです。
Windows 8が登場したころ、Surface RT以外にもWindows RTマシンってのがあったんです。しかし、普通のWindowsアプリが動かないというのがネックになったのか、今ではほぼSurfaceのみになってしまいました。Windows RTって、Windowsを標的にしたウイルスに感染しないので、セキュリティが高いってメリットもあるんですけどねぇ。
よろしかったら、Udemyへもお越しくださいませ。LPICレベル1とITパスポートの講座+問題集を提供中です。