Windows

Windowsとは

世界を変えたWindows

Windowsは、世界を変えたOSであると言えるでしょう。Windowsが販売されて人々が使うようになったことで、この世界は劇的に変わり、進歩しました。
IBM PC/AT互換機では、以前はMS-DOSを搭載した「シングルタスクのコマンドOS」が主流でした。これは今のLinuxにもみられるような「黒画面でキーボード入力をしてコマンド実行する」OSです。パソコンを使うのは一部のホビイスト向けでした。
しかしながら、Windowsが出たことで、人々はマルチウィンドウ環境で、マウスを使ってメニューからアイテムを選び、アイコンをクリックし、文字を入力する部分をダイレクトに選択して、右クリックやダブルクリックを使いながら「直観的な操作でOSを使える」ようになりました。
こうしたウィンドウ操作によるGUI環境というのは、Xeroxパロアルト研究所アラン・ケイなどが考えたもので、それがAppleMacintoshの開発に繋がり、それをMicrosoftが模倣して作ったのがWindowsです。
僕も、若い頃はWindowsとともに育ちました。小学校の頃にはWindows 95/98/Meなどの9x系や2000などのWindowsを使って、MS-Office 2000などを操作していました。
たとえば、Wordで学校の舞台の脚本を作ったり、Excelで当時流行っていたモンスターファームというテレビゲームの攻略本のデータを入力してデータベースのように並べ替えるようにしたり、PowerPointで図形を描いたり、ペイントで迷路をたくさん作ったり、マインスイーパピンボールというゲームで遊んだり、ペンタブレットを使ってモンスターファームのキャラクターのイラストをなぞって描いたりしていました。
また、中学生ぐらいになると、Perl/CGIで作られたネットゲームで遊んだりし、自分でもそうしたゲームを作りたいと、PerlDelphiなどの開発環境を導入して努力していました。
また、Windowsはこの世界のIT技術を支えています。
会社のビジネスで使われるワープロ表計算などのビジネスソフトは、MS-Officeが標準的です。何をするにも、どこの会社でも、WordとExcelPowerPointを使います。また、Webブラウザを使ったインターネットの「ネットサーフィン」は、Windowsで行われることが多く、昔からWindows上のIE以外のNetscape/MozillaOperaのようなブラウザを使うと、ホームページが意図通りに表示されないことが多くありました。フリーソフトも、Windows向けに作られていることが多く、タブブラウザなどはIEコンポーネントを使用しているため、Macなど別のOSでは動きません。
Windowsは「Windows API」という独自のAPIを用いており、Windows向けに開発したアプリケーションを他のMacLinuxのようなOSで動かすことは原則できません。そのアプリケーションの開発者が、クロスプラットフォーム向けに別のOSのためのコードも書いてある場合に限ります。あるいは、UNIX向けに作られたアプリケーションは、libcのような共通のAPIのみを使っている場合か、Cygwinなどの互換レイヤーを使う場合に限って動かすことができます。最近はmacOSUNIXの基盤を使って開発されているため、UNIXMacの間ではgccPerlなど共通のアプリケーションが動くこともありますが、GTKなどを使っている場合には同じルック・フィールで動かすことができません。
そのため、Windowsアプリケーションを使うためには、多くの場合MicrosoftからWindowsを購入する必要があります。
WindowsWindows 95の登場時点から大人気で、「猫も杓子もWindows」状態でした。それ以後はドットコムバブルというのがあり、IENetscapeが激しい「ブラウザ戦争」と言われる競争をし、Windowsに付属させることでIEが勝利しました。そうした成功から、ビル・ゲイツは「世界一の金持ち」である時代が長かったです(今の世界一はアマゾンのジェフ・ベゾス)。

標準OSゆえの功罪

そんな素晴らしいWindowsですが、標準OSゆえの問題があります。
まず、APIがクローズドである、ということ。Windowsは、商用OSであるため、LinuxのようにAPIオープンソースで公開されていません。Windowsアプリケーションを作るためには、Windows APIMFCのようなMS製のAPIを使う必要がありますが、公開されていないため、どのようにAPIが作られているか分からず、それを自分で作ることもできません。Windows APIは、「Windowsアプリケーションを作るためにはこのような命令の呼び出し規約に従いなさい」といったプログラムであるため、プログラミングをしてWindowsアプリケーションを開発しているのに、実態はWindows APIを「呼び出しているだけ」になり、「自分で作っているように見えて、ただWindows APIを使っているだけ」になってしまうのです。
もうひとつの問題は、囲い込みの問題です。MS-Officeのファイル形式は、世界中で標準になっており、MS-Officeで作られたデータファイルを読み書きするためには、原則MS-Officeが必要です。別の会社が作っている互換Officeもありますが、多くの場合さまざまな理由から使い物になりません。そのため、MS-Officeのファイルを読みたければ、WindowsとMS-Officeを購入しなければいけません。多くの家電量販店で売られているパソコンには、WindowsとMS-Officeが最初から搭載されています。
このような問題があるWindowsですが、一向に別の会社が同じものを作る気配はありません。それは、「作るのが非常に難しい」ことと、「売っても誰も買わない」ということです。OSを作るのには、宇宙開発レベルの技術力が必要です。また、Windowsが標準になっている現代のIT社会で、別のOSを独自規格で開発しても、使う人はいないでしょう。
このWindowsに対して、ある程度競争相手になり得る集団があります。それが、オープン系の技術です。
そもそも、オープン系とはパテント(特許)に対して言われる言葉で、「オープンに無料で誰が使っても良いですよ」とする技術のことです。
ですが、OS業界では言葉の意味が多少異なります。「このソフトウェアのソースコードは全部フリー(無料ではなく自由という意味)で公開し、誰でも自由に使って良いですよ」という意味で、オープンあるいは「オープンソース」という用語が使われます。
上に挙げた「MS地獄」のような問題から、オープンソース系のOSは着実にニーズがありますが、オープンソース系のOSにも問題があります。
まず、Windows向けに作られたアプリケーションが動かない、ということ。IEやMS-OfficeなどのMS製品だけではなく、Adobe PhotoshopIllustratorのような「商用製品」は多くがWindowsあるいはMac向けに開発・販売されています。オープンソースLinuxのようなOSでは、こうしたWindowsアプリケーションを使うことができません。GIMPInkscapeのような代替製品も開発されていますが、そうした代替製品は誰も使わないため、使い方が分からなかったり、情報が得られなかったりします。
もうひとつが、UNIX系のOSは使い方や管理の仕方が複雑で難しく、使いづらく、そしてトラブルに対処するのが難しい、ということ。LinuxUNIXの互換OSであるため、UNIXの管理の仕方を学ぶ必要がありますが、コマンドを使ったり、設定ファイルを書いたり、スクリプトの書き方を覚えたりしなければなりません。UbuntuのようなデスクトップLinuxは、まだまだ未熟で、使っていてトラブルが起きることも多く、そのトラブルをどのように解決したらいいか分からないことも多く、また非標準のOSであるため、使っている人が少なく、インターネット上にも情報が少ないため、「トラブルを解決するのが面倒だから使うのをやめる」といったことに成りがちです。
また、「Windowsと色んな部分が違う」ということも言えます。オープンソースで「簡単にソフトウェアが導入できるパッケージ管理システムがある」とは言いますが、このパッケージ管理システムはコマンドで操作することを前提としており、コマンドが分からなければ使えません。
ある程度のパワーユーザーでも、Linuxを日常的に使うことは容易ではありません。僕自身も、主に使うのはWindows 7ですが、その理由はさまざまな点で「既に慣れているから」であり、また、Linuxのやり方を知っているゆえに、「Linuxを使うことは難しいということが最初から分かっているから」です。
Linuxの多くの初心者は、頑張って使うために設定や管理の方法を学びますが、コマンドを使うところまで手が回らず、パッケージ管理システムの使い方ぐらいを分かって終わりになってしまいます。また、Linuxには「Windowsよりも優れている魅力的な点」がありません。GNOMEKDEは多くの場合Windowsと全く同じで、「劣化コピー」と言われても仕方ありません。

