なぜ、OSが違うとソフトがインストールできないの? マルチプラットフォームの不思議

Windowsユーザーが、とても魅力的を見つけて使おうとしたら、macOS用で使えなかった。そんな経験は誰でもあるでしょう。

なぜこのようなことが起こるのでしょう。また、近年どんな環境でも動作するソフトが増えてきました。そんな、マルチプラットフォームのソフトの秘密について、紹介しましょう。

OSとは

まず、ここでWindowsやmacOSの事を「OS(Opepation System)」といい、日本語では「基本ソフト」などといいます。

コンピューターには「5大装置」と呼ばれる、入力・出力・制御・演算・記憶の各装置がつながっています。これらをCPUというパーツが制御するのですが、このCPUに基本的な命令をするのがOSの役割です。

CPUに直接命令をするのは、実は非常に難しいです。つながっている装置がなにで、その装置にはどうしたら命令できるのか、ほかの装置と連携するにはどうしたらよいのかなどを複雑に命令しなければなりません。

これを、各ソフトがやろうとすると大変です。そこで、これを仲立ちするのがOSの役割。

各ソフトはOSに「画面にAと表示したい」と命令をお願いするだけで、後の難しいやりとりはOSが代わりにやってくれるというわけです。

OSごとでお願いの仕方が違う依存性

では、各ソフトがOSごとに依存してしまうのは、このOSへのお願いの仕方がまちまちであるためです。

ソフトを作るときは、「コンパイル」という作業を行います。これによって、プログラムソースは「マシン語」と呼ばれる、コンピューターが理解できる言語に翻訳されるのですが、これによってできあがるマシン語がOSごとに異なるのです。

これが、ソフトが各OSに依存する原因です。

マルチプラットフォームへの挑戦と挫折

OSごとに依存してしまう問題は、各社が解決しようと試みました。主に次のようなものがあります。

Java

Javaは、JavaVM(Virtual Machine)というしくみを利用し、OSに関わらず Java言語で開発されたソフトが動作するようにしました。当初は、アプリケーションなども開発することを想定して、GUIを構築するための「Swing」なども開発されましたが、動作速度が遅いことや開発のしにくさなどで流行りませんでした。

Flash(AIR)

Adobe Flashはもともとは、Webページ上に簡単なアニメーションを表示するためのソフトとして開発されました。しかし、「Action Script」というプログラミング言語を搭載したあたりから、徐々にゲームやアプリケーションも開発できるようになります。

Flashの場合、「Flash Player」というソフトがインストールされていれば、OSに問わず実行することができました。これを利用し、Adobeは「Adobe AIR」という Flashをブラウザーなしで実行できるようなしくみも提供していました。

しかし、スマートフォンに Flash Playerが搭載できないなどの問題から、Flash自体が利用されなくなっていきました。

三度目の正直の Electronと Cordova

こうして何度か失敗を繰り返してきたマルチプラットフォームですが、現在もさまざまな技術が登場しています。中でも、現在主に利用されているのが「Electron」。これは、Windowsや macOSなどのデスクトップアプリケーションを構築するための技術。

JavaScriptと HTML/CSSを利用して構築し、Webブラウザー上で動作できるようなアプリケーションをソフトウェアとして配布することができます。同じく、スマートデバイス向けには「Cordova(コルドバ)」という技術があります。

これらは、ChromiumというWebブラウザーを利用した技術。Webブラウザーであれば、どんな OSでも利用できるしくみを利用した方法です。

例えば、次のようなソフトウェアが Electronで開発されています。

若干動作が重いものの、十分実用的と言えるでしょう。

いろいろな OS向けに提供されているソフトウェアは、マルチプラットフォーム技術が使われているものかどうか、調べてみると面白いでしょう。