ソフトのインストールって何やってんの?

ネットでフリーソフトを落として来て「***.exe」とかを実行(クリック)したら、出てきた画面とかで一部選択して「次へ」とか押したら自動でインストールしてくれますよね。あれ何やってんのか気になりませんか? 一方で、インストールしなくてもいいソフトもあります。適当なフォルダにzipファイルを展開したら使えるようになるソフトです。あれも逆になんでインストールなしで動くのか気になりませんか? 会社に入る前、そのインストールって何やってんのか漠然と疑問を持っていました。会社に入って、同期がソフトウェアを作ってる部署にいたのでインストールについて聞いてみました。今回は分かる範囲でその疑問に対して回答します。今回のインストールはWindows の場合、です。(Linuxがあんまり分からないとか言えない(-_-;) )

インストールの意味

記事を書くにあたってネット上にうまい記述がないか調べたのですが、以下の言い回しが非常に分かりやすいと思いました。

冷凍食品(ソフトウエア)を買って(ダウンロードして)くる。

解凍(展開、インストール)して食べられる(使える)状態にする。

インストールを行ったら、デスクトップのショートカットなりをクリックして、普通にソフトが使えるようになってますよね? その端末でソフトを使用可能な状態に設定するのが、インストールの意味です。

ソフトウェアが動く仕組み

またまた絵を書いてみました。一口にソフトウェアといっても多岐に渡りますから、この絵で表現しているのは一部のソフトウェアだと理解してください。絵の数字の順番は特に意味がありません。絵の表現が下手なので、順番をつけて矢印の意味を持たせたかっただけです笑

ソフトウェアを動かすには以下のものが最低限必要と考えます。

  1. OS(Windows とか Linux)
  2. コンパイルされたファイル
  3. 設定を保存しておく場所
  4. (必要であれば)プログラム実行環境

①OSは大前提

OSの役割として、CPUやディスプレイの制御を行っています。例えば、プログラムで文字を表示させるにはディスプレイが必要です。ディスプレイに文字を表示させる制御はOSで行っています。なので、文字を表示させるプログラムを書いたとして、ディスプレイに表示させるにはOSを介さないといけないのです。OSに「この文字早く表示しろ!」って依頼(命令)をしてOSが「はい、すぐにでも嬉!」ってなって処理するわけです。だから、何をするにしても、他の機械(ディスプレイ・CPU・メモリ・通信etc…)を使う上でOSは必須なんです。

②コンパイルされたファイル

ソフトウェアはプログラミング言語で記述されて作られています。プログラミング言語は人間に分かりよいために作成・表現されているため、そのままではコンピュータは理解できません。コンピュータに理解できる言語に翻訳することを”コンパイル”といいます。コンパイルされて初めて、OSに命令できるようになります。勿論ですが、コンパイルされたファイル群はソフトウェアを構成するメインの実態です。

③設定を保存しておく場所

これは特になくても動きますが、大抵のソフトウェアは設定を持っています。例えば、言語は何か、とか、文字を大きくする表示設定とか、です。これはある意味何でもいいです。よくあるのはWindowsだと、レジストリとか設定ファイルだと思います。設定ファイルは普通のテキストファイルだったりします。例えば「表示言語=Japanese」とかが文字で書いてあるわけです。設定ファイルを持たない場合は、レジストリを使います。レジストリはWindowsの仕様で、データベースのようなものです。”C:\Windows\System32\regedt32.exe” を実行すればレジストリの中身を確認できますので、興味がある方はどうぞ。適当に値を変えたらプログラムが動かなくなることもあるので注意してください笑

④プログラム実行環境

これは例えばC言語とかだと必要ないんですが、C#やJAVAとかだとOSに命令を引き渡すまでにさらに仲介者が必要です。C#は”.Net Framework” と呼ばれるソフトウェアがないと動きません。なぜなら C#は “.Net Framework” に使われている関数群を呼んでいたりと、それがあることを前提にして作られているからです。他にも、JAVAとかだと “Java Virtual Machine”(以下、JVM) が必要です。OSが違えば、「文字を表示して!」という一つの命令でも、命令の仕方が変わってきます。その違いをJVMで吸収しています。ソフトウェアの実行には、こういった実行環境がインストールされていることも必要ですね。

インストールでやっている事まとめ

ソフトウェアが動く仕組みが理解できれば、インストールでやっていることも大体察しがつくのではないでしょうか。大抵の場合、以下の事が行われています。

  • プログラムファイルをインストール先のフォルダに展開する
  • 設定ファイルやレジストリに個別設定を書き込む
  • ショートカットやサービスを登録する
  • プログラム実行環境を整える

だいたいはこんなところでしょうか。

「プログラムファイルをインストール先のフォルダに展開する」はその名の通りで、ファイルをコピーしてプログラムが使用するフォルダ配下を整えます。「設定ファイルやレジストリに個別設定を書き込む」については上の説明の他にも、”環境変数”と呼ばれる変数に追加したりもします。「ショートカットやサービスを登録する」もそのまんまですが、サービスについては少々分かりにくいところがあるので別途記事にしたいと思います。「プログラム実行環境を整える」は、インストールでやってくれることもありますが、環境は勝手に整えてって感じのインストーラもあるので、これはまちまちですね。

いかがでしたでしょうか? この記事を読んで少しでもインストールについてイメージを持ってもらえると幸いです(^_^)