なぜWindowsが不安定だったのか

また、なぜWindowsが不安定だったのかは、そもそもMicrosoftが作ったMS-DOSが、シアトル・コンピュータ・プロダクツ (SCP) から手にいれた、CP/M互換OSの86-DOSを、IBM PC用に改良してPC-DOSMS-DOS)としたものだったからではないかと思います。
自分が最初からひとりで作ったわけではなく、DOSのそもそもの基本は他社が作ったもので、Microsoftはそれを改良してMS-DOSにしたのです。
これだけでも不安定になりそうな要素がありますが、このMS-DOSをMSは独自に拡張してウィンドウシステムであるWindowsを統合し、シングルタスクからマルチタスクになるように機能を改良しました。
Windowsファイルシステム関係ではきちんと動いていることが多いのは、DOSはディスク・オペレーティングシステムであり、最初からディスクを操作することを念頭に開発されたからだと思います。ネットワークの機能については、セキュリティホールはたくさんありますが、それでもきちんと動いています。それはBSDのソケットコードを採用したからではないでしょうか。
逆に、プロセスやメモリ管理ではよくフリーズし、アプリケーションがよく強制終了していました。これは、他社が作ったCP/M互換OSのコードを、MSが独自に改良しようとしたためではないでしょうか。
実際のところ、どうして不安定だったのかの答えを知ることはできません。また、Microsoftは新しいNTカーネルを書き直し、これは安定しています。最近ではむしろ、Linux上のGNOMEKDEの方がはるかに不安定だと僕は思っています。Linuxが安定しているのは、コマンドラインとサーバーの分野だけです。

Windowsが使われる理由

