syghの新フラグメント置き場

プログラミングTipsやコード断片の保管場所です。お絵描きもときどき載せます。

Windowsの品質低下問題に思うこと

Windows 10のサポート終了が10月14日に迫っていますが、世界的に見てもWindows 11への移行は全然進んでいないですね。人気の高かったWindows 7のサポートが2020年1月に終了する直前、2019年12月の時点でWindows OSのバージョン別シェアに占める7の割合はそれでも25%程度に減っていましたが、今回Windows 10のシェアは2025年8月の時点でまだ45%以上もあり、9月の時点で40%です。Windows 7/8.xからWindows 10へのアップグレードのときのMSによるゴリ押しキャンペーンも大概で、いつの間にか勝手にアップグレードされてしまったユーザーもいたようですが、Windows 7/8.xからWindows 10への移行が比較的スムーズに進んだのは、無償アップグレードパスが存在したことのほか、Windows 10は7/8.xと比べてハードウェア要件はほとんど変わらなかったことが最も大きな要因だと思われます。今回もWindows 10からWindows 11への無償アップグレードパスはあるものの、移行が全然進んでいない理由として考えられるのは、Windows 11は古いハードウェアへの対応をバッサリ打ち切ったことのほか、いまだにOS自体の品質が低く安定しておらず、特に企業ユーザーにとって使いにくいことも関係しているのではないかと推測されます。

仕事の開発環境でもしばらく前から11を使っており、自宅の個人PCもとうとう11にアップグレードしましたが、10のほうが遥かに使いやすい。11はマジモンの低品質クソOSです。あらゆる場面でイライライライラさせられます。10も初期設定はグダグダで、様々なポイントをカスタマイズ・取捨選択してようやく使い物になりますが、それでも各種設定変更を駆使してOS標準でカスタマイズできる余地があったという点で11とは雲泥の差です。11はそういった選択肢が極端に狭い(あるいは選択肢そのものがない)ことが問題のひとつなんです。
そのような問題点の多さから、11はVistaの再来とか揶揄されることもありますが、ハッキリ言ってVistaに対して超絶失礼ですね。全然分かっていない。Windows Vistaもリリース当初(2006年~2007年)はバグが多かったものの、2008年にSP1が、そして2009年にSP2がリリースされ、その頃にはかなり安定していました。Vistaと11では問題の性質が大きく異なります。

Windows Vistaとは何だったのか

Windows XP(内部バージョンNT 5.1)の後継OSとして開発されたWindows Vista(内部バージョンNT 6.0)ではOSカーネルが大幅に再構築され、MinWinと呼ばれていました。のちにWindows 7(内部バージョンNT 6.1)でも発展形として軽量化されたバージョンのMinWinが搭載されました。Vistaも当時としてはハードウェアの要求スペックが高く、XP世代の低スペックPCでは満足に動作させることはできなかったものの、デスクトップPCの場合はメモリ増設やグラフィックスカードのアップグレードだけでどうにかなるものでした。Win32 APIの代替となる予定だったWinFX(のちの.NET Framework 3.0)が迷走したせいでリリースがかなり遅れてしまったのですが、結果的にWin32 APIは第一級市民のまま残りました。
OSカーネルの安定性やセキュリティレベルの向上はXPの比ではなく、Vistaで新しく搭載されたWDDM/DXGIやUACには明確なビジョンと方向性があり、いずれも現在まで続く重要基盤となっています。
UACの影響でシステムディレクトリへのアクセス権限がなくなったことで動作しなくなってしまったアプリケーションもありましたが、それはもともとアプリ側が無作法な設計になっていたからであり、ほとんどのアプリに対して有効な救済策としてVirtualStoreへの自動的なリダイレクトによってそのまま動作できるような仮想化の仕組みも用意されていました*1Unix系OSの厳格な権限管理と比べれば、今でもWindowsはぬるま湯です。
従来のグラフィックスAPIであるGDIはDirectXの基盤 (DXGI) 上に再構築されたことでハードウェアアクセラレーションが効かなくなり、パフォーマンスが低下してしまったという問題点もありましたが、のちに7で改良され、GDIのハードウェアアクセラレーションも部分的に復活しました。デスクトップウィンドウマネージャーに統合された視覚効果であるWindows Aeroも無駄に派手な部分はあったものの、DirectX (Direct3D 9Ex) 経由でGPUを駆使した美麗で滑らかなデスクトップレンダリングや、爽やかで近未来的なシステムサウンドは新しい時代の幕開けを感じさせてくれるものでした。
同時期に展開されていたコンシューマーゲーム機のXbox 360よりもグレードの高い3Dグラフィックス機能を持つ新世代のAPIとしてDirectX 10 (Direct3D 10) を搭載したことも評価できるポイントです。DirectX 10のAPI設計の基本はDirectX 10.1/DirectX 11にも受け継がれることになり、GeForce 8のようなDirectX 10対応のGPUで採用された統合型シェーダーアーキテクチャの設計はGPGPUの発展にも寄与しました。最終的にPlatform UpdateによってWindows VistaにもDirectX 11などの強力なAPI群がバックポートされたことにより、Windows 7との互換性も高くなりました。

