本特集では、『プログラムはなぜ動くのか 第3版』から「第7章 プログラムはどんな環境で動くのか」の抜粋をお読みいただけます。

●ウォーミングアップ

 本題に入る前に、ウォーミングアップとしてクイズを出題させていただきます。きちんと説明できるかどうか試してみてください。

Q1. アプリケーションの動作環境は、何で示されますか?
Q2. Windows 用アプリケーションは、そのままmacOS 上で動作するでしょうか?
Q3. Windows パソコン(PC/AT 互換機)に、Windows 以外のOSをインストールできますか?
Q4. Java 仮想マシンの役割は、何ですか?
Q5. クラウドの分類のSaaS、PaaS、IaaS の中で、仮想的なハードウエアを提供するものはどれですか?
Q6. ブート・ストラップ・ローダーの役割は何ですか?

 いかがだったでしょうか。改めて聞かれると、簡潔に答えられない問題もあったことでしょう。参考までに、筆者の答えと解説を以下に示しておきます。

●答え

A1.OS とハードウエア
A2.そのままでは動作しない
A3.できる
A4.バイトコードとなったJava アプリケーションを実行すること
A5.IaaS
A6.OS を起動すること

●解説

【解説1】 一般的にアプリケーションの動作環境は、OS の種類と、ハードウエア(CPUやメモリーなど)のスペックで示されます。
【解説2】アプリケーションは、特定のOS 上で動作するように作られています。
【解説3】Windows パソコン(PC/AT 互換機)には、Ubuntu やRHEL(Red Hat Enterprise Linux)などのLinux ディストリビューションをインストールできます。
【解説4】環境ごとに専用のJava 仮想マシンを用意すれば、同じバイトコードをさまざまな環境で動作させられます。
【解説5】SaaS はアプリケーションを提供し、PaaS はOS を提供し、IaaS はハードウエアを提供します。
【解説6】コンピュータ本体のROM に記憶されたBIOS というプログラムによってブート・ストラップ・ローダーが起動され、ブート・ストラップ・ローダーによってハード・ディスクなどに記憶されたOS が起動されます。

●この特集のポイント

 プログラムというものは、同じものが多くのユーザーに使われることによって、大きな価値を産み出します。たくさん売れればもうかりますし、フリーソフトであってもたくさん使ってもらえれば嬉しいものです。皆さんも、自分が作ったプログラムをできるだけ多くのユーザーに使ってほしいと思うでしょう。しかし、動作環境が異なれば、そうもいきません。たとえば、Windows 用のプログラムをそのままMac で動作させることは、基本的にはできないのです。動作環境が違うからという理由は、皆さんもおわかりかと思います。では動作環境の違いとは何でしょうか? そして動作環境が異なると、なぜアプリケーションは動かないのでしょうか?

 この章では、その理由を説明し、いくつかの解決策を紹介しましょう。