実際のところ、パソコンのOS業界では、Windowsが圧倒的な力を持っています。ほとんどのパソコンユーザーはWindowsを使います。
この理由として、歴史的な理由として挙げられるのは、
IBM-PC/AT互換機の、MS-DOSの後継OSであること。昔のシングルタスク・コマンド操作のIBMパソコンでは16bitのMS-DOSを採用しており、その後継OSであるWindowsが使われるに至った。
・ウィンドウ操作を実現したこと。AppleMacintoshのようなウィンドウ操作を実現したことで、「革新的なインターフェース」として高評価を得た。DOSのようなコマンドラインのインターフェースに確執するUNIX業界に対して、Windowsは新しいインターフェースの方式を提示し、人々の賛同を得た。
IEやMS-Officeなどの標準アプリケーションが動作すること。昔からWebブラウザレンダリングエンジンは、IEがブラウザ戦争でNetscapeに勝利してからは、IEのTridentが標準的だった。IEでしか正しく表示できないサイトは昔は多かった。その後にMozilla FirefoxGoogle Chromeなどが標準化によって少しばかり普及したが、WindowsIEは今でも大きく力を持っている。また、ワープロ表計算などのオフィススイートソフトウェアとしてWindowsに付属する形でMS-Officeが標準的になってからは、「MS-Officeがなければ仕事ができない」状況を作り出した。LibreOfficeなどは「無料の劣悪なパチモン」であり、誰でも正規版をきちんと買って使いたい。LibreOfficeの標準規格であるOpenDocumentは全く成功しておらず、MS-Office形式のデータファイルの膨大な過去の蓄積があり、操作方法や機能も違うため、「単純に互換性があるというだけでは誰も使おうとしない」という負のスパイラルに陥っている。また、Linux版のLibreOfficeは標準フォントなども少なく、GIMPInkscapeなどと同様「誰が見てもビジネス品質では使いものにならない」という評価にしかならない。
・不安定でバグが多かったが、何とか使えるレベルだったこと。Linuxのようにプロのシステム管理者にしか分からない設定や管理の方法が少なく、GUIで設定できた。そもそもDOSのシステムを継承しているため、「FATにはデフラグが必要」とか、そういうWindowsの考え方は受け入れられやすかった。逆にPC-UNIXは一部のオタクやハッカーの間でしか使われず、「パーミッションの設定が誰にも分からない」といったように、UNIXの文化は一般のパソコンユーザーには理解しがたいものだった。
・商売や政治的な理由。マイクロソフトビル・ゲイツの「抱き合わせ・囲い込み戦略」は大きく成功した。誰もがパソコンを買う時にWindowsが付属しており、Windows以外のOSはMacぐらいしか知名度がなかった。最初にMS-Officeで使い方を覚えてしまうと、ジャストシステム一太郎などは使い方が全然違う。また、政治的な理由では、最初にシェアを大きく獲得したことで、事実上の標準OSになり、ほとんどの職場あるいは学校などでも、Windowsの使い方を学び、Windowsの使い方でOSを使うことが支配的になった。GNOMEKDEがいくらWindowsと同じインターフェースを採用しても、それはパクリにしか見えない。
・技術的な理由。Windows APIMFCなどのWindows開発APIは、内部は公開されていないものの、C/C++のウィンドウ操作インターフェースとしては、高品質で使いやすいものだった。内部が公開されていないことは、プログラマにとっては「中身の仕組みが分からない」という問題もあるが、Windowsの地位を保つ上で、コンパイラAPIの内部ソースコード非公開は上手く働いた。プログラミングを行うということが昔のような「大型コンピュータ」から「パソコン上でのGUIプログラミング」になる段階で、Windows APIに慣れてしまったプログラマは、「Windows APIC/C++プログラミング」だと刷り込まれてしまう。APIの内部が公開されていないため、代わりの独自APIを作ることは難しく、ボーランドDelphiなどの一部の例を除けば、「プログラマはみんなWindows APIとVisual C++でしか作れない」という状況を生み出した。これはライバルのソフトウェア会社に勝つ上で圧倒的な力だった。
また、現在のWindowsとして言えるのは、
・使いやすい。みんな、Windowsの操作インターフェースに慣れてしまったせいで、MacUNIXのような異なるOSの使い方や管理の仕方が分からない。設定ファイルと言うだけで嫌われ、スクリプトと言うだけで難しいものだとされる。パソコンは「テキストファイルに記述するもの」ではなくなり、「コマンドを打ち込んでEnterを押すもの」でもなくなり、「マウスとキーボードを使ってボタンや画面をクリックするもの」であると完全にパラダイムが変わった。Linuxの操作はつまらないし、オープンであると言いながらパッケージ管理システムを使うなど、とても面倒くさくて使い勝手の悪い、「融通の利かない」といういつものコンピュータのまま、完全に置いていかれた。
・NTカーネルが安定している。最近のWindowsは、サーバーやエンタープライズ用途としても安定しており、これはNTカーネルを書き直したことが大きい。普段使うOSとしてもバグや不具合がどんどん減っており、たまに不安定なバージョンをリリースするが、多くの場合それと交互に安定したバージョンをリリースしている。ユーザーは安定した使えるバージョンが何かを熟知している。確かに個人サーバーで使うのであればLinuxカーネルの方が今でも安定しているが、今後どうなるかは分からない。サーバーでもWindowsの方が勝つ可能性は十分にある。
・ビジネス的な理由。最近はさまざまな会社間での契約から、Windowsで(たとえばCOMやActiveXなどを用いて)商業システムを構築する機会も増えている。特に日本などではMicrosoftのシェアが一向に減らず、独占的契約からWindowsを採用したシステムを作ることが増えている。これは、日本語環境や日本独自のさまざまな商業的な理由もあるが、「Linuxは比較的海外で成功している」という意味合いが強い。ドイツなどではスパコンメインフレームにはSUSEを使う。日本には、Linuxエンジニアも、Linuxの分かるシステム管理者もまだまだ少ない。そもそもLinuxを開発しているオタクは海外のオタクが多い。これは「日本人には英語ができない」など、多くの日本人の「IT業界で遅れている」ということの表れでもある。
・アプリケーションがWindowsのものしかない。LinuxではAdobe製品も動作せず、仕事の用途に使えるGUIのアプリケーションが少ない。上で日本人にはLinuxエンジニアが少ないと書いたが、日本ではエンジニアが必ずしもレベルが低いわけではなく、Windowsフリーソフトなどは海外よりも使いやすくて高機能なWindowsフリーソフトの開発者はたくさん居る。例はSleipnirなどのタブブラウザで、海外のMozilla Firefoxなどのライバルと比べても使いやすい。日本にはWebサービスやWebページも多く、テレビゲームやスマホゲームも多い。オープンソースなエンジニアが少ないだけで、日本のローカルな世界では日本人の技術力は高い。また、WebデザイナーやWebエンジニアの間ではLinuxは広く普及しているが、そうした人々の間にもオープンソース文化やフリーソフトウェア文化は全く根付いていない。
・新しい.NET Frameworkの言語仕様とクラスライブラリがスマートであること。LinuxUNIXPOSIXAPIを使うよりも、Windowsを使った方がモダンで、GUIの開発がしやすい。C#VBGUIプログラミングを書いていると、LinuxでXlibやGTKを使ってプログラムを書くのがばかばかしくなるほど今の.NETのWindows.Formsなどの技術は優れている。対抗できるのはQtやDelphiぐらいではないかと思う。
などの理由がある。
また、Linuxが使われない理由も多い。たとえば、
Linuxコマンドラインを習得しなければ管理できない。UNIXの管理は難しく、誰も自力で管理できない。むしろ、最近のLinuxはどんどん簡単かつ自動設定になっているが、逆にこれも嫌われている。システム管理者になる上で必要となる知識を学ばなくても使えてしまうため、「簡単すぎて無意味」であると言う。逆に知識のない人間が難しいUNIXを使う結果になり、さらに「自力で管理できないユーザの量産」に繋がっている。昔はネットワークの設定などは多くの手動設定が必要であり、Xのモニターの設定なども簡単にはいかなかったが、逆にそれが面白く、当時の「PC-UNIXブーム」を作っていたが、今ではそうしたほとんどのことをUbuntuなどが自動設定にして、逆に手動設定すらできないLinuxユーザーが増え、Linuxの人気の衰退に歯止めがかからない。
・ビジネスで使うために、MS製品やその他の製品が動作しない。GNOMEKDEの標準アプリケーションの品質は劣悪で、多くの有名Linuxアプリケーションはそれらとは独自に開発されており、「GUI環境の劣悪さ」は甚だしい。
・不具合や問題、あるいは管理上の必要となる前提知識がとても多く、自分で問題を解決できない。特に、ディストリビューション間で設定やファイルの構成が違い、管理の方法も違う。UNIXとは異なる管理の方法をしていたり、昔のやり方がどんどん変わっていたり、GNOMEKDEなどが進歩すればするほどWindowsに似通ったインターフェースを採用したりするなど、進歩の過程も疑問である。プロのシステム管理者も「最近のLinuxはおかしい」と批判し、FreeBSDOpenBSDが再び人気になるなど、「Linuxそのものの存在意義」すら疑問に感じる人々は多い。
オープンソースで、無保証の原則があり、サポートを受けられない。商用の長期サポートを受けたければお金を払う必要があるなど、Windowsとサポート体制が変わらない。またディストリビューションによって価格が違い、RHELWindowsと比べてもとても高価であり、またCentOSという無料のクローン版が広まっているなどおかしな点が多い。
オープンソースであることはいいことかもしれないが、ソースコードGPLでライセンスされており、商用システムに使うと自分で書いたコードまで公開しなければならない。
・普通にプリインストールされたパソコンが売っていない。(製造物責任法上の問題から、どのメーカーもLinuxパソコンを販売しようとしない。Linuxパソコンを販売すると「売り逃げ」として捉われてしまい、会社の信頼もなくなる。)
・そもそも存在が知られていない。テレビ広告も出さずどこの店にも売られていないため、「一部のネットのオタク」の間でしか知られていない。しかしながらLinuxは単なるWindowsオタクに理解できるほど簡単ではなく、Windowsのように面白いゲームや高機能なフリーソフトもなく、「オタクから見てもっとも嫌われるシステム」となっている。以前のような大学でUNIXワークステーションを使う向きはどんどん衰退しており、EmacsVimなどの一部の神アプリケーションはAtomやVS-Codeなどどんどん新しい代わりのものが開発されており、それに比べてLinuxは「TeXgnuplotしか使えない」というままで、全く時代の進歩についていけていない。
などがある。
また、Macについていえば、
WindowsはたくさんのIBM PC-AT互換機で動くが、MacApple社のMacでしか動かない。MacApple Storeでしか購入できず、結果的に店に並ぶほとんどのパソコンはWindows搭載の日本製あるいは米国製・アジア製のものになる。
・価格が高い。確かにレティーナディスプレイなどは解像度も高く綺麗だが、それに見合った値段を取る。デザイナーの現場でも、多くのMacを整備すると金がかかるため、ほとんどのパソコンはWindowsを使うしかない。Windowsは無料ではないが価格は安い。
・純正のハードウェアしか使えない。Macは自分でハードウェアを分解することすらできず、壊れたら直すのも難しい。ハードディスクを取り換えることすら考えられていない。
Windowsのアプリケーションが動かない。Microsoft Officeは一応Macでも動くが、MacでMS-Officeを使うという話はあまり聞かない。
・管理の仕方や使い方が分からない。インターフェースや設定の方法も違い、ドライバのインストールなどが必要な時にはサポートされていないこともある。また、使っていると常に「Windowsと違う」という特徴ばかりが目立ってしまい、そもそもの「この操作をする」という目的から外れることが多い。
・標準的でないことから、使いたい人間がそもそも居ない。そもそもMacを使いたいという人が居ない。
などの問題がある。Macはとても良いOSで、最近僕も職場ではメインで使っているが、どうしてもMacが使われる状況は生まれづらい。
何にしても、「結局Windowsがいいよね」ということになりやすい。一向にWindowsの標準的シェアの力は倒れる気配がない。Linuxファンの僕としては歯がゆい状況である。
LinuxMacが必ずしも欠点ばかりではないため、誤解しないでほしい。Linuxには、「コマンドラインで使える機能性」「X Window Systemのカスタマイズ性の高さ」「自動化と柔軟な設定・管理」「サーバーとしての安定性」そして「オープンソース」など多くの良い点がある。また、Macには「デザインが美しい」「UNIXをベースにしている」「GUIのオリジナル」など良い点がたくさんある。