これだけ盛りだくさんの機能を搭載していればバグが頻発してもおかしくないですが、末期は十分に安定させていました。これまでWindowsポンコツ駄作バージョンと傑作バージョンが交互にリリースされていると言われていますが、Vistaがなければ7もなかったわけで、実際には隠れた傑作OSであり、個人的にはその名(眺望、展望)に恥じない意欲的な先進性を高く評価しています。Vistaで大きな問題となっていたのは、OSそのものではなく、UACなどによる内部的な仕様変更に従来のアプリケーションが追従できていなかったことのほうですね。UACの制約は7以降にも引き継がれているので、特に産業系の現場ではXPの延長サポート終了後もオフライン環境限定とはいえXPが使われ続けていました。

再びWindows 11

一方、Windows 11は今どうなっていますかね。Windows 10/11には、従来のサービスパック相当の定期的大型アップデートとして「機能更新プログラム」が提供されていますが、2024年10月にリリースされたWindows 11 24H2はWindows 10/11の中でも史上最悪と言える不安定さを誇るクソアップデートだそうです。いつまで経っても致命的なバグのオンパレードで、パッチがリリースされるたびにモグラ叩きのように新たなバグが毎月のように出てくる有様です。ついにはPCを起動させなくするためにBIOSを破壊するウイルスのような動作*2まで始める始末。個人情報を窃取するだけに飽き足らず、ご丁寧にユーザーファイルの勝手なロックあるいは削除までしてくれる公式ランサムウェア・OneDriveを搭載した今のWindowsは理想も何もなく、ただただ悪意に満ちています。マジで邪悪以外の何物でもない。Proエディションのユーザーは回避策がありますが、Homeエディションのユーザーは全員人柱になるという選択肢しかありません*3

note.com

邪悪な機能といえば、公式スパイウェア・Recallも猛反発をくらってオプトイン(デフォルトで無効)になりましたが、この先オプトアウト(デフォルトで有効)にしてきやがる可能性は非常に高いとみています。あるいは、ユーザーに知らせないだけで勝手に裏で盗撮してMSのサーバーに送信し始める可能性もありますね。気持ち悪すぎ。Windowsプロプライエタリだからやろうと思えば何でもできる。今のMSはそのぐらいやりかねないし、もう全然信用できなくなっています。もはやバックドアが仕込まれている中国企業製品となんら変わりありません。

news.mynavi.jp
cloud.watch.impress.co.jp
gigazine.net
adguard.com

ちなみにWindows 10も22H2までは年2回程度の機能更新プログラムで頻繁に増改築を繰り返していて、その適用のたびに余計なシステム変更や設定リセットが入ってイライラさせられていました。Windows 10 October 2018 Update (1809) では一部環境においてユーザーファイルを勝手に削除する致命的なバグもやらかしています。とはいえ、現在のように毎月のセキュリティ更新プログラムごときで文鎮化を招くほどの致命的なバグをボロボロ出すようなことはなかったと思います。鬱陶しい挙動でムカつくクソOSに成り下がったWindows 10ですが、それでも22H2以降はようやく落ち着いたし、クリエイティブアプリやゲームのために今日まで使い続けてきました。
なお、Windows 10以降はWindows Updateの仕組みが大きく変わり、勝手にWindows Updateを実行して更新プログラムをインストールするだけでなく、ユーザーの意思を無視してOSの再起動までする邪悪な挙動が仕込まれ、作業データ損失などの大迷惑を被ったユーザーも多かったと思います。あの手この手で未完成クソ品質の自己満足オナニー機能更新プログラム*4を半強制的にインストールさせようとするMSのやり口の汚さに虫唾が走る毎日でした。Windows Updateのタイミングをある程度制御可能なProエディションであっても回避できない部分もあります。特に厄介なものとして、UpdateOrchestratorというタスクグループがあり、自分はPCが夜中に休止状態から勝手に復帰する現象にイライラさせられていました(実際には過去の話ではなく、UpdateOrchestratorはWindows Updateのたびに仕様が変わるため、定期的に対策の更新が必要となり、現在でも未だにイライラさせられています)。UpdateOrchestratorを設計したMSのエンジニアどもは地獄に落ちて欲しいですね。
唯一Windows 11で良くなった点と言えば、Windows 8.1までのようにインストールする更新プログラムやコンポーネントを個別に選べるようになったことでしょうか。というかこれはWindows 10がおかしかっただけであって、ようやく元に戻ったというだけの話です。

