前回記事、
で端折っちゃった、
Windows用のプログラムをLinuxで動かすための技術
についても、僕の見解を、キチンと書いときますね。
まず、前提の知識として、
アプリケーションプログラムは、
基本それ用に作ったOSの上でしか動きません。
なんで、Windows用、Mac用、Linux用のプログラムがあるのは、
それ用の専用のプログラムが、それぞれに作られていて、
それが動いているということです。
同じソフトが動いていると言っても、
そのOS専用のソフトが作られていて、
それが動いていることには、変わりがありません。
つまり、Windows用のアプリ(プログラム)をそのまま持ってきても、
LinuxやMacで動くわけではありません。
で、最近は、
メーラー(電子メールを送・受信するアプリ)
ブラウザ(ホームページを閲覧するアプリ)
ワープロ(ドキュメントを読み書きするアプリ)
等、普通のユーザが普通に使うアプリは、
似たような機能のアプリがどのOSにも準備されています。
だから、それをインストールすれば、
大概どのOSを使っていようと、
同じようなやり方で、同じような事が出来る
ようになってきています。
だから、特定のOSに縛られることは、少なくなってきています。
ただし、
一部の業務アプリ、
あるいは
ゲームなどの趣味性の高いアプリ
に関しては、
特定のOS用のプログラムしか準備されていないものがあります。
そのため、そのアプリを使うためには、
普通は、それに対応したOSのマシンを準備する必要があります。
しかし最近は、
異なるOS(プラットホーム)のソフトを
動かすための技術もあります。
![]() あと3年古いパソコンが使える本 [ 日経Linux ] |
では、当然
Windows用のアプリ(プログラム)をLinuxで動かす方法
を紹介しています。
方法はいくつかあるんですが、
直接Windows用のプログラムをLinux上で動かしてしまう方法で、
wineというのが説明されています。
つまり、この方法を使えば、
Windows用のプログラムを買ってくれば、
それがそのまま使えます。
さらに、
Windows用しか準備されていないプログラムも、
それがそのまま、Linuxでも使えるわけです。
そうなれば、無料のOSで事足りるわけですから、
お金を払ってWindowsを買う必要はありません。
ただし、動かすためにはアプリ(プログラム)毎に
色々設定をチューニングする必要があり、
現状では、一筋縄ではいかないようです。
今回、僕の経験から、そうなる理由を書いてみます。
もっとも、他のOSでの経験と、今となっては古い知識に基づいた、
想像なので間違っているかもしれません。
その点は、悪しからず。
以前、下記でプログラムとは何かを説明しました。
つまり、コンピュータに見せる手順書です。
ですが、これはコンピュータが直接読むためのもので、
人間には非常に読みにくい。
なので、普通その手順書は、もうちょっと人間にとって読みやすい、
プログラム言語(C言語とか、COBOLとか聞いたことありませんか?)で
人間が書いて、それをコンピュータが読める形に変換します。
この人間が読み書きする形式のものを、
プログラムのソースコード、
コンピュータが読むためのものを、
プログラムの実行形式と言います。
つまり、この実行形式が、プログラムそのものになります。
で、
ソースコードを実行形式に変換する作業をコンパイル、
それに使うプログラムをコンパイラ
と言います。
通常、コンパイラはOS毎に、準備されています。
つまり、ソースコードが出来たら、
Linux用のコンパイラでコンパイルすれば、
Linux用のプログラムが出来上がり。
Windows用のコンパイラでコンパイルすれば、
Windows用のプログラムの出来上がり。
Mac用のコンパイラでコンパイルすれば、
Mac用のプログラムの出来上がり。
つまり、プログラムのソースコードが出来たら、
それを動かしたいOS用のコンパイラで、
コンパイルすれば、
プログラムの一丁あがり!
です。
ね?簡単なことなんです。
そう、理想は、そういうことなんです。
でも、そう簡単に一筋縄ではいかないのです。
プログラムを本来のターゲットではないOSあるいはマシンで動作させることを、
移植作業、あるいはポーティングと言います。
でこれ、本来であれはコンパイルして、
動作確認すれば終わる簡単な作業
のように思えるのですが、
実際にやって見ると、そんなに簡単に終わる作業では無いんです。
それは何故か?
一言で言うと、バグるからです。
オリジナルのOSでは問題なく動作していたコードが、
移植した環境では、往々にして不具合を起こすのです。
つまり、プログラムというものには、
テストされた環境では正常に動作していても、
顕在化しない不具合が山のように隠れていて、
環境を変えたとたん、それが顕在化するものなのです。
ただし、バグといっても、
単純に、そのコードを書いたプログラマのミス、
とは言い切れないものも多くあります。
こんなプログラマの言い訳が、聞こえてきそうです。
言い訳1)そんな、OS毎の環境の違い把握できない。
言い訳2)これって、OS側のバグじゃ無い?
言い訳3)納期に追われる中、事前にそんなことまで考慮出来ないよ。
その昔、西暦2000年問題とかありました。
1999年の後、2000年これを下二桁で判定しているプログラムが、
00年になった途端、1900年と誤認してバグるってやつです。
これなんて、1番わかりやすい例なんで、
具体例として上げましたが、
典型的な、言い訳3)に該当します。
僕も、1980年代後半に作ったプログラムに
2000年問題を抱えたものがあり、
世紀末に慌てて対応した覚えがあります。
開発当初僕は、
このプログラムが10年後も使われているとは、
夢にも思いませんでした。
プログラマの将来展望なんて、こんなもんなんです。
さらに、
現在プログラマではない僕としては、
気兼ねなく、
もっと正直に言います。
実際にポーティングすると、
もっとどうしょうもないバグもいっぱい出ます。
プログラマ時代は、恥ずかしくて言えませんでしたが、
今まで正常に動いていたのが不思議なくらいのバグを見つけたことも、
1度や2度ではありません(*^ω^*)
プログラム開発とは、手順書というコードを作ることそれ自体より、
多様な環境で準備した、多様なテストケースで動作の検証を行うこと、
つまり準備と検証
に、多大な時間と労力がかかる作業なのです。
これこそが、
日々プログラマのやっていること
と言っても、過言ではありません。
つまり、新たなOSでプログラムを動かすということは、
その環境で検証し、動作を保証すること
に他なりません。
すると、Windows用のプログラムをLinuxで動かすということは、
そのプログラムの製造メーカーがバグ潰しもしていなければ、
動作の検証も保証もしていないプログラムを、
ユーザの責任で動作させようとしていること
にならないでしょうか?
つまり、
そういうことではないかと、
僕は推測しています。
つまり、プログラム毎に必要なチューニングとは、
とどのつまりバグ回避策ではあるまいか?
と言うことです。
僕はこれを使う必要を感じてないし、
実際使ったことはないのですが、
きっと大変な手間がかかるんじゃないかと思います。
いくら無料で使うことが出来ても、
本来ソフトウェア開発メーカーがやるべき
検証や、デバックまで請負っていたのでは、
割りが合わないのではなかろうか?
そう思うわけです。
そんなわけで、
そのOSでなければ動かないアプリケーションを使う必要がある
のであれば、
素直にそのOSが動作するマシンを用意する
のが、良いのではないかと、現状では思っています。
もっとも、誤解のないように言うと、
コンパイラさえ変えれば、ほぼ
同じソースコードのプログラムが、違うOSで動く
現在の状況は、相当の技術の進歩ではあるんです。
かつては、 プログラムとは、
特定のOS専用に、多大な手間をかけて作るもの
でした。それが、
コンパイラさえ変えれば、ほぼ同じプログラムが、どのOSでも動く
ようになってきた。
そういうことなんです。
僕の、先の発言
「OSなんて、なんでも良い!」
は、それを踏まえてのものです。
つまり、
コンパイラでコンパイルすれば同じアプリ(プログラム)が動くんだから、
「OSなんて、なんでも良い!」
ってことなんです。
そういう意味では、将来的には、
同じアプリ(実行形式)が動くんだから、
「OSなんて、なんでも良い!」
って時代に向かっていくことは確かだろうと思います。
その辺考えて、
手間をかけずにお金もかけない、
そんな落とし所が、この辺かなと
個人的に思っているってことです。
少なくとも、
「古くなったから、そろそろ新品に買い換えよう!」、
パソコンはそういう商品では無くなってきたってことです。
ためのメールセミナー>
「このメルマガを読むと、将来に関して、漠たる不安を感じ
ているあなたは、自信がなくても、勇気を持って前に進むこ
との重要性を理解できるようになります。なぜなら、我々の
(つまり「あなたの」)先祖が、自立のために立ち上がった
勇気のある人々であったことが分かるからです。
それにより、まずは、自分の先祖に関して自信が持てるよう
になる。自信がなくても、勇気を持って前に進むことの重要
性を理解できるようになります。」
教科書に書かれていない、「日本の本当の歴史」を知るため
にも、ぜひこのメールセミナーを読んでみてください。
1日目 信教の自由の日に関するネット上の文章への反論
2日目 私が考える日本教とは?
3日目 信教の不自由な宗教と信教の自由な宗教
4日目 先の戦争の悲惨な体験を語り継ぐな
5日目 現代の鶴田浩二 ー傷だらけの人生ー
6日目 今までの社会人生活の中で、現在が一番満足度が高い
7日目 顧客満足第二
※必要がなければいつでも配信解除できます。
※迷惑メールを送りつけたりなんてことは当然ありません。
※ご登録いただいたメールアドレスがどこかに流出することなどは一切ありません。責任を持って管理いたしますので、どうぞご安心ください。
⇒登録はこちら(リンク )