ビル・ゲイツ

Microsoftの開発陣

Microsoft創設者のビル・ゲイツは、Internet Explorerの開発をリードしたことで有名である。
ゲイツはビジネスマンだが、アーキテクチャ的なものの見方をするところがあって、いつもありえないアーキテクチャを作って失敗している印象がある。とても高度なものを作る代わり、バグや失敗が多いのかもしれない。
C#の開発メンバーには、ボーランドDelphiの主要開発者が設計に携わっていることで有名である。
Xamarinの開発メンバーは、XimianGNOMEを開発していたLinuxデスクトップ企業で、GNOMEの創設者が設立)やMonoの開発メンバーが携わっている。
また、Gentoo Linux創設者のダニエル・ロビンズ氏はMicrosoftに引き抜かれたことで有名だが、その後はどうなっているのか僕は良く知らない。
彼らによってMSがオープンソースと新しい協力関係を築いてくれることに期待している。

ビル・ゲイツの作ったもの

ビル・ゲイツの作った主なソフトウェアは、BASICインタプリタMS-DOS、そしてWindowsです。
ビル・ゲイツは、ポール・アレンとともに、BASICインタプリタをアルテア8800に移植して事業を始め、次いでIBM PC上のOSの開発を請け負い、シアトル・コンピュータ・プロダクツ (SCP) から手にいれたCP/M互換OSの86-DOSIBM PC用に改良してPC-DOSMS-DOS)を開発した。
MS-DOSを開発しながら各機種用のBASIC・C言語FORTRANなどのコンパイラの開発を手掛け、その後にMacintoshを模倣してGUIのOSであるWindowsを開発した。
ビジネス向けのワープロソフトや表計算ソフトを開発し、Windowsに抱合せるなどして先行する他社との熾烈な競争(「買収するか潰すか、どっちか」と言われた)をした。
僕が思うに、マイクロソフトという会社は少し、神のように崇拝されすぎていて、実際のところすでにあるものを、上手く自分のものにしながら、他社と同じくらいの(あるいは他社よりも劣る)品質のものを模倣して作ってたくさん売りさばいたにすぎない。それなのに賢く見えるのが、ビル・ゲイツという天才のすごいところである。