sygh.hatenadiary.jp

そして他のOSと比べると、WindowsのUIデザインの一貫性のなさが際立ちます。
macOSは癖が強いけれど、Windowsと違ってUIデザインに一貫性やポリシーがあり、メジャーバージョンアップ後でも古いバージョンを使っていたユーザーはアナロジー(類推)がだいたい通用するため、戸惑う場面は比較的少ないです。自分は信者ではないので、Appleの方法論やブランディングを無条件で賞賛するつもりはないし、macOSiOSは使う人を選ぶ道具であることは確かですが、OSとハードウェアとの垂直統合はMSのSurfaceGoogleのPixelとはまるで比較にならないレベルで完成されており、地味ながらも画面要素の隅々までプロフェッショナルのこだわりや矜持を感じさせるつくりになっています。
一方、Microsoftは誰もが慣れ親しんでいたWindowsアイデンティティとも言える伝統的なスタートボタン・スタートメニューを、Windows 8で廃止して総スカンをくらいました。というのも、代替のスタートスクリーンがあまりに未完成・中途半端・機能不全で分かりにくく、デスクトップにモバイルの作法を無理やり持ち込んだ挙句、結局使い勝手を完全に低下させただけだったからです。モダンUI(タイルUI)のシンプルなスタイル自体はそれほど悪いものではなく、またWindows 8はシステムの基盤となるWin32 APIには強力な機能追加がなされていて、COM/.NETで得られた知見を昇華させて綺麗なオブジェクト指向ベースで設計され、名前空間で分割整理されたモダンなWinRT APIも搭載していたのですが、それは開発者のみが知っていることで、OSのUIデザインとしては完全に誰もが認める失敗作です。8.1で申し訳程度にスタートボタンだけ復活させてお茶をにごし、結局10でスタートメニューも復活させたのですが、11でまたしても改悪しました。タスクバーやエクスプローラーも細かいバグや機能不全・改悪が多く、Windows 10までのほうが遥かに使いやすいです。特に11のタスクバーはクソofクソ。歴代最低と言っても過言ではない。冗談抜きで9x系のほうがマシなレベル。

以上の点からも、Vistaと11を同一視する連中は、実際にはVistaを使ったことがないただのエアプ勢だということがよく分かりますね。

MSは最近AI(笑)にうつつを抜かしていて、すでにプロダクトコードの一部をAI(笑)で自動生成しているらしいけど、最近Windowsの品質低下が著しいのは多分AI(笑)への依存の加速が原因のひとつだと思いますね。設計・実装工程よりもテスト工程の自動化にこそ活用してバグ検出率を上げろよな。AIコーディング(笑)はその場しのぎのクソコードを大量生産して誤魔化すのには向いているかもしれませんが、自動生成されたコードをノーチェックで使っている脳死の連中がいる限り、品質の向上には役立たないどころか害悪でしかありません。そもそも現在のWindows 11は、古いハードウェアへの対応やWindows 10まで存在していた有用な機能を相当切り捨てたくせに、無駄にUIを変えたりエンドユーザーの個人情報をビッグデータとしてかすめ取るための余計な機能ばかり増やし続けたりしているせいでコードベースが異常に膨れ上がってしまっています。基礎を固めるためにはテストが不可欠ですが、基本的なWin32/WinRT APIIMEのような重コンポーネントすら挙動をデグレードさせているケースが多く、肝心のAPIや基本機能のリグレッションテストすらロクに実施していないことがうかがえます。実際にWin10でまともに動作していたAPIがWin11でぶっ壊れているということはよくあり、仕事でもMSに不具合報告しています。こんな有様でエンジニアのリストラを進めるのは逆効果であり、自ら首を絞めているようにしか見えません。
gigazine.net

