| このページは介護のお仕事| 介護のお仕事情報館が 2006年 12月 15日 10時04分40秒 にクロールしたキャッシュ情報です。 |
修正とは?
[ 68] MS Reviewer's Guide bug fix
[引用サイト] http://www.pp.iij4u.or.jp/~michiro/unix_int_fix.shtml
|
UNIXとWindows NTを比較した文章は時々見掛けますが、最近インターネットニュースでMicrosoftがこの種の文章をWWWで公開していると聞き早速見てみましたが、 明らかに悪意を持ってUNIXを扱き下ろしています、そしてWindows NT Serverを事実以上に素晴らしい物として宣伝をしています。 そこでこのページ(以下オリジナル文章と記述)を修正して正しいUNIXとWindows NT Serverの比較をしてみたいとおもいます。 修正版は文章の量がオリジナルより多いので表に組み込むと読みづらいと思いましたので表からはずしています。 なおここで言うUNIXとは商標としてのUNIXではなく、UNIX互換のオペレーティングシステム全体を指すこととします。 「UNIXは、1980年代後半頃から、ハードウェアの技術革新とともに、エンジニアリング向けワークステーションとして発達してきたサーバーOSです。」 UNIXはサーバ用OSではありません、サーバとして使うと優れた性能をだすのでサーバとして使われることが多いだけで、クライアントとしても使われています。 Windows NTは後から作られたもののUNIXなどの古くからあるOSの良いところを使い悪いところを捨てるという作業に失敗してしまいました。 引き摺ってしまったのと同様に、Windows NTもWindows 3.x、Windows 9xとの互換性を持たす必要から自由な設計ができなかったからではないでしょうか? の会員に送られてくるUNIX Products DirectoryというUNIXのアプリケーションカタログは、1800ページ以上もあり数多くの製品が載っています。(1995年版、現在はCD-ROMになりました) そもそも「アプリケーションの種類は多い?」という設問自身がナンセンスで数を比べても意味がありません。 まずオリジナル文章で書かれている、UNIXでは「一般の利用者が恩恵を受けるケースはほとんどない」といのは大嘘である。 例えば、一般の利用者でいまや電子メール、WWW、データベースを使わない者は非常に少数であろう。UNIX上では、これらのサーバ、クライアント共にすぐれたフリーソフトウェアがあり使われている。 さらに、クライアントとしてWindowsを使っている人でさえも、インターネットへアクセスした瞬間にUNIX上で動いているフリーソフトウェアの恩恵を知らず知らずに受けています。 実際は"ソースコードが提供されているので改造ができる"であり、改造しないで使うのが普通でプログラミングの知識は必要ではない。 Windows NT Serverは小さなパソコンショップでは無いことが多いですが、入手に苦労することもないでしょう。 UNIXの書籍は非常に多く、大きな書店に行けばわかりますが、Windows NTについて書かれた書籍よりもUNIXについて書かれたものの方が多く出版されています。 一方Windows 95,98の初心者向けの書籍は大量にありますが、Windows NTの書籍(特にNT Server)は初心者向けの本が少なく技術者向けの書籍が目につきます。 価格について言えば、技術者向けの書籍はUNIX向けもWindows NT向けもどちらも高価であります。 「一般的には、文字入力によってプログラムを操作するCUI(キャラクタ・ユーザー・インターフェイス)を採用している。」 UNIXではGUIで操作をしない部分が多いのは本当です、そのため初心者にとって取っつきにくいという面は否めません。 答は、GUIなら操作しやすいということはないからです。CUIの方が操作がしやすいケースはたくさんあります。 UNIXではシェルスクリプト等を使えば5分もかかりません。(シェルスクリプトを書く時間も含めて、ただし処理が数秒程度ですむ場合) "要するにGUIがすべて"であるようなユーザインターフェースは使い易くないという事です。(特に上級者に) Silicon Graphicsなどは皆Windowsのエクスプローラのようなインターフェースを持つプログラムを持っています。) さて、GUIとCUIの比較とは別に初級者では◎とした評価を上級者では△とした理由のもう1つの大きな理由は、カスタマイズ機能が貧弱な事を挙げておきます。 例えばWindowsであるウィンドウをアイコン化しようとして、右上の小さな□ボタンを押そうとしてイライラしたことはないでしょうか? Windowsでは、こういった基本的な操作のカスタマイズは不可能です。(もしやり方を知っている方は教えてください) UNIXでは、この操作を含め、ほとんどの操作をユーザが好きなようにカスタマイズできるので上級者にとって非常にありがたい事です。 ユーザ事に操作環境をカスタマイズするという点ではUNIXはWindowsと比較して大きく優れています。 UNIXまたはWindows NT Serverをサーバとして使う場合の設定に関する知識はどちらも同じレベルのものが要求されます。 例えば、"IPは何であるとか、DHCPサーバを設定するには動的に割り当てる部分がXXで静的に割り当てのはここで"とか"ネームサーバは何でメールサーバはこう設定して"とかいった知識です。 UNIXの操作は普通の大学生が普通に使っているぐらいなので、学ぶのはそれほと難しいわけではありません。「高度な専門知識を必要とする」は嘘です。 "UNIXを使うのは難しい"と言っているのを聞いたら、それより難しい事はおそらく(まともに)出来ないであろうと思って警戒する事です。 まず、「DHCPという機能を使って自動的に割り当てたり、データベースを管理するDNSの管理を簡略化することができる。」 という部分では、DHCP(に限らずほとんどのネットーワーク関連の)の実装(動くプログラムを作るという事です)はUNIXが先で、Windows NTの優位性にはなりません。 「DHCPという機能を使って自動的に割り当てたり...」の部分ですが、これはMicrosoftのDNS + WINS + DHCPの組み合わせで、WINSの情報を自動的にDNSに登録する(この機能はOFFにできない?)機能の事だと思いますがこれはなかなか凄まじいもののようです。(笑) 例えば、"のーてくさーば"という日本語のホスト名を付けると、シフトJISのまま"のーてくさーば.xxx.co.jp"などとDNSに登録されます。外部向けのネームサーバにシフトJISのホスト名なんかが登録されていると恥ずかしいので (笑) NT Serverを使っている人は注意が必要です。 普通はクライアントとして使われるPCのユーザはホスト名をいい加減に付けてくれます。ですので日本語のホスト名や同じホスト名を付けれくれたりといろいろやってくれまして、WINSの情報をDNSに自動的に登録されるとDNSの情報が滅茶苦茶になります。ですので、ホスト名の付け方は管理部門でしっかり管理しておかないとだめです。要するに管理の手間は減らないという事です。 他にもMicrosoftのDNSはちゃんと動かないという話は良く聞きます。なかでも、"上手く動かない(設定が悪いのではなく、バグで動かない)ので色々やっているとDNSの設定プログラムが突然死んで、DNSのデータベースが消滅した"という例を教えた下さった方がいました。 UNIXユーザには信じられない事故ですが、DNSがちゃんと動かないからWindows NTをLinuxにリプレースしたという話(別の話です)はうなずけるものがあります。 一方UNIX側は、「データベースの監視機能は? ストアドプロシジャのデバッグ機能が存在していないので、データベースとの問い合わせが予想どおりに動作していない時でも、データベースを視覚的に監視する手段がない」とあります。 なぜかアプリケーションプログラムであるデータベース機能の事が書いてあるように見えますが、これはどのデータベースプログラムの事でしょうか? オリジナル文章を書いた人は何を書いていいのか良く分からないので適当に何かを書いたとしか思えない内容です。 さて回答不明というのもおもしろくないので、"管理者のネットワークでの運用性はどうか?"として評価してみます。 NTが頻繁に落ちました。その結果リセットボタンを押しに現場に行かなくてはなりません。(このケースでのクラッシュでファイルシステムまでクラッシュしたというケースも聞いています) 例えこの不安定さがアプリケーションによるものであってもOSがクラッシュするというはお粗末なかぎりです。 また、セキュリティの観点から言うと、この手の製品はNetBIOSのポートを空けておく必要があり、このポートを空けておくのはセキュリティ・ホールを空けておくのと同じことなので使うわけにはいきません。 これもとても遅いのですが、最初からネットワーク経由で使われることを想定して作られたX Window Systemと違って、この手のソフトはビットマップデータを転送しなくてはならないので遅いのは仕方がないのです。10Mbpsのイーサネット以上の速度がないと使えないでしょう。 中企業以上の規模になるとオフィスが1個所でなくなるので、サーバを複数台置くとどうしてもリモートでのメンテナンスが必要になってきます。 基幹業務に使う場合はメンテナンスをしないわけにはいかないですから非常にコストがかかることになってしまいます。 UNIXは遠隔操作でのメンテナンスは非常に楽でtelnetでログインして(インターネットを経由した場合は通常セキュリティの観点から 等を使います)行うことができます。Windows NTではCUIが貧弱なためtelnetによるメンテンスは難しく、また設定ファイルがテキスト形式ではないため、このようにGUIのない環境では設定の変更は不可能です。 リモート(遠隔操作)でのメンテンスでは、UNIXはWindows NTに対して圧倒的なアドバンテージがあります。 「一般的には、C言語をはじめとして用い、プログラミング設計書を元にした従来型のプログラミング開発となるため、専門知識を必要とし、開発時間も掛かる。高価なシステムになってしまいがちである。対話的なプログラム開発は、不可能。」 Windows上でのプログラミングでVC++を使うにしろVBにしろプログラミングにはWindowsに関するかなりの知識を要求されます。 気になるのは最近VBのプログラミングは易しくC言語によるプログラミングは難しいという風潮です。C言語は特に難しい言語ではありません。 JAVAを始めとしてC言語に似た文法を持った言語が多いことを考えると、C言語はポピュラーな言語である事がわかります。 ユーザとしてはC言語が難しいからVBを使っているという開発者(社)は警戒する必要があります。XXが難しいからと逃げている人(会社)は腕が悪いと考えて警戒したほうがよいでしょう。 さて、開発ツールに関してはUNIXではC言語の事しか書かれていませんが、実際には実用になる多くの言語がUNIX上で使えます。 Windowsも開発ツールとして良いものもあると思いますが、開発用の言語、ツールの質や量、情報(書籍の多さやフリーソフトウェアのソースを参考にできる)の多さなどを考えるとUNIXの方がずっと優れているのでUNIXとの比較から△にしました。 UNIXの開発ツールが素晴らしいというのは、UNIX上で動作する素晴らしい数々のフリーソフトウェアにより実証されていると思います。 「教材となる市販本も少なく、構築は難解である。利用者の環境にあわせてカスタマイズする必要がある。」とあるのは、 「UNIXは、ソース形式の配布なので、管理操作や、インストールは、エディタなどを利用してキーボード入力を行いテキストファイルを編集することになる。」 テキストエディタも使えない人がWWWサーバを運用するとも思えないですし、この点によるデメリットは少ないと考えています。 Netscape社のWWWサーバはWWWベースで設定ができるので、こういった設定方法が好みならこれを使えばよいかと思います。 また、WWWサーバとしてはフリーソフトウェアであるapacheが圧倒的なシェアを獲得していて、そのシェアをさらに伸ばしつつあり、そのほとんどはUNIX上で動作しており、 MicrosoftのIISはシェアを減らし始めているという事からもオリジナル文章の評価は信用できない事がわかると思います。 まずイントラネットという用語ですが、これはインターネットで使用できる技術を使い社内(学内など)だけで使う事を言います。 データベースとWWWと連携させて実用的なシステムを組み上げるのにはそれなりの技術とコストがかかりますが、BackOfficeを買いさえすればそういったシステムがすぐにでも使えるような錯覚をおこさせるような書き方がされています。 この部分ではUNIXもWindows NT Serverもどちらも手間が掛りますが、UNIXの方が開発コストが低いし、性能がよいのでその結果で修正評価を決めました。 校内のイントラネットを構築するには、高価なパッケージを購入するか、難解なプログラミングが必要となる」この中の、 「高価なパッケージを購入するか」を"BackOfficeを購入して"と読み替えるとWindows NT Serverを使った場合どうなるか正しく認識できます。 新たなセキュリティホールが見つかった場合は、パッチが出るまでに時間がかかるため(もしサービスパックなどを待っていたら半年以上セキュリティホールが空いたままになる)その間は攻撃され放題です。 BSD/OSでは数日中にパッチが出る。もしかするとセキュリティホールが発見された日のうちにパッチが出るかもしれません。(実際にそういう事があったと聞いています) 経験を積んだUNIX技術者はフリーソフトウェアを組み合わせて安価に強固なシステムを作り上げる事が出来ます。 例えば、インターネット上でサーバとして使うマシンにはNetBIOSの機能は不要であるがNetBIOSを完全に停止することは出来ない。(出来る方法があったら教えてください) NetBIOSへのアクセスはルータでフィルタリングすることにより保護する事ができるが要らない物が動いていること自体セキュリティホールが有るという不安要素となります。 さらに(非常に)高価なソフトウェアを購入する必要があるなどコスト面でも不利です。(こういったソフトウェアはUNIX用も高価である) 参考までに、セキュリティを強化していないUNIXとWindows NTは共にC1クラスのセキュリティになる。Windows NT 3.5はC2セキュリティの認可を取っているが(ただしネットワークに接続しないという条件付きなので無意味)NT 4.0は取っていない。 UNIXは各ベンダにより異なる。なおC2クラスではセキュリティの監査機能があるだけでセキュリティ自身は強化されない。 自分はWindows NTはBクラスのセキュリティの認可を受けるのは不可能と考えています。(以下で述べるgetadminというプログラムの存在が理由です) ※ここで書かれているC2やBといったセキュリティクラスは米国のNCSC(National Computer Security Center)の発行した文書、通称オレンジブックと呼ばれるもので定義されています。 このなかでセキュリティクラスはA,B,C,Dの4つがあり、Aが一番厳しいセキュリティガイドラインで、Dクラスはセキュリティ機能のないWindows 9xやMacintoshがこれにあたります。それぞれのクラスの後ろに付く数字は数字が大きいほどセキュリティが厳しくなります。 もう一つ決定的とも言えるWindows NTのセキュリティの欠陥を指摘してくれた人がいますので書いておきます。 Windows NTは\WinNTとか\Program Filesというシステムディレクトリやその中のファイルが誰でも書き込み可能な状態になっているという事です。(ためしにguestでログインして\WinNT\Systemの下のファイルを消してみると、現在ロードされていないファイルは消せてしまう。酷いなこれは。) これでは、一旦ログインしたらだれでもOSを壊せます。OSをこんな状態にしておいてセキュリティ云々という資格はありません。 「アクセスする権限のない利用者が不正にアクセスした場合、自動的にマシンを使えなくする自動利用停止や」 "getadmin"とは一旦一般ユーザとしてログオンされたらシステム管理者の権限を取られてしまうという恐ろしいセキュリティホールを突いたプログラムで、 次にログインしたときに管理者の権限を取るというものです。これはプログラムのバグによるセキュリティホールではなくセキュリティの設計上のバグですので簡単に直らなかったのでしょう。(Bクラスのセキュリティはこのような設計を許しません) 現在はgetadminを動かすとWindows NTが停止してしまうのですが、普通は不正アクセスを拒否してその記録を取ればよいのですが、 推測ですがこれができなかったのではないでしょうか? それでしかたなく停止させてしまうのではないでしょうか? 「メッセージは暗号化されずに配信される。また、不正にアクセスしたユーザーは目視によって防ぐしかない等」 メッセージという言葉が何を意味しているのはちょっと良く分からないのですが、一般的な話として、暗号化していないというのはWindows NTも同様でしょう。暗号化することはUNIXもWindows NTも両方できます。 したがって、使われなくなった古いマシンを持ち出して使う事もできるし、高価で高性能なワークステーションを購入することもできる。 Windows NT 4.0では旧式の486マシンでは使い物にならず、高価で高性能なワークステーションもない。 Windows 2000はさらに高価なハードウェアを要求するであろうからスケーラビリティはさらに狭まる傾向にあります。 UNIXワークステーション向けのソフトウェアはWindows NTのものと比較してたしかに高価で売り物のソフトウェアを買うだけというケースではUNIXワークステーションは不利です。 しかしフリーソフトウェアを利用して商用のWWWサイトを運営している身としてはWindows NTの方が高くつくケースもあるという事を書いておきたいと思います。 買ったソフトウェアの値段だけの差ではなく、開発に掛るコストを入れるとかなりの差になると考えています。詳しくは後述します。 またBSD/OSの方では1台のマシンでapache,PostgreSQL,sendmailを動かしていますが、Windows NTでは1台のマシンでSQL ServerとExchange Serverを同時に動かして運用するのは無理があるので、2台のマシンが必要になりハードウェアとOSのコストは倍になります。 Windows NTでは「技術者の養成も容易であるためコスト安である。」と書かれていて、UNIXでは「技術者の養成も困難であるため、コスト高となる」とあるのは大嘘です。 これは技術者の養成はOSとは何の関わりもない事を示しています。人間の資質と教育の質により左右されると考えます。 開発コストは選んだOSにより変わります。これは同じ技術力と労力でも得られる結果がOSによって違うからです。 比較対象がWindows NT Serverであることを考えるとサーバ用の評価だけでよいのかも知れません。 さて、フリーのLinuxやFreeBSDを使わなかった理由ですが、BSD/OSは何年も使っていて使い慣れているからです。LinuxやFreeBSDでも同等の信頼性と性能を出せると考えています。 あと、時々UNIXの方が開発コストがかかるという話も聞くことがあるかと思いますので、それの説明をちょっとしておきます。 ここで言われるUNIXとは1つのプラットフォームではなく、Solaris(SUN)、HP-UX(HP)、AIX(IBM)等の複数のプラットフォームを指します。この例だと3つのプラットフォームでの開発になり、1つのプラットフォームと比較して開発コストがかかるというわけです。ただし、この3つのOSは別のものですが似ていますのでWindowsとMacintoshの両方の開発をするよりはずっと楽でしょう。 もう1つUNIXはサポートコストが掛るという話も聞いたことがあるかもしれません。この理由はUNIXは古いバージョンでもちゃんと見捨てること無くサポートされるので開発側は色々なバージョンの機械を用意しておかなくてはならないというため手間が掛るのが理由です。 自分の仕事をしている所でも、未だにBSD/OSの2.1を使っていて、これで十分です。(2.1、3.0、3.1、4.0が出ているので3つ古いバージョン)ユーザは一旦動かしたら(トラブルが出たらいやですから)必要のないかぎりバージョンアップなどはしたくないものです。 例を挙げると、自分の友人が勤ているある金融機関では、Windows NT 3.5を使っているそうですが、そろそろWindows NT 3.5が動くハードウェアが手にはいらなくなってきたので苦しいそうです。(メーカが売らないのではなくて、NT 3.5が新しいハードウェアで動かないからです)それでNT 4.0を混ぜると今度はNT 3.5との非互換性で苦しむ事になります。そうかといって全部NT 4.0にするとNT 4.0は重いのでハードウェアも買い換えなくてはならないため、べらぼうな金額になるのと今まで動いていたものが動かなくなるというトラブルに見舞われるのは必定なためどうするか難しい所だそうです。その友人はメインフレームに戻った方がよいかも知れないと言っておりました。 どうですか? UNIX側はサポートにコストが掛るのではなくて、まじめに商売をやっているだけだと思いませんか? それに対してWindows側は負担を顧客に押し付けてしまっているので、その分のサポートコストが浮いているのです。酷い話だと思いませんか? 管理コストに大きな影響を与える部分に、サーバの台数、サーバの安定性、メンテナンス性があると考えます。 そのサーバがよく落ちたり、遠隔操作によるメンテナンスができないのでいちいち現場にいかなくてはならない場合です。 遠隔操作によるメリットは中企業以上の規模や大学などの様に広い敷地を持つ場合はかなり大きくなるでしょう。 そして一番大事な安定性です。サーバが落ちてその間業務がとまったら大きな損失になりますし、よく落ちるマシンをたくさん使っていればメンテナンス要員が多く必要になります。 Windows NT Serverは安定性ではUNIXに全く及びません。Windows 2000になってもこれは解決されない(どころかもっと悪くなる可能性がある)でしょう。 なぜならばコードの量とバグの多さは比例します。Windows 2000はWindows NT 4.0の何倍ものコードで構成されているそうです。 安定性を求めるにはコードの変更量を少なくしてしっかりテストをするしかありません。Microsoftの仕事のやり方はこの正反対を行っていますので安定性を求めるのはむずかしいのです。 いくら管理ツールを充実させても、基本的な要素である、台数の少なさと安定性をクリアしなければ管理コストは減りません。 そして、「Microsoft Windows NTServer4.0の方が、コストパフォーマンス、サポート面において優位かつ信頼できるシステムであるといえるでしょう。」 昔メインフレームを使っていると非常にコストが掛り処理も遅いという現実から分散処理という事が言われ、メインフレームをもっと小さなコンピュータにリプレースするのが流行りました。 そして実際に分散処理をするためコンピュータの台数を増やしてみると今度は管理コストが馬鹿にならないぐらいかかることもわかってきました。 このとき各UNIXワークステーションベンダはインテルのプロセッサを積んだ、俗にいうPCの高性能化と低価格化に付いていけなかったのです。 さて1999年現在流れは再びUNIXの方に向いてきました。LinuxやFreeBSDを使うとかつてのワークステーションが競争力をなくした原因である価格の問題がクリアできるからです。性能では依然としてUNIXが勝っています。 |