ビル・ゲイツ新型コロナウイルス

新型コロナウイルスの感染拡大で、ビル・ゲイツの言動が注目されている。一部の州が都市封鎖をしていない点を批判し、「全米封鎖」を求める。五年前の2015年の講演では、「戦争やミサイルよりも病原菌に備えるべきだ」とパンデミックのリスクを予言している。トランプのWHOへの資金拠出の停止については「実に危険だ」と批判。ビル・ゲイツマイクロソフトでの技術者・経営者としての成功の後に慈善活動家として第二のキャリアを積んでおり、二月には新型コロナウイルス対策に一億ドルの寄付を表明した。まさにビル・ゲイツなら、アメリカを救えるかもしれない。

ビル・ゲイツの成功は、それ以上が無い

ビル・ゲイツの成功は、「それ以上が無い」ということが言えます。
ビル・ゲイツは、Windowsを作った世界でも有数の超一流の技術者であると同時に、マイクロソフト社の社長であり、長い間世界一の大富豪であることを保ち続けた(最近はアマゾンの社長に負けたりもしている)こと、その「最高のキャリア」と同時に、世界の歴史を変え、労働や仕事の環境や道具を変え、ITやOSの常識も変えた、大型コンピュータではない個人向けのパーソナルコンピュータ上の、GUIで操作するウィンドウシステムおよびOSである、Windowsというシステムを作ったこと、そして、儲けた金を慈善事業活動に使った、などの点から、「それ以上が無い」のです。
これ以上に賢い人間は、おそらく、1,000年経っても現れないでしょう。彼に比べれば、この地球上全ての人間が馬鹿で、愚かです。僕のような人間が馬鹿で愚かなのは、ビル・ゲイツを考えるに、「当たり前にビル・ゲイツと比べれば誰もが馬鹿」なのです。
また、マイクロソフトは最近、「全米で信頼することができる企業ランキング」で一位を獲得しました。誰もが、少なからずWindowsMicrosoftを信用しています。Microsoftだけは、倒産してはいけません。ビル・ゲイツはもうMSの経営には関わっていませんが、ビル・ゲイツが死んだ時が、この地球におけるもっとも滅びのリスクの高い瞬間となるでしょう。

コツ

Windowsで困った時は

Windowsで困った時、たとえばおかしなキーを押して画面がおかしくなったような時は、あわてずに、右クリックメニューからプロパティ(設定画面)を開いたり、コントロールパネルを開いたりして、それらしい設定がないかをチェックし、見つかったら、その設定を変えてみましょう。
Windowsは、たくさんの機能がありますが、その機能を不意に実行したり、設定を変えてしまったりするとおかしなことが起きます。このような時は、どこかの設定を直せば元に戻せることが多いです。
また、設定は見つかったものの技術用語が多くて分からない時や、設定も見つからなかった時などは、Googleなどで検索してみましょう。多くの場合、Googleの検索で元の状態に戻せます。
また、「困った時は再起動」といって、操作がおかしくなったりした時は再起動すれば直ることもあります。そもそもMicrosoftや他のソフトウェア会社によるバグのこともあり、OSやソフトウェアのバージョンが古いせいで直すことのできない問題もあります。

二回目以降のファイル読み込みが速い理由

Windowsで二回目以降のファイル読み込みが速い理由は、カーネルファイルシステムがメモリの中にファイルをロードし、そのメモリの中のオブジェクトを読み書きしているからです。
カーネルはメモリの中のキャッシュにファイルの変更点を書き込み、たまにディスクにupdateをかけて定期的に書きこむことで、高速なファイル読み書きを実現しています。
よって、間違えてふとした拍子に電源が落ちたりしてしまうと、ファイルの変更点が消えてしまうリスクがあります。
Linuxでは、ジャーナリングに対応したファイルシステムでは、間違えて電源が落ちてもファイルは消えません。Windowsではどうなっているのかは自分は分かりません(たぶんNTFSではそういうリスクは少ないと思います)。

リカバリ

パソコンが遅くなってきたら、リカバリー。
リカバリーする前に、USBハードディスクなどにデータをバックアップしてください。良くやる手は、WindowsのUserのフォルダをバックアップするか、あるいは良く使うファイルだけバックアップソフトでバックアップするかです。
リカバリーした後は、ネットワークの設定、プリンタードライバーのインストール、Windows Update、Officeライセンスの入力、アンチウイルス系のソフトウェアのインストールと更新、各種設定(特に拡張子は表示した方が良い)、データのバックアップのコピー、フリーソフトのインストール(間違えてウィルスをインストールしないようにダウンロードするサイトをチェックすること)、などをきちんとしましょう。
iTunesに音楽ファイルをコピーする、ブラウザでアカウントにログインしておく、なども必要です。
ブラウザのブックマークも忘れずに。Google ChromeGoogle Driveを使うと言う手もあります。

フォルダーオプション(邪魔なThumbs.dbを消す)

たまに画像のあるディレクトリにThumbs.dbというファイルが出来ることがあった。これは画像のサムネイル(縮小版)が保存されているファイルで、削除しても構わないし、設定で自動作成しないように出来る。
特に、FTPクライアントでホームページにファイルをミラーリング・同期させようとすると、Thumbs.dbまでアップロードしようとする。そのため、削除しなければならない。
自動作成をやめさせるためには、フォルダオプションで「縮小版をキャッシュしない」にチェックをする。また、削除する時は、フォルダオプションで「隠しファイル、隠しフォルダー、および隠しドライブを表示する」をチェックし、「保護されたオペレーティングシステムファイルを表示しない(推奨)」のチェックを外す。
また、拡張子を表示させたり、システムのファイルを表示させたりすることはほとんど必須の設定。

システムの復元