Windowsカーネル実装に使われているのは主にC/C++/Rustですが、現在の生成AIはC/C++のコーディングには不向きだそうです。C/C++はもともと統合開発環境IDE)と相性が悪く、特にGUIアプリケーションプログラミングをC/C++でやろうとするのは最悪の選択肢です。JavaC#を使う場合と比べて、RADなどの支援がほとんど期待できません。
gigazine.net

マシンの側に近いC/C++のような下位レベル言語のコード生成がAI(笑)にとっては不得手で、人間の側に近いPythonのような上位レベル言語のコード生成のほうが得手というのは皮肉なものですね。中間に位置するJavaC#はどうなんでしょうか。
もっとも、JavaC#のようなバランスの良い静的型付け言語のハーネスに慣れている自分としては、動的型付け言語の中でも最悪レベルでハーネスが欠如しているPythonのいい加減さが大嫌いです。Pythonは学生やスタートアップ企業が陳腐化上等でその場しのぎの使い捨てコードを書くのには適しているかもしれませんが、所詮は大規模開発を想定していない子供だましのオモチャみたいな言語です。Pythonで書かれたコードは、吐き気がするレベルで可読性やメンテナンス性が最悪になります。Pythonで書かれたコードそのものが翌日には陳腐化するゴミであり、そのためPythonで書かれたコードは少ないに越したことはありませんが、さらに生成AIでゴミを自動的に大量生産しようとするなんて狂気ですね。

WindowsはOS本来の役割に立ち返るべき

Windowsの最も良いところというのは、他のプラットフォームに比べてアプリケーションの後方互換性が異常なまでに高いということです。Windows 95で導入されたWin32 APIが、増改築を重ねながらもほぼそのままの形で維持されており、これを使って開発されたアプリケーションがずっと動作できるように互換性が保たれています。一部の古いDirectX APIは64bit版の実装が提供されず、WoW64によって32bit版のみが提供されているというものもありますが、Windows 9x(95/98/Me)の時代に作られたゲームですら普通に動作するものも多く、Windowsの互換性がいかに高いものであるかを実感できます。
ちなみに32bitシステムにまつわる時限爆弾として2038年問題があり、Appleはすでに32bitを完全に切り捨ててしまいましたが、32bit版のWindowsアプリケーションはギリギリまで使える可能性が高いです*5
自分が嫌々ながらもWindowsを使い続けている理由はまさにこのアプリケーション互換性の高さにあります。しかしMSがリグレッションテストをまともにやらなくなり、APIがどんどん壊れていけば、その大前提も崩れてしまうというわけです。
OSというのは本来アプリケーションを動かすための実行環境であって、裏方に徹するべきです。Windowsがユーザーの個人情報を窃取するためのマルウェアスパイウェアランサムウェアに成り下がっている現状に危機感をおぼえています。

*1:互換性をバッサリ切り捨てるAppleだと、こうはいかなかったと思います。

*2:M/B上のデータを破壊して復旧を困難にしてしまったという点で、ストレージ上のデータを破壊するタイプのウイルスよりタチが悪いかもしれません。

*3:一般ユーザーであっても、更新プログラムを受け取るタイミングを延期・制御できず、強制的にインストールさせられるHomeエディションを使うのはやめたほうがいいです。実験台にされるだけです。多少高くてもProエディションを使いましょう。グループポリシーで更新プログラムをかなり延期することができ、ドライバーやファームウェアの更新も阻止できるので、人柱にならずに済みます。

*4:特に2017年のCreators Update(笑)についてきた標準アプリはことごとく中途半端で壮大なゴミでした。もう誰も覚えていないと思うが、アレを実際にクリエイティブな作業に使っていた奇特な人はいないでしょ。

*5:Win32 APIの時刻ライブラリは2038年問題を回避できるように設計されているので、アプリケーションがMSVC 7.xまでの古いCRTの時刻ライブラリを使っていなければ、WoW64がある限り2038年以降も使える可能性があります。