Milkのメモ帳

日々の思いつきを忘れないようにのメモ用です。

Milkのメモ帳

なぜ昔のアプリ(アプリケーション・ソフトウェア)は使えなくなるのか?


f:id:maxminkun:20160614093739j:plain

こんちは。一応、SEをやっているMilkです。

さて、今回はIT用語解説シリーズとして、「昔のソフトが使えない!!(怒)」を解説したいと思います。

私の専門はWindows ということもありますので、一応はWindowsを焦点にしてお話しますが、他のOSでもだいたい同じ話じゃないかな?と思います。はい。
(スマホアプリも同様の原因で対応しなくなったりします。)


アプリ(ソフトウェア)はどのように作っているか

アプリ(ソフトウェア)とは、前回にお話したようにHDD上に保存されているデータです。

maxminkun.hatenablog.com

では、そのデータって、そもそもどのように作ってるんでしょう?

プログラムとはコンピュータへの命令をつらつらと書き連ねたものです。そして、それを変換ツール(コンパイラーと言います)を使ってコンピュータが理解できるバイナリデータというデータに変換(makeと言ったり、buildと言ったりする)します。

そして、出来上がったデータを特定のパソコンに移す作業、つまりバイナリデータをHDDにコピーすることを、インストールと言います。

さて、そもそもプログラムは全部その人が一から書いていると思いますか?

実はそんなことはないのです。

他人のプログラムを利用することが出来る

少し例えで話してみましょう。

貴方は自分のお部屋をお掃除したいと思っています。そのためには、ほうきが必要です。あとゴミをいれるゴミ袋も必要ですね。

では、ほうきとゴミ袋を作りましょう!!とはならないはずです。

きっと、ほうきを誰かから借りてきたり、場合によっては買ってくるということをするはずです。貴方の目的は、あくまで掃除をするということですから。

プログラムを作成するときも同じで、ある動作をして欲しい。でも、既に一部分は同僚が作ってくれているプログラムがあるのでそれを利用する、または、そういったプログラムのパッケージを販売しているところから購入して組み込むということをしているのです。

車輪の再発明は必要ないというやつです。

ライブラリ

プログラム言語には幾つも種類があり、各々にある程度の歴史があります。すると、だいたいやりたいことが同じのものというのが出てくるのです。

例えば、並び替えをしたいなとか、ある文の中からキーワードを抜き出したいな・・・とかとかです。

こういった皆やりたいことは、既に誰かが作っているんです。すると、皆が使えるようにそれをまとめておこう!!となります。

それがライブラリと呼ばれるものです。まぁ・・・そのままですね。様々な本が集められている図書館のように、利用可能なプログラムが集められたプログラムデータ群です。

f:id:maxminkun:20160614102428j:plain

.Net Framework

さて、ここからはWindows 個別での話になります。

Windows 95 が大ヒットとなり、Windows 98 、Me とMicrosoftはOSを更新してきました。

しかし、Windows XP で大改革を行うことになります。

Windows のソフトウェア開発で使うライブラリを、「.Net Framework」というライブラリにまとめるよ!と発表したのです。

そして、これは現在のWindows 10 まで引き継がれています。

そこまではいいのです。そこまでは。


ただ、若干問題が出てくるのは、「.Net Framework」のバージョンが上がっているということなんです。

以下のようにバージョンは上がって行きました。

  • .Net Framework 1.0
  • .Net Framework 1.1
  • .Net Framework 2.0
  • .Net Framework 3.0
  • .Net Framework 3.5
  • .Net Framework 4.0
  • .Net Framework 4.5
  • .Net Framework 4.6

現在、Windows 10 に標準搭載されているのは、.Net Framework 4.6 です。

バージョンが上がるって良いことなんでしょ?

セキュリティ面での更新や新しいライブラリの追加など、確かに良い点もあります。

ですが、万々歳とも行かないのです・・・

例えば、.Net Framework 1.1 をライブラリとして利用していたソフトウェア(Windows XPの頃のソフトとか)があるとします。これを今のWindows 10 で動かそうとすると無理です。

その理由は、

  1. .Net Framework 4.6 は 1.1の内容を含んでいない。
  2. .Net Framework 1.1 は最新OS(Windows 10)では動作保障対象外となっており、ライブラリをインストール出来ない。

と言った点があります。

これを動かせるようにするには、低いバージョンのライブラリをインストールするか、ソフトウェアを再度新しいライブラリで作り直す必要があります。

これが昔のソフトウェアが動かなくなる理由その1なのです。

上位互換のはずなのに動かない?

今のWindows にインストール出来るライブラリは .Net Framework 3.5 以上だと思われます。(個別のOSでちょっと違うので、ざっくりと話しますね。)

基本的に、上のバージョンのライブラリは下のバージョンのライブラリを包含しています。

ですから、今の時点で作成したソフトウェアは、これからOSが上がっていってもちゃんと動くとソフトウェア開発者は思っていましたし、Microsoftもそのように発表していました。

しかし、ここで認識のズレが生じたのです。

Microsoftは、下位バージョンの手直しを上位バージョンで行っていたのです。


うん?どういうこと??

言うならばこういうことです。先ほどライブラリは図書館だと言いました。貴方は昔読んだ本(洋書で和訳された本の設定にさせてください。)が懐かしくなり、もう一度本を借りに行くことにしました。

同じ名前で、表紙も同じ懐かしい本を発見!よーし、借りてお家で読むぞとワクワクしながら帰ります。

さて、帰り着いて表紙をめくると、なんと!訳した人が代わっているではありませんか!

あの懐かしの印象に残っているフレーズが、違う人が訳したために全然違うフレーズになっています。これは残念です。


つまり、上位バージョンの.Net Framewworkは、今までと変わらないよと言っていたのですが、動きが一部変更されていたのです。でも、名前が同じだし、プログラムでの利用の仕方も同じであるため、まさかライブラリの中身が書き換えられているとは気づきません。

実際にソフトを動かしてみて、フリーズしたり挙動がおかしくなって初めて分かるのです。

これが昔のソフトウェアが動かなくなる理由その2です。


最後に

ソフトウェアが動かなくなる理由はこれだけではありませんが、ここであげた事情で動かなくなる確率は高いです。

父親が私に対して、「昔買ったCADソフトが動かない!なんでだよ!!このソフト作ったやつは最悪だな!」と言ってきましたが、「それはMicrosoftさんの事情だからなぁ・・・ソフトウェア会社を怒るのは酷な話だよ。」とやり取りしたことがあります(笑)

まぁ・・・一般の人から見れば、ソフトウェア会社だのMicrosoftだのは関係なくて、ソフトが動かない!!(怒)という現実だけなんですけどね。

実は、裏側にはこういう事情があるということでした。



それでは、今回はここまで!

こんなIT用語やIT技術を解説して!!って質問はいつでもどうぞ。


それでは、adios!!