Windowsが起動しない!どうしたら良い?
まず、起動時にF8キーを連打して、セーフモードで起動。
なんとか起動できたら、コントロールパネルの回復から、システムの復元を行う。一番新しい復元ポイントに復元すれば、きっと次から起動できるはず。
だが、慌てる前に、出てきたエラーメッセージなどを検索エンジンにぶつけてみよう。
ただし、レジストリエディタを使うような「危ない解決策」はやめた方が良い。システムの復元を行うのが一番簡単で確実だ。

タスクマネージャーから強制終了

パソコンのアプリケーションが反応しなくなったり、ブラクラ(ブラウザ・クラッシャー)サイトのせいでブラウザが操作できなくなったりした時に使えるのが、Ctrl+Alt+Deleteを実行した時に起動することのできる、「タスクマネージャ」です。
アプリケーションの強制終了ができるほか、今実行されているタスクが何なのかを知ることが出来ます。

ネットワーク診断ツール

また、ネットワークが接続できない時は、タスクトレイのネットワーク接続状況のボタンを右クリックして、「問題のトラブルシューティング」を実行すると、「ネットワーク診断ツール」を実行できます。
多くの場合、こういう時はネットワーク診断ツールを使って、たとえば無線の通信機能をリセットしたりすることで、自動的に問題を解決してネットワークに再接続できることが多いです。

セーフモードとシステムの復元

上にも書きましたが、Windowsがどうしても起動しない時は、セーフモードで起動した上で、システムの復元を行いましょう。
たとえば、Windows Updateの途中で電源を切ってしまって、起動すらしなくなった時にこの方法が役に立ちます。

不要なウィンドウはAlt+F4で消す

また、不要なウィンドウを開いてしまった時は、タスクバーが表示されていないシンクライアントのような環境では消すことができません。公共の施設でパソコンを使って操作端末を構成している時に、何かの拍子でウィンドウが開くと、消すことができなくなります。この場合、キーボードが使える環境であれば、Alt+F4でウィンドウを閉じることができます。

パーティションの調整とディスクのクリーンアップ

Cドライブがいっぱいになってしまった時、もしDドライブなどに容量の空きがあれば、Windows Vista以降のOSであればパーティションの管理と調整を行うツールがあります。
これは、コントロールパネルから「システムとセキュリティ」を選択し、「ハードディスク パーティションの作成とフォーマット」を選択します。
まず、Dドライブのパーティションを削除する必要があります。その後に、Cドライブのパーティションを拡張します。操作を行う前に、Dドライブの中にある必要なファイルを全てどこかにバックアップコピーしてください。削除と拡張が終わったら、Cドライブの空き容量が増えたことを、Explorerのコンピュータを開いて右クリックメニューの「最新の情報に更新」をクリックして確認してください。その後に、Dドライブから退避したバックアップコピーのデータを、Cドライブのどこかに新規フォルダを作って、そこにコピーしてください。
詳しい手順は、「パーティション 結合」などの検索ワードで検索してください。
また、Cドライブがいっぱいになってしまった時の対応策として、ディスクのクリーンアップツールを使って、たとえばゴミ箱やブラウザの一時ファイルのような不要ファイルを消すことができます。Cドライブを右クリックしてプロパティを表示し、「ディスクのクリーンアップ」を実行してください。

レジストリはできるだけいじらない

Windowsが起動できなくなった場合などに、ネットで検索すると、Microsoftの公式サイトなどの文書でさえも、レジストリをいじって解決する解決方法が書かれていることがあります。
ですが、これは危険です。レジストリを間違っていじってしまうと、Windowsそのものがおかしくなってしまうことがあるからです。
起動できなくなった場合にも、レジストリはいじらずに、システムの復元で何とかなる部分はそれで行いましょう。
昔の自分も、フリーソフトをインストールしたり、ネットの情報を参考にしたりして、レジストリをおかしくした結果、Windows(当時はMeを使っていた)がおかしくなった経験があります。このような場合には、何をしても直りません。一度、OSを再インストールすることになるでしょう。

バッチファイルの作成

同じことを何度もしなくてはいけない時は、バッチファイルを作ると便利です。たとえば、たくさんのファイルに同じ処理を行いたい場合などに効果を発揮します。
バッチファイルを作るためには、DOSの知識が必要です。

巨大アプリケーションは、必要なファイルだけを入れる

Visual StudioEclipseのような巨大アプリケーションは、インストールする前に、そのコンポーネントが本当に必要か、良く確認して、必要なコンポーネントだけをインストールしましょう。
たとえば、少し前のVisual Studioをインストールした場合、Visual Web Developerをインストールすると、Microsoft SQL Serverのようなたくさんのコンポーネントがインストールされて、あとでアンインストールしようにもアンインストールできず、困ってしまいます。
アンインストールできない、と書いたのは、たとえば.NET Frameworkをアンインストールするのであっても、「最初からインストールされていたものなのか、それとも後で自分でインストールしたものなのか、分からない」からです。特に、.NET Frameworkでは、再配布されているインストール要素のようなものがたくさん後でインストールされます。
Visual Studioだけではなく、Eclipseも同じです。Pleiades All in Oneをインストールする場合も、Full Editionをインストールすると、XAMPPやTomcatなどが一緒にインストールされます。Web開発をしないのであれば、これらは不要です。できるだけこうした不要コンポーネントはインストールせずに、JDKなどが必要なら別途自分でインストールを行いましょう。
ある意味、Windowsにはパッケージ管理システムがないせいでこういうことが起こります。ですが、Linuxも同じです。KDEやMATEなどは、GNOME 3を使う場合は不要です。たくさんのアプリケーションがインストールされても、使わないだけで良いことは何もありません。
こうした巨大アプリケーションを入れてどうしようもなくなった場合は、上のシステムの復元を行うことで何とかなる場合があります。特に、アプリケーションをインストールしても起動すらせずに動かなかった場合にはこれが有効です。自分も、昔のVisual Studio 6.0をWindows 10に入れて、全く動かなかったため、それを消す時にシステムの復元をしたことがあります。

時間がかかることをする前に、自動スリープをなしにする

ハードディスクのファイルシステムエラーの修正や、時間のかかるコピーを行う場合など、時間の長くかかる処理を行う時は、自動スリープの設定をなしにしましょう。
自動でスリープする設定になっていると、一晩待って朝もう一度確認した時に、スリープ状態になっていて、結果何も処理をしておらず、処理が進んでいないことがあります。
最近のMicrosoftはきちんとしていないところがあって、Windows Updateの途中でパソコンがスリープしたりすることもあるため、注意が必要です。
Google Driveの同期なども、スリープに設定するとスリープ中は同期してくれません。日常的に時間のかかる処理をする場合は、常にスリープの設定を解除しておくことをおすすめします。

いろいろ

MSは堅実な会社だからオープンソース企業になれ

Microsoftは、金があることもあって、さまざまな堅実なソフトウェア製品を開発している。
Windows, Office, Visual Studio, .NET Framework, IIS, ASP.NET, SQL Serverなど、OS、ビジネスソフト、コンパイラ、サーバー、データベースなど、ソフトウェアの代表格はほとんど開発できている。どれも一流で巨大で高度な製品ばかりだ。
だから、僕はMSにはオープンソース企業になってもらっても良いと思う。MSがLinuxディストリビュータになっても、あるいはOfficeやVisual StudioWindowsごとオープンソースにしても、僕は成功するのではないかと思っている。
MSがLinux事業をやれば、Linuxは一転世界の標準OSとなって、爆発的な発展を生み出すだろう。いつまでもWindowsという「世界一の発明と成功」に囚われていてはいけない。
特に、Windowsは10以降は新しいバージョンを立たず、アップデートだけで製品を改良するらしい。その方が開発・維持コストがかからないし、OSはもう儲かる事業ではない。それなら、僕はWindowsオープンソースにするとか、むしろ、まったく新しいSmalltalk/Squeakのような、新しい概念のOSを作って、それをオープンソースにしてほしいと思う。MSならきっと、最も美しいGUI言語であるC#を作ったように、まともな使えるデスクトップに代わる環境を創り出せると思う。

Windowsは先生のような「やり方を決める」支配者

Windowsテキストエディタを作るためには、普通、Windowsコントロールの継承をするか、あるいはドキュメント・ビューなどの仕組みを使って行うが、これは「このようにやれば簡単ですよ。ですから、このようにやりなさい。」と先生に言われているかのような、新しい支配者だと僕は思う。
自分で作っているわけではなく、全部Windowsの決めたやり方で作らないといけない。Windowsの用意したやり方でやらなければならないのだ。
僕は、Linux/オープンソースにそんなに期待しているわけではない。だが、Windowsの問題点は、Windowsのやり方が公開されておらず、Microsoftだけがそれを作り、変え、決められる「独占的な権限」を持っていることではないかと思う。
だから、僕はWindowsに対して、「もっとオープンにAPIを決められるようにしてほしい」と思う。たとえば、Windows APIで作られたコントロール以外に、GTK+/Qt互換のコントロールがあっても良いだろう。そして、それをGPLで公開し、「Windows Open API」という名前を付けても良いだろう。
本当は、なぜそういうことを思うのかと言うと、Windows APIで作らなければならないせいで、世界が滅びたからだ。全て、Windowsに決められたやり方でしかプログラミングが出来なくなった。これは、僕は大いなる可能性の損失ではないかと思う。
まあ、本当はそうでもない。僕は薄っぺらいことを言っている。LinuxAPIはきちんと考えられていないし、コードなんか誰も書いていない。Microsoftが会社で作った方が、品質の良いものは出来るだろう。たとえば、MicrosoftはOSだけではなく、Office, Visual Studio, DirectX, IE, ASP.NET, SQL Serverなど、何でも作っている。それが全て統一され、Windowsのやり方に従うのは、むしろカッコいいし、分かりやすい。Linuxコンポーネントは、それぞれのプロジェクトが作ってそれぞれのディストリビューションが配布しているせいで、品質にはピンからキリまであるし、そもそもRed Hat以外が動くわけがない。そういうものだから、本当はMicrosoftLinuxの競争というのは、とても良いことをやっている。そして、そろそろLinuxもシェアを拡大するだろう。見ていれば明らかだ。WindowsLinuxは長い間共存していくだろう。

WindowsMS-DOSから脱却できていない

Windowsがきちんと動かないのは、MS-DOSがシングルタスク用のOSだったからだ。
それを無理やりマルチタスクにしたせいで、きちんと動かない。
ある意味、C#/.NETで書けば良いものになるだろう。Androidのように、仮想VMの上で動かせばきちんと動くようになる。
だが、MicrosoftWindowsUNIXとして書き直すべきだろう。
Windowsカーネルはあまりに機械のように動いている。もっと数学的に美しいものにならないのがおかしい。
僕が思うに、タスクをオブジェクトのように実行できないかと思う。こんな風にならないのか?

loop {
  nextTask = tasks.getTask();
  nextTask.run();
}

上のやつをC++で書いて、適当にアセンブラを吐き出すようにすれば、このOSも大したものだ。

7~10は確かに速くなったが、不安定でメモリを食う

最近のWindows、特に7~10は、確かに処理速度は速くなった。起動や処理も速い。だが、安定化はしていないし、メモリも食う。
これは、全部「大量にあるメモリを贅沢にいくらでも使うこと」で速くなっているからではないかと、僕は思う。
.NETにもみられるように、最近のWindows技術というのは、先進的なパソコンを贅沢な仕様で使う。たくさんのメモリキャッシュを行ない、アプリケーションは巨大で、その上で.NETで動かすことで、落ちたり壊れたりすることは少なくなった。
だが、Windowsは重くて不安定だ。Firefoxでさまざまなサイトをたくさん見ただけで、サクラエディタがきちんと反応しなくなる。超遅いエディタを使わざるを得なくなって、仕方なく再起動をかける。
WindowsはそんなOSである。2000~XPは軽かったのに、どんどん重たくなっている。
これは、Linuxにも言えることである。Linuxでは、カーネルのバグでハードウェアを繋いだ時に落ちることもあるし、アプリケーションが無反応になって落ちることはWindowsよりも多い。KDEなどは、最初から起動すらしない。
だから、僕は最初から、メモリにロードする内容を小さくしてほしい。そうすると、軽くなって動きが良くなると思う。
WindowsMS-DOSとFATファイルシステムから脱却できているように見えない。きちんと.NET化して、NTカーネルNTFSになって、安定化はしている。サーバー用途にも、IISASP.NETでなんとかなる範囲は多いだろう。だが、Windowsは今でも安定していない。安定しているように見えるのは、さまざまなアプリケーションを使わず、Webサイトも見ないライトユーザーだけであって、さまざまなアプリケーションを使うヘビーユーザーには使い物にならない。だが、それはWindowsだけではない。OS業界全員の課題である。「多くなったメモリを使って処理速度は速くなったとしても、全体の環境は重く不安定になるばかりで、何も良いことがない」。ソフトウェアだけではなく、Intelのようなハードウェア企業も、真剣に考えないといけないだろう。

Windows 95で既に完成だった

WindowsMicrosoftの可哀想な点は、「Windows 95で既に完成だった」ということです。
たしかに、.NET Frameworkのような機能も増え、また、インターネットなどの対応やOfficeのインターフェースなども変わりました。
それでも、Windowsは、最初のWindows 95で既に完成だったのです。
言ってしまえば、安定化を進めてNTカーネルを作り直した、Windows 2000の時点で、Windowsはもう、開発する必要が無かったのです。
これは、良い点に見えて、可哀想な点です。Microsoftは、新しい「GUIのウィンドウ」という概念を一般的にしました。そして、「MS-Office」や「Visual Studio」などの、「基本的なGUIアプリケーション」をそこに開発しました。その上で、Internet Explorerのような使える公共インフラサービス的な誰もが使うアプリケーションを開発し、Windowsに搭載しました。
Microsoftのすべき仕事は、そこまでだったのです。最初のWindowsの「ウィンドウがぐにゅぐにゅ動く」時点で、Windowsは神のような最高のOSでした。そこで、終わってしまったのです。
Microsoftはまだ頑張っています。.NET Coreをオープンソース化したことで、Windows FormsやWPFを除く、仮想マシンCLR.NET Frameworkのクラスライブラリの一部をオープンソースとして公開し、Linuxでも動くものとしました。これは、明らかに2つの意味があります。一つは、「.NETを標準的地位にすること」、もう一つは、「Windows開発者が関数やクラスの中身をオープンに調べ、研究し、開発可能にすること」です。これはとても良い目標ですが、おそらく実現しないでしょう。.NETは、Javaやオープン系の言語に比べて、支持されていません。姉の会社ではVB.NET Frameworkを良く使うようですが、オープン系の言語としてMicrosoftを使うことは、カーネルオープンソースでない時点で現実的ではなく、オープンで無料にしたからといって、標準的地位を確立することはないでしょう。
Microsoftの今後が気になりますが、僕はあまり期待していません。それは、本当に「Windows 95の時点で完成」だからです。Microsoftは、これ以上Windowsを開発する必要はないでしょう。

Windowsには標準で開発ツールがない

僕は、Windowsの馬鹿な点は、「標準で開発ツールがない」ことだと思います。
たしかに、ExcelVBAを使うとか、IEJavaScriptを実行するなどの方法はあります。ですが、Visual Studioのような「標準のネイティブアプリケーション開発手段」が、有料で、それもとても高価に提供されているのです。
Macであれば、Xcodeが無償で提供されていますし、Linuxならgccのようなコマンドが標準で存在します。
僕は、Windowsにも標準で(無償あるいは付属のような形で)開発ツールを提供してほしいと思います。Eclipseを入れれば良いとか、PythonWindowsでも動くとか、たしかにさまざまな意見はあるでしょうが、基本的に、Windowsだけではプログラミングの入門をすることが難しいのです。

WindowsはOS開発とサポートの分業を図るべき

僕は、MicrosoftWindowsのOS開発とサポートの分業を図るべきだと思います。
ここでは、MicrosoftだけがWindowsの開発を行い、新バージョンを開発します。同時に、MicrosoftWindowsソースコードをライセンスして他社に条件付きで提供します。その提供を受けた会社が、それぞれ、Windowsのサポートを有料ですればいいのです。
そうすることで、Windows XPを使い続けたい人は、いつまでもサポートを得た状態でXPを使えます。その代り、Windowsの代金だけではなく、サポートの代金をサポート会社に支払います。いわば、アンチウイルスソフトの会社と同じです。

なぜWindows 2000オープンソースにしないのか

僕は、Windows 2000オープンソースにすれば、Microsoftは最大のオープンソース企業になれると思います。
そもそも、Windows 2000Windows NTに基づくOSで、MSはNTカーネルを一から設計・実装しなおしました。Windows 2000はとても安定したGUI OSで、GUIではLinux以上に安定し、そしてWindows 95のインターフェースを継承して、とてもGUIで使いやすいOSでした。
MSには、Windows 2000オープンソースにしてほしいです。それだけでLinuxは、完全に敗北するでしょう。Windows 10にLinuxカーネルを仮想化で搭載するようなことをするくらいなら、Windows 2000オープンソースで公開すべきです。
Windows 2000オープンソースになることで、Windowsユーザーは未来永久Windows 2000を使い続けることができます。もちろん、Office 2000やVisual Studio 6.0もオープンソースにします。「永遠の標準OS」として、Windows 2000オープンソース版が君臨します。
「それではMicrosoftが儲からない」と批判するかもしれませんが、Microsoftはこれ以上儲ける必要はありません。Windows 2000やOffice 2000は既に完成しており、これ以上改変を加える必要がないからです。MicrosoftWindowsを開発しているのは、多くが無意味で、逆に「昔のWindowsをもっと長い間使いたい」という人がたくさんいます。ですから、Microsoftは「企業としての金儲けの視点」ではなく「IT技術全体の科学的な視点」からWindows 2000オープンソースで公開すべきです。そして、セキュリティパッチやバグの修正はコミュニティによって行います。

簡単な説明

GUIアプリケーション

  • 基本